- Connect to LMEX REST and WebSocket APIs
- Authenticate, sign requests, handle rate limits
- Stream live order book, trades, OHLCV data
- Place, modify and cancel spot & futures orders
- Manage positions, margin, leverage on futures
- Build production-grade algo bots in Python
- Implement 30+ quantitative strategies with code
- Backtest strategies on historical LMEX data
- Deploy AI/LLM agents for autonomous trading
- Apply professional risk management frameworks
| Market | Version | API Base URL | Min Notional | Maker Fee | Taker Fee |
|---|---|---|---|---|---|
| Spot | v3.3 | api.lmex.io/spot/api/v3.3 | >5 USDT | Maker | Taker |
| Futures (Perp) | v2.3 | api.lmex.io/futures/api/v2.3 | >5 USDT | Maker | Taker |
| WebSocket | — | wss://ws.lmex.io/futures & /spot | — | — | — |
BTC-USDT, ETH-USDT) and perpetual futures (BTC-PERP, ETH-PERP) — including leverage, funding rates, TP/SL, and position management.OIL-PERP and BRENT-PERP. Includes full spread arbitrage strategies with working Python code.Trading involves substantial risk of loss. All trading — including spot, futures, perpetuals, commodities, and equity derivatives — involves the risk of losing some or all of your invested capital. Leveraged products such as perpetual futures can amplify both gains and losses, and losses may exceed your initial deposit. Past performance of any strategy, signal, or model is not indicative of future results and may differ materially under live market conditions.
Due care and professional judgement are required. These strategies must not be deployed with real capital without thorough testing in a paper trading environment first, independent verification of all code and logic, a clear understanding of the risks involved, and appropriate position sizing relative to your personal risk tolerance and financial situation.
No liability. LMEX.AI, its contributors, and the LMEX exchange accept no responsibility or liability for any trading losses, damages, or adverse outcomes resulting from the use of, or reliance on, any content, code, or strategy published in this academy. Markets are dynamic and strategies may lose effectiveness without warning due to changing market conditions, reduced liquidity, or structural regime changes.
- Python 3.9+Install from python.org. Verify with
python --version - Create a virtual environmentbashpython -m venv lmex-env source lmex-env/bin/activate # Mac/Linux lmex-env\Scripts\activate # Windows
- Install core packagesbashpip install requests websockets pandas numpy python-dotenv
- Create project structuretextlmex-bot/ ├── .env # API keys (never commit) ├── lmex_client.py # REST client wrapper ├── lmex_ws.py # WebSocket client ├── strategies/ # Strategy modules │ ├── base.py │ ├── ema_cross.py │ └── grid.py ├── risk.py # Risk management ├── backtest.py # Backtester └── bot.py # Main entry point
- Store API keys securely.envLMEX_API_KEY=your_api_key_here LMEX_SECRET_KEY=your_secret_key_here LMEX_PAPER=true # set false for live trading
request-api, request-nonce, and request-sign. Public endpoints need no auth.- Log in to LMEX.IONavigate to Account → API tab
- Click "New API"Set a label and permissions: Read for data, Trading for order execution. Leave Withdraw OFF.
- Save your passphrase immediatelyThe passphrase is shown once only — copy it now. This is your secret key for signing.
- Whitelist your IPRestrict keys to known server IPs. Never skip this step for production bots.
- Store in .envNever hardcode keys in your source. Use environment variables.
HMAC-SHA384(secretKey, path + nonce + body). Note: query parameters are excluded from the signed text. Body is empty string for GET requests.| Category | Per API Key | Per User |
|---|---|---|
| Query endpoints | 15 req/s | 30 req/s |
| Order endpoints | 75 req/s | 75 req/s |
https://api.lmex.io/spot · Version: v3.3 · Symbol format: BTC-USDT| Field | Type | Required | Description |
|---|---|---|---|
| symbol | string | Yes | Market symbol e.g. BTC-USDT |
| side | string | Yes | BUY or SELL |
| type | string | Yes | LIMIT, MARKET, OCO |
| size | number | Yes | Order size in base asset |
| price | number | LIMIT only | Limit price |
| time_in_force | string | No | GTC, IOC, FOK, HALFMIN, FIVEMIN, HOUR, TWELVEHOUR, DAY, WEEK, MONTH |
| postOnly | bool | No | Maker-only — rejected if would match |
| txType | string | No | LIMIT (default), STOP, TRIGGER |
| stopPrice | number | STOP only | Trigger price for stop orders |
| clOrderId | string | No | Your custom order ID (for tracking) |
size/filledSize/remainingSize fields. Use originalOrderBaseSize, currentOrderBaseSize, totalFilledBaseSize in order query responses.https://api.lmex.io/futures · Version: v2.3 · Symbol format: BTC-PERP, OIL-PERP, BRENT-PERP| Field | Type | Required | Notes |
|---|---|---|---|
| symbol | string | Yes | e.g. BTC-PERP, OIL-PERP, BRENT-PERP |
| side | string | Yes | BUY or SELL |
| type | string | Yes | LIMIT, MARKET, OCO |
| size | integer | Yes | Contract size. Notional must exceed 5 USDT |
| price | number | LIMIT only | Order price |
| time_in_force | string | No | GTC, IOC, FOK, HALFMIN, FIVEMIN, HOUR, TWELVEHOUR, DAY, WEEK, MONTH |
| txType | string | No | LIMIT (default), STOP, TRIGGER |
| stopPrice | number | STOP/OCO | Trigger price for stop orders |
| triggerPrice | number | TRIGGER/OCO | Trigger price for trigger orders |
| postOnly | bool | No | Maker-only — rejected if would match immediately |
| reduceOnly | bool | No | Only reduces existing position |
| takeProfitPrice | number | No | Inline TP trigger price (markPrice by default) |
| stopLossPrice | number | No | Inline SL trigger price (markPrice by default) |
| positionMode | string | No | ONE_WAY (default), HEDGE, ISOLATED |
| clOrderId | string | No | Custom order ID for tracking |
size/fillSize/originalSize. Use originalOrderSize, currentOrderSize, filledSize, totalFilledSize in query responses.| Topic Pattern | Description | Auth | Notes |
|---|---|---|---|
| orderBookApi:BTC-PERP_0 | Orderbook grouped — format: symbol_grouping (0–9) | ❌ | Snapshot on subscribe |
| orderBookL2Api:BTC-PERP_0 | L2 orderbook — format: symbol_depth (0 = full book) | ❌ | First msg is snapshot, then deltas |
| update:BTC-PERP | Incremental orderbook updates | ❌ | First msg = snapshot, subsequent = delta. Re-subscribe if seqNum gap detected. |
| tradeHistoryApi:BTC-PERP | Public trade fills for a market | ❌ | Pushes on every trade |
| notificationApiV2 | Your order status updates | ✅ | Use v2 — v1 deprecated |
| fills | Your trade execution fills | ✅ | Fires when your order matches |
| allPosition | All positions pushed periodically | ✅ | For portfolio monitoring |
update:BTC-PERP (incremental orderbook): check seqNum is always prevSeqNum + 1. If a gap is detected, or if a crossed orderbook occurs, unsubscribe and re-subscribe immediately to get a fresh snapshot.0 in an orderbook delta means that price level should be removed from your local orderbook copy. The size field in deltas is always the absolute new quantity, not a change.Trend-following strategies exploit the statistical tendency for assets to continue moving in one direction. EMA crossovers detect momentum shifts — when the fast line crosses the slow, market consensus has shifted. Supertrend uses ATR to set adaptive trailing stops that widen during high volatility and tighten during calm periods. Donchian breakouts capture the "new high = continuation" pattern popularised by Turtle Traders. MACD histogram measures acceleration of a trend, not just direction — ideal for timing entries within an established move.
ADX > 25. Higher-than-average volume confirming the move. Best on 1H–4H–Daily timeframes. Avoid first 30 minutes of session open. BTC and ETH during trending periods are ideal.
Risk 1–2% per trade. Formula: Qty = (Account × 0.01) ÷ (Entry − Stop). For EMA cross, stop below the most recent swing low (longs). For Supertrend, the band IS the stop — size accordingly. Scale into winners: add a second unit when the trade moves 1R in your favour. Max 3 units. Reduce size 50% if the last 5 trades had fewer than 40% winners.
Whipsaw is the primary risk in flat choppy markets. Apply ADX > 25 filter before taking signals. Trend strategies inherently have 40–55% win rates compensated by large R:R (1:2+) — never risk more than 2%. Gap risk on daily bars can blow through stops. Three consecutive losses may signal a regime change — pause and reassess.
Mean reversion exploits the statistical tendency for price to return to a historical average after extreme deviations. Bollinger Bands define the normal range as ±2 standard deviations — roughly 95% of price action stays within. RSI divergence catches hidden momentum shifts: price makes a new low but RSI makes a higher low, revealing exhausted selling pressure. Z-score analysis quantifies exactly how statistically extreme a price level is, allowing consistent entry thresholds across any asset.
Sideways/ranging markets. ADX < 20. Price oscillating between clear S/R. Avoid immediately after major news events. Best on 15m–1H for crypto. BB squeeze filter significantly improves signal quality.
Risk 0.5–1% per trade — smaller than trend strategies because reversions can fail and become trends. Size = (Account × 0.005) ÷ (Entry − Stop). BB stop: above upper band on short, below lower band on long. Consider scaling in: take 50% at first signal, add 50% if price extends further (improving average). Hard stop at Z = ±3.5.
In trending markets price walks the bands — touching the lower BB repeatedly without reversing. Only take reversion trades when ADX < 20 and price is range-bound. RSI can stay oversold for extended periods during strong trends. Never average down beyond 2 adds. Three consecutive losers beyond plan — assume trend regime and pause.
Momentum strategies are built on the empirical observation that assets moving strongly in one direction tend to continue. Rate of Change (ROC) quantifies this as a pure percentage — no smoothing, no lag — making it honest about how much ground an asset has covered. Cross-asset momentum ranks all pairs by recent return and longs the top performers. StochRSI applies the stochastic oscillator to RSI itself, making it more sensitive — ideal as a precise entry trigger within an established trend rather than as a standalone system.
Strong directional trend with follow-through volume. ROC consistently above zero. Works best during momentum phases of market cycle. Avoid late-cycle blow-off tops. Best timeframes: 4H/Daily for ROC; 5m–1H for StochRSI triggers.
Single-asset momentum: risk 1–1.5% per trade, stop at the swing low predating the momentum move. Cross-asset portfolio: equal-weight allocations, never exceed 5% per position. Rebalance weekly. If ROC > 2× the asset's average ROC, reduce size by 25% — momentum is already extended. StochRSI stops: just below the crossover candle's low for longs.
Momentum crashes are violent and sudden — when crowded momentum trades reverse, they reverse hard. Always maintain a hard stop. Momentum strategies underperform dramatically in ranging markets — use ADX or trend filter to disable signals when ADX < 20. Factor crowding: when many algos buy the same top-ranked assets, correlations spike and diversification disappears.
Grid trading profits purely from price oscillation — no directional prediction required. The bot places buys below current price and sells above at fixed intervals. When a buy fills, it places a sell one level higher; when that fills, another buy one level lower. Each round trip earns one grid interval as profit. The strategy profits from any movement — up or down — as long as price stays within the defined range. Geometric grids space levels equally in percentage terms (better for volatile assets); arithmetic grids in dollar terms.
Ranging, oscillating market. Clear S/R boundaries. ADX < 20. Stable or gently trending pairs. Avoid during scheduled major events (FOMC, CPI) where breakouts are likely.
Total USDT ÷ Number of grids = USDT per level. Minimum per level must exceed $5 (LMEX minimum). Recommended: at least 20 grid levels, budget ≥ $200. Capital reserve rule: hold enough to fill ALL buy orders simultaneously if price drops to range bottom. Formula: Reserve = num_grids × qty_per_level × bottom_price. Start with ≤ 5% of total capital.
Catastrophic risk: price breaks out of range — you end up holding a full directional position at the worst level. Always set a hard stop at the bottom of the grid range. Define range using 3–6 months of historical price data. Avoid deploying grids when BB squeeze signals a breakout is imminent. Review and reset the range at least monthly.
Market making profits from the bid-ask spread on every completed round trip. The bot quotes a bid below mid-price and an ask above — when both fill, the difference minus fees is profit. Inventory skew is critical: as the bot accumulates a directional position it adjusts quotes, widening the spread on the heavy side to discourage further accumulation. On LMEX, the maker fee rebate means every filled limit order generates positive economics — earning from the exchange itself while capturing the spread.
Liquid markets with tight natural spreads (BTC-USDT, ETH-USDT spot). Normal volatility — not during news events. Active trading hours (London/NY overlap, 13:00–17:00 UTC). Avoid illiquid long-tail pairs where adverse selection is highest.
Quote size = 0.1–0.5% of capital per side. Start extremely small — infrastructure issues cause double-fills or missed cancellations. Max inventory: 1% of total capital. Hard inventory limit: if position reaches max, cancel all quotes on the heavy side immediately. Spread minimum must exceed 2 × taker fee (0.2% on LMEX). Recommended spread: 10–20 bps.
Adverse selection — informed traders consistently trade against quotes, leaving losing inventory. If fills are consistently profitable for the counterparty, you're being adversely selected. Inventory risk: directional moves generate mark-to-market losses. Latency risk: slow cancel-replace means stale quotes fill at unfavourable prices after news. Quote refresh rate < 500ms recommended. Emergency shutdown: cancel all orders first, inventory second.
Dollar-cost averaging removes the hardest problem in trading: timing. Purchasing a fixed dollar amount at regular intervals automatically buys more units when price is low and fewer when high — lowering average cost over time without prediction. The intelligent DCA layer adds RSI conditioning: when an asset is statistically oversold (RSI < 30), the bot increases purchase size by 2–3×, concentrating capital at the best entry points. Particularly powerful during bear markets when emotional traders are selling.
Bear markets and sideways accumulation phases. Long-term (months to years) horizon. High-conviction assets with fundamental value. Never use for speculative altcoins. Works best when capital is genuinely not needed for 12+ months.
Base purchase = fixed % of monthly discretionary budget. Never exceed 10% of total portfolio in a single DCA campaign. RSI multipliers: 3× at RSI < 25, 2× at RSI < 35, 1× at RSI 35–65, 0.5× at RSI > 65, 0× at RSI > 75. Maximum total exposure cap: never hold more than 20% of portfolio in any single asset regardless of RSI. Track cost basis carefully.
DCA does not protect against a fundamentally broken asset. Apply only to high-conviction, liquid assets (BTC, ETH on LMEX). The strategy can create significant unrealised losses before recovering — ensure months-to-years runway to withstand drawdowns. Never use leverage in a DCA strategy. Maximum total loss threshold: if the position is down 60% from inception, pause and reassess the thesis.
Statistical arbitrage exploits the mean-reverting relationship between two historically correlated assets. When their spread deviates beyond a statistically significant threshold (Z-score), the trader goes long the underperformer and short the outperformer — betting the spread compresses back to its historical mean. The foundation is cointegration, stronger than correlation: two cointegrated series may diverge temporarily but are mathematically bound to reconverge. ADF test confirms this. Natural LMEX pairs: BTC-PERP/ETH-PERP, ETH-PERP/SOL-PERP, OIL-PERP/BRENT-PERP.
Pairs with genuine economic linkage. ADF p-value < 0.05. Sufficient liquidity on both legs. No upcoming catalysts that could permanently change the relationship. Re-test cointegration weekly.
Position legs in equal dollar value, not equal quantity. Use the hedge ratio (β from OLS regression) to adjust relative sizes. Never risk more than 2% per spread trade. Entry at Z = ±2.0, exit target at Z = 0, hard stop at Z = ±3.5. Keep both legs on ISOLATED margin on LMEX perps. Recalibrate the hedge ratio monthly.
Correlation breakdown is the catastrophic failure mode — cointegrated assets can decouple permanently due to protocol changes or regulatory events. Re-run ADF test weekly; if p-value > 0.10 close immediately. Both legs moving against simultaneously is possible. Hard time stop: if the trade hasn't converged within 14 days, close regardless of Z-score.
| Metric | Good | Acceptable | Warning |
|---|---|---|---|
| Sharpe Ratio | > 2.0 | 1.0 – 2.0 | < 1.0 |
| Max Drawdown | < 10% | 10% – 25% | > 25% |
| Win Rate | > 55% | 45% – 55% | < 40% |
| Profit Factor | > 1.5 | 1.1 – 1.5 | < 1.1 |
| Total Trades | > 100 | 30 – 100 | < 30 |
- Risk ≤2% of account per trade
- Set stop loss BEFORE entering
- Use ISOLATED margin on futures
- Halt bot at 10% drawdown
- Log every trade with full context
- Test on paper first — always
- Keep API keys IP-whitelisted
- No stop loss on leveraged positions
- Add to losing positions (averaging down)
- Use CROSSED margin with multiple bots
- Deploy untested code with real funds
- Give bots withdraw permissions
- Trade max leverage (>10x for bots)
- Ignore drawdown — cut the bot
| Leverage | Liquidation at | Move to Liq. | Recommendation |
|---|---|---|---|
| 2x | -50% | 50% | Conservative — safe |
| 5x | -20% | 20% | Moderate — add stops |
| 10x | -10% | 10% | Experienced only |
| 20x | -5% | 5% | High risk — tight stops |
| 50x+ | -2% | 2% | Avoid for bots |
| Check | Target | Status |
|---|---|---|
| Paper traded for minimum 2 weeks | 14 days | Track manually |
| Sharpe ratio ≥ 1.5 on live paper data | ≥ 1.5 | Calculate from log |
| Max drawdown ≤ 15% in paper period | ≤ 15% | Check daily |
| All error paths tested (network, API fail) | 100% | Simulate failures |
| Stop loss confirmed firing correctly | 100% | Force test |
| Start with ≤ 5% of total intended capital | ≤ 5% | Scale slowly |
| Monitoring + alerting set up | Active | Telegram/email |
| Pattern | What It Means | Action |
|---|---|---|
| Large buy prints hitting ask repeatedly | Aggressive accumulation | Long bias |
| Thin ask wall absorbed quickly | Supply exhausted | Long breakout likely |
| Large sell prints lifting bid | Aggressive distribution | Short bias |
| Iceberg order (refreshing size) | Institutional presence | Fade or follow direction |
| Volume spike with no price move | Absorption — reversal risk | Watch for direction change |
| Thin both sides (low liquidity) | Spread widens, slippage high | Avoid — widen targets |
Scalping extracts tiny profits from microstructure inefficiencies at high frequency. Order flow scalping reads the live tape to detect aggressive buyers or sellers — when market buy orders dominate for a sustained window, price is about to be pushed up. This predicts short-term direction before candlestick patterns confirm it. The EMA ribbon (8/13/21 on 5m) filters for alignment: when all three EMAs are stacked bullish AND flow is bullish, the probability of a 3–5 tick gain is significantly elevated. Tape reading patterns (icebergs, absorption, thin walls) add conviction.
High-volume sessions: London open (08:00–10:00 UTC), NY open (13:00–15:00 UTC). BTC-USDT and ETH-USDT spot for tightest spreads. Avoid 30 minutes before/after major economic data releases.
Extremely small per trade — 0.25% risk maximum. At 0.1% taker fee per side, a 0.5% target means 40% of gross profit goes to fees. Use post-only limit orders wherever possible to earn maker rebate. Size = (Account × 0.0025) ÷ (Entry − Stop). Stop: 1–1.5 × ATR(14) on 1m chart. Target: 1.5–2 × stop. If 5 consecutive stops hit, halt for 30 minutes.
Fee erosion is slow death for scalpers — calculate fee-adjusted expectancy before scaling up. Emotional degradation after losses leads to over-trading and revenge trading. Use a strict daily loss limit (2% of account). Slippage on fast markets can turn a 3-tick target into a scratch trade — account for 0.5–1 tick slippage in backtests. Sub-100ms execution and stable internet required.
| 8H Rate | Daily Rate | Annual APR | Signal |
|---|---|---|---|
| 0.01% | 0.03% | 10.95% | Too low — skip |
| 0.03% | 0.09% | 32.85% | Borderline |
| 0.05% | 0.15% | 54.75% | Good — enter |
| 0.10% | 0.30% | 109.5% | Excellent |
| 0.30%+ | 0.90% | 328%+ | Market extreme — high risk |
Funding rate arbitrage captures the periodic payment that perpetual futures make to balance the market. When funding is positive (longs pay shorts every 8h), holding short futures + long spot in equal dollar value creates a delta-neutral position — price moves cancel across legs — while funding payments arrive as pure income. On LMEX, OIL-PERP and BRENT-PERP often carry elevated funding during commodity moves. The yield is calculable in advance (8h rate × 3 × 365 = APR), making it one of the most transparent strategies available.
Funding rate > 0.03% per 8h (~33% APR). Stable basis between spot and futures (< 0.1% divergence). Available liquidity on both legs. Best entered just after a funding settlement to maximise collection window.
Equal dollar value on both legs — non-negotiable for delta neutrality. Size based on targeted yield: calculate the funding APR at entry, compare to capital deployed. Scale up only when basis (futures − spot price) is confirmed stable. Max exposure: 20% of total capital per funding arb position. Use ISOLATED margin on the futures leg — never cross margin.
Not truly risk-free. Key risks: (1) Leg slippage on open/close — enter with limit orders, accept slightly worse entry rather than chasing. (2) Funding flip — if sentiment shifts, funding goes negative and you're paying. Monitor every 8h. (3) Basis divergence during extreme volatility can trigger margin calls on the futures leg even though overall position is neutral. Keep 30% of futures leg as maintenance buffer.
| Scenario | Use | Reason |
|---|---|---|
| Entering a large spot position | TWAP | Spreads impact evenly over time |
| Scalping with intraday bias | VWAP signal | Trade pullbacks to VWAP in trending sessions |
| Closing a leveraged futures position | TWAP | Avoids spiking price against yourself |
| Identifying intraday fair value | VWAP level | Dynamic S/R respected by algorithms |
| DCA accumulation | TWAP + RSI filter | Combine time slicing with dip detection |
VWAP represents the true intraday fair value of an asset — where the most volume has traded. Institutional algorithms anchor to VWAP for performance benchmarking, meaning large players consistently buy pullbacks to VWAP in uptrends and sell rallies in downtrends. This creates self-fulfilling support and resistance. TWAP is an execution algorithm, not a signal — it solves the large order problem by slicing into equal-sized chunks across a defined time window, minimising market impact and achieving a price close to the arithmetic mean of the period.
Intraday strategies only. Active trading hours with high volume. Trending sessions with clear directional bias. Avoid first 15 minutes of session open. TWAP appropriate when order size exceeds 0.5% of average 1-hour volume.
VWAP signal: risk 1–1.5% per trade. Stop below VWAP for longs — price breaking VWAP invalidates the thesis. Size = (Account × 0.01) ÷ (Entry − VWAP). TWAP execution: divide total intended position by number of slices. Rule of thumb: 1 slice per 10% of target time window. Monitor fill quality — if market is moving strongly, adjust slice frequency.
VWAP resets at midnight — loses relevance for multi-day positions. Institutional players know where VWAP is and can manipulate price around it to flush stops. Use a 0.2–0.3% buffer below VWAP for stops rather than exactly at VWAP. TWAP risk: if market moves strongly during execution, average fill price degrades. Set a price limit on TWAP slices.
Order flow analysis reads the live microstructure of the market — actual buy/sell transactions as they happen — rather than waiting for candlestick patterns to form. Order Book Imbalance (OBI) measures whether resting bids or asks dominate the visible book. Cumulative Delta tracks the running total of aggressor volume (market buys minus market sells) — persistent positive delta in an uptrend confirms institutional buying; divergence warns of hidden selling. Large wall detection identifies unusual concentrations of resting limit orders signalling institutional interest levels.
Liquid markets with visible, meaningful order book (BTC-USDT, ETH-USDT on LMEX). Active trading sessions. Avoid during news events when book is typically pulled. Works best at key S/R levels where institutional players position.
Very tight stops and small sizes — OBI signals are short-lived (seconds to minutes). Risk 0.5% per trade maximum. Stop placed just beyond the imbalance level. Target = 1.5–2× stop distance. Signal confidence scales size: OBI > 0.5 = full 0.5% risk; OBI 0.3–0.5 = half size. Never hold through a funding reset or major scheduled event. Use limit orders to enter.
Spoofing is the primary risk — large resting orders placed with intent to cancel as price approaches. Watch whether walls hold as price approaches or disappear. HFT noise on sub-1m timeframes makes OBI signals extremely noisy — stick to 1m minimum. Cumulative delta divergences can persist for extended periods in trending markets. Always require price action confirmation before acting on OBI signals alone.
| Event | Abbr. | Phase | Signal |
|---|---|---|---|
| Preliminary Support / Selling Climax | PS / SC | Accumulation A | Watch for long |
| Automatic Rally | AR | Accumulation B | Define trading range |
| Secondary Test | ST | Accumulation B | Confirm support |
| Spring (shakeout) | SP | Accumulation C | Strong long entry |
| Sign of Strength | SOS | Accumulation D | Confirm long |
| Buying Climax | BC | Distribution A | Watch for short |
| Upthrust After Distribution | UTAD | Distribution C | Strong short entry |
| Sign of Weakness | SOW | Distribution D | Confirm short |
The Wyckoff Method describes how institutional smart money systematically accumulates or distributes large positions without moving the market against themselves. During accumulation, price is pushed into a range, retail traders are shaken out at the Spring (a brief dip below support), then markup begins. The Spring is the highest-conviction entry — a false breakdown that immediately recovers, trapping short sellers. Distribution mirrors this: an Upthrust After Distribution (UTAD) breaks above resistance briefly, trapping breakout buyers, then reverses. Volume confirms — accumulation Springs are accompanied by high volume (institutional buying) and immediate recovery.
After an extended downtrend (accumulation) or uptrend (distribution). On 4H and Daily charts. Volume data must be reliable. Most effective on liquid pairs (BTC-PERP, ETH-PERP). Combine with VWAP and volume profile for institutional confluence.
Spring entries: full risk 2–3%. Other Wyckoff events (AR, ST, SOS): 1–1.5% risk. Stop for Spring longs: below the Spring low by 0.5 × ATR. Target for markup: measure the depth of the accumulation range and project that distance above range resistance. Scale out 50% at 1R, move stop to breakeven, let remainder run.
Wyckoff counting is subjective — practitioners often disagree in real-time. Hard rules (Wave 2 cannot exceed Wave 1 start) help but alternation guideline creates ambiguity. A Spring that fails to recover means the accumulation was actually continuation — exit immediately at stop, no averaging down. Crypto markets can compress or skip phases due to 24/7 trading. Phase identification improves significantly with practice.
| Wave | Character | Fibonacci Rule | Trade |
|---|---|---|---|
| Wave 1 | Weak, few believe it | — | Risky early entry |
| Wave 2 | Sharp retracement, looks like reversal | Retraces 50–61.8% of W1 | Buy the 61.8% dip |
| Wave 3 | Strongest, broadest participation | 1.618–2.618× W1 length | Best long, large size |
| Wave 4 | Sideways correction, overlapping | Retraces 23.6–38.2% of W3 | Hold longs, no new entries |
| Wave 5 | Weak momentum, divergences form | Equal to W1 or 61.8% of W1+W3 | Reduce exposure, watch for top |
| Wave A–C | Corrective — sharp/complex | C = 100% of A | Short Wave B rally |
Elliott Wave Theory describes market movement as alternating 5-wave impulse + 3-wave correction cycles. Rules are strict: Wave 2 never retraces beyond Wave 1 start; Wave 3 is never the shortest impulse; Wave 4 never enters Wave 1's price territory. Fibonacci ratios define expected relationships: Wave 2 typically retraces 50–61.8% of Wave 1 (the golden pocket), Wave 3 extends to 1.618–2.618 × Wave 1, Wave 5 often equals Wave 1. These create high-probability entry zones that combine wave structure with mathematical precision.
Clear wave structure visible on 4H or Daily chart. Trending markets with identifiable prior impulse. Fibonacci levels must cluster (confluence) for valid entries. Combine with RSI divergence at Wave 5 top as distribution warning.
Wave 3 entries (61.8% Wave 2 retracement confirmed): full 2% risk. Wave 5 entries: 1% only — Wave 5 often truncates and momentum diverges. Corrective wave trades (shorting Wave B): 0.5% risk — corrections are complex. Fibonacci extension targets: take 33% at 1.272× extension, 33% at 1.618×, trail remainder. Stop for Wave 3 entry: below the start of Wave 1 (invalidation rule).
Elliott Wave counting is notoriously subjective. The hard rules help but extended waves create ambiguity. Risk of misidentification is highest at market turning points — exactly where you most want to be positioned. Strict rule: if the next wave violates the count's rules, you have the wrong count — exit and re-analyse. Never argue with the market about the wave count. Extensions are the most dangerous: a third-of-third can look like a Wave 3 top prematurely.
Volume Profile maps where the most volume has traded over a given period, revealing price levels that matter most to market participants. The Point of Control (POC) — the price level with the highest traded volume — acts as a powerful magnet. Markets frequently gravitate back toward the POC because it represents where buyers and sellers reached the most agreement. The Value Area (70% of volume) defines fair value for the period. Breaking above VAH with expanding volume signals strong institutional demand. Falling below VAL signals aggressive selling.
Liquid markets with meaningful volume data. Session or weekly volume profiles for liquid pairs. Most powerful at the start of a new session when yesterday's value area provides initial reference.
POC-based trades (fading back to POC from outside Value Area): 0.75% risk — stop beyond the opposite VA boundary. VAH/VAL breakout trades: 1–1.5% risk — stop back inside the Value Area. Size up when multiple volume profile lookback periods agree on the same level. Scale out: take 50% at POC when approaching from outside, let 50% run to the opposite VA boundary.
Volume profile shows the past, not the future — levels that were significant can be taken out with minimal resistance if the context changes. Always use the most recent relevant timeframe. In thin markets (altcoins on LMEX), volume profiles are noisy and unreliable — stick to BTC-USDT and ETH-USDT. POC drift: as new volume prints, the POC slowly migrates. Your analysis can be valid at entry but invalidated an hour later as the profile updates.
| Signal Strength | Conditions | Action |
|---|---|---|
| Strong Bull (A+) | Price above cloud + TK cross up above cloud + green cloud | Full size long |
| Moderate Bull (B) | Price above cloud + TK cross up below cloud | Half size long |
| Neutral | Price inside cloud | No trade — wait |
| Moderate Bear (B) | Price below cloud + TK cross down above cloud | Half size short |
| Strong Bear (A+) | Price below cloud + TK cross down below cloud + red cloud | Full size short |
Ichimoku Kinko Hyo ("equilibrium at a glance") is a complete trading system providing trend, momentum, and support/resistance analysis from a single indicator. The Cloud (Kumo) is the most important component — its colour and thickness define trend quality. The Tenkan/Kijun (TK) cross is the trigger. The Chikou (lagging span) confirms the signal by comparing current price to historical price 26 periods back. The most powerful entries occur when all elements align: price above a bullish Cloud, TK crossing above Kijun, and Chikou above historical price.
Trending markets on 4H and Daily timeframes. Original parameters (9/26/52) work well for crypto daily charts. Avoid intraday (sub-1H). Best when cloud is thick (strong trend). Combine with volume profile to confirm cloud levels as institutional support.
Scale size to signal quality. A+ signal (all 5 components aligned): 2% risk. B signal (price above cloud, TK cross but weak cloud or Chikou neutral): 1% risk. No trade inside the cloud — this is the noise zone. Stop placement for longs: below the bottom of the Cloud (Senkou Span B for thin clouds, Span A for thick). Trail stop with the bottom of the cloud. Target: measure the prior swing, project same distance from entry.
In fast-moving markets, Ichimoku lags significantly — signals confirm moves already substantially complete. Use lower timeframe TK crosses (1H) to fine-tune entries within 4H/Daily signal direction. The Cloud creates wide stops which forces smaller position sizes — intentional but reduces return on capital. Flat/ranging markets produce meaningless TK crosses near the cloud — enforce the no-trade-inside-cloud rule strictly.
| Timeframe Pair | Direction TF | Entry TF | Best For |
|---|---|---|---|
| Swing Trading | Weekly / Daily | 4H / 1H | 3–10 day holds |
| Day Trading | 4H / 1H | 15m / 5m | Intraday sessions |
| Scalping | 1H / 15m | 5m / 1m | Minutes to 1 hour |
| Position Trading | Monthly / Weekly | Daily | Weeks to months |
Multi-timeframe confluence is a framework that dramatically improves the quality of any strategy. A signal on a 5m chart has very different predictive power depending on whether the 4H and daily charts agree. The principle is trend permission: the higher timeframe grants or denies permission for lower timeframe signals. A perfect RSI divergence on 15m is tradeable if the 4H is bullish; the same signal is ignored if the 4H is bearish. The weighted scoring system (Daily = 4×, 4H = 3×, 1H = 2×, 15m = 1×) quantifies confluence objectively.
Any trending market. Most powerful when the dominant cycle (Daily or Weekly) is in a clear trend. Useless in choppy flat markets where all timeframes are simultaneously ranging. Apply to any core strategy (EMA cross, RSI, VWAP) to filter out low-quality signals.
Scale risk directly with the weighted confluence score. Score > 0.7 (strong alignment): full 2% risk. Score 0.5–0.7: 1% risk. Score 0.3–0.5: 0.5% risk or skip. Score < 0.3: no trade. For exits: close 50% when LTF signals reversal; close fully when MTF (1H) signals reversal; only let run to full target if HTF (4H+) remains aligned.
Conflicting timeframes are normal and expected — accept that a score of 0.6–0.7 is sufficient for a trade. Don't over-filter. Timeframe lag is a real risk — the daily signal may have triggered 2 days ago, making the LTF entry very late in the daily move. Check that the HTF signal is not exhausted (e.g., daily RSI at 85 when wanting to go long on 5m). Conflicting signals in adjacent timeframes often indicate a turning point — reduce size significantly.
| Contract | LMEX Symbol | Underlying | Settlement | Margin |
|---|---|---|---|---|
| WTI Crude Oil | OIL-PERP | WTI Crude Futures | USDT Perpetual | Isolated / Cross |
| Brent Crude Oil | BRENT-PERP | Brent Crude Futures | USDT Perpetual | Isolated / Cross |
LMEXFutures. The strategy monitors the BRENT-PERP minus OIL-PERP spread, enters on Z-score extremes, and accounts for funding rate drag on both legs.fetch_funding() before entry to confirm net funding is favourable.| BRENT-PERP minus OIL-PERP | Z-Score | Interpretation | Trade |
|---|---|---|---|
| $1 – $5 | ~0 | Normal Brent premium — historical average | No edge — stand aside |
| $6 – $10 | >1.5 | Elevated — US supply glut or bottleneck | LONG OIL-PERP / SHORT BRENT-PERP |
| $10+ | >2.0 | Extreme dislocation — geopolitical shock | Full size — high conviction entry |
| $0 or negative | <-2.0 | WTI premium (inversion) — rare | SHORT OIL-PERP / LONG BRENT-PERP |
| Risk | Impact | Mitigation |
|---|---|---|
| OPEC production announcement | Sudden BRENT-PERP spike — spread widens sharply | Max hold period stop: 72h |
| EIA inventory data (Wednesday) | OIL-PERP specific volatility weekly | Avoid entry Tue–Wed |
| Funding divergence between legs | One leg pays, other collects — net drag | Check both funding rates before entry |
| Thin liquidity on perp order book | Wide spread + slippage on both legs | Use limit orders to enter each leg |
| Geopolitical shock | Spread stays dislocated for weeks | Hard stop at 3× entry Z-score |
The WTI/Brent spread exists because they are chemically similar crude oils traded at different benchmark hubs — Cushing, Oklahoma for WTI; North Sea for Brent. Historically, Brent trades at a $1–5 premium to WTI due to transportation economics and sulphur content. When the spread widens significantly beyond this norm (geopolitical supply shock, pipeline disruption, US export surge), it is expected to mean-revert. On LMEX, both trade as USDT-margined perpetuals (OIL-PERP and BRENT-PERP) — equal dollar positions on both legs, no physical delivery, no expiry roll. The ADF test confirms stationarity before any trade is placed.
ADF p-value < 0.05 (stationarity confirmed). Z-score ≥ ±2.0 from rolling 30-day mean. No OPEC meetings within 48 hours. Not during Wednesday EIA inventory release. Both LMEX perps showing normal order book liquidity.
Equal dollar value on both legs — non-negotiable for delta neutrality. Start at $500/leg, scale to $2,000/leg with track record. Leverage: 2–3× maximum — excessive leverage can be liquidated during transient volatility even when the thesis is correct. Set ISOLATED margin on each leg independently on LMEX. Target: Z-score returning from ±2.0 to ±0.5. Hard stop at Z = ±3.5.
Non-stationarity periods: OPEC+ production cuts or geopolitical embargoes can permanently shift the spread. Re-run ADF weekly — if p > 0.05, close immediately. EIA inventory data every Wednesday at 15:30 UTC causes sharp WTI-specific moves — avoid new positions Tuesday/Wednesday. Max hold time: 72 hours hard limit prevents riding a structural dislocation indefinitely. Funding on both perp legs accumulates as a carry cost.