onboarding
Grid Bot — your first deploy in a sideways market
Worked example: $200 ETH/USDC grid on Coinbase, 20 lines, geometric mode
8 min · beginner
What you'll have when finished
- Pick a grid range from the chart (not from feelings)
- Decide between Spot / Futures / Infinity / Reverse variants
- Configure 20 lines / geometric mode / $200 capital
- Read the preview panel + validate before deploying
- Monitor the live bot in the right tab and know when to stop
Before you start
- Grid bots LOSE MONEY in strong trends. Always check Market Trends + Forecasting before deploying.
- Range that's too narrow → price walks out fast. Range too wide → grids never fire.
- Futures variant + high leverage = liquidation cascade risk. Use 2-3× max for grids.
- Start with $100-500. Don't deploy your full bankroll on your first grid.
Walkthrough
-
Verify the market is actually sideways BEFORE picking grid as your tool
**Grid bots are for SIDEWAYS markets only.** In strong trends, price walks out of your range and the bot bleeds. Pre-deploy checks: 1. Open **Intelligence → Market Trends** for your pair (e.g. ETH/USDC) 2. Read the Trend Direction badge — should be **Neutral** or **Sideways** 3. Check the Strength meter — should be <60% (weaker trend = better for grid) 4. Open **Intelligence → Forecasting** for the same pair, switch to 24h horizon 5. P(Up) and P(Down) should be roughly balanced (40-60% each, neither dominant) **If trend is strongly bullish or bearish with high confidence, DO NOT deploy a grid.** Instead: - Bullish trend → use Smart Trade with TP ladder, or DCA Safety - Bearish trend → sit out, or use a Reverse grid (advanced) For our worked example, assume ETH has been ranging between $1,900-$2,200 for the last 2 weeks. That's a textbook grid setup.
Success criteria: Confirmed Market Trends shows Neutral/Sideways · Forecasting shows balanced P(Up)/P(Down)
-
Open Grid Bot and pick the SPOT variant
Navigate to **CEX Trade → Grid Bot**. At the top, the **Variant Selector** shows 4 cards: - **Spot** (green) — buy-low/sell-high on real inventory. Best for beginners. Pick this. - **Futures** (blue) — leveraged version. Higher P&L per grid + higher liquidation risk. Skip for first deploy. - **Infinity** (violet) — no upper bound; only accumulates as price drops. For pure accumulation plays. - **Reverse** (amber) — sells bounces in downtrend. Advanced. Click **Spot**. The form below configures for spot trading.
Success criteria: SPOT variant selected
-
Pick the range FROM THE CHART, not from feelings
The TradingView chart sits above the form. Use it to identify your range: 1. Look at the **last 7-14 days** of price action 2. Find the **lowest bounce** (support) — this is your **lowPrice** 3. Find the **highest rejection** (resistance) — this is your **highPrice** 4. Verify price has bounced at BOTH levels at least 2-3 times For our worked ETH/USDC example: - Recent support at **$1,920** (bounced 3 times in last 2 weeks) - Recent resistance at **$2,180** (rejected twice) Type into the form: - **Low Price:** 1920 - **High Price:** 2180 **Anti-pattern:** picking +/-10% from current price arbitrarily. The right range is one the chart shows price actually respecting. **Common mistakes:** - Range too wide ($1,500-$2,500) → 80% of grids never fire because price stays in middle - Range too narrow ($1,990-$2,010) → price walks out within hours - Range based on round numbers ($2,000-$2,500) → ignores actual chart structure
Success criteria: Range picked from chart (bounces verified) · Range is 1-2 weeks of recent price action
-
Configure 20 grids / geometric mode / $200
Continue filling the form: - **Grid Count:** **20** (default, sensible for $200 over a $260 range) - **Total Amount:** **200** (USD equivalent split half base, half quote) - **Mode:** **Geometric** (better for crypto than Arithmetic — see tooltip) **Math:** $200 ÷ 20 grids = $10 capital per grid line. Over a $260 range with 20 lines = ~$13 spacing per line. Each grid crossing nets roughly $0.05-0.10 after fees (depends on exchange). **Sounds small.** But a volatile ETH/USDC pair crossing 20+ grids per day during good range action adds up: 20 crossings × $0.07 = $1.40/day × 30 days = ~$42/month on $200 capital = ~20% annualized in fees-only profit. **Geometric vs Arithmetic:** Geometric spacing is uniform in PERCENT (each grid is X% above the last). Arithmetic is uniform in absolute dollars. Geometric matches crypto's multiplicative behavior — a 1% move at $2,000 (= $20) is structurally the same as a 1% move at $1,000 (= $10). Default to Geometric.
Success criteria: Grid count = 20 · Total = 200 · Mode = Geometric
-
Read the Preview panel — VALIDATE before deploying
As you type, the **Preview panel** auto-updates (after ~350ms debounce). Read it carefully: - **Grid spacing:** the price gap between adjacent lines - **Capital per grid:** the amount allocated per line - **Estimated profit per crossing:** what one grid traversal nets - **Max drawdown if price hits range edge:** worst case if price walks all the way to your lowPrice (you end up holding all base, exposed to further downside) **Sanity checks:** - **Capital per grid is reasonable** (>$5, otherwise exchange min-notional rejects orders) - **Profit per crossing > 2× fee per trade** (otherwise you're paying fees to lose money) - **Max drawdown is acceptable** (you can hold the base position if price hits lowPrice) If any of these fail, adjust: - Profit too small → reduce grid count (bigger spacing = bigger per-crossing profit) - Max DD too painful → reduce total amount, or narrow the range - Capital per grid too small → reduce grid count, or increase total For our worked example: 20 lines on a $260 range = ~$13 spacing = ~0.6% per crossing. At Coinbase Advanced 0.4% fee per side = 0.8% round-trip = the grid needs to cross 0.8% to break even on fees alone. 0.6% < 0.8% means the grid LOSES money on each crossing. **Fix:** drop to **15 grids** instead of 20. New spacing = ~$17 = ~0.85% per crossing. Now it's profitable. **This is why the preview matters.** Without it, you'd deploy a guaranteed-loser.
Success criteria: Preview shows profit per crossing > 2× fee · Max drawdown is acceptable · Adjusted grid count if needed
-
Deploy + verify in Live Bots tab
Click **Deploy Grid Bot** (cyan button). What happens: 1. Backend computes the N grid prices using your range + count + mode 2. Allocates capital (half base / half quote) 3. Places N limit orders on the exchange via CCXT 4. Page switches to **Live Bots** tab automatically 5. The new bot appears at the top of the list Click the bot to open the detail panel: - **Status:** running - **Grid ladder:** all N lines visible with status (filled / open / pending) - **Unrealized P&L:** value of current inventory - **Realized P&L:** profit from grid crossings (starts at $0, grows over time) - **Fills count:** how many grid crossings have happened Verify all N orders are on the book by checking your exchange directly. If anything looks wrong, click **Sync** to force a re-fetch.
Success criteria: Bot deployed · Status = running · All N orders visible on exchange
-
Monitor + know when to stop
The Live Bots tab polls every 10 seconds while open. **Healthy patterns:** - Realized P&L grows steadily over time - Fills count increases (1-5/day in normal range action, 20+/day in volatile range) - Inventory rebalances around 50/50 base/quote (drifts toward base if price falls, quote if price rises) **Warning signs:** - Price hit your **lowPrice** and broke below → grid is now holding all base, exposed to further downside. STOP and reassess. - Price hit your **highPrice** and broke above → grid sold everything; you missed the upside. - No fills in 24+ hours → range is too wide OR market regime shifted (became trending). Check Market Trends; consider stopping. - Drift banner appeared → exchange-side balance disagrees with platform tracking. Click Reconcile (see [[dca-reconcile-state-fix]] guide). **When to stop:** - Profit target hit (decide upfront — e.g. +5% on initial capital) - Range broken (price went outside lowPrice or highPrice) - Trend regime emerged (Market Trends flipped to Bullish/Bearish strength >60%) **Stop button** cancels all open orders. Your current inventory (base + quote) stays in your exchange wallet. The bot does NOT close positions — you decide whether to sell the inventory or hold.
Success criteria: Set a profit target up front · Defined the stop trigger (range broken / trend emerged) · Know stop cancels orders but doesn't close positions
What's next
**Wait a full week** before judging the bot. Grid bots have noisy P&L day-to-day; the trend over 7+ days is what matters. **Track in Trading Journal** — after stopping, write 2-3 sentences: what range you chose, why, what happened, what you'd change. After 5-10 deploys, patterns emerge. **Consider Paper Trading first for new pairs** — [Paper Trading](/paper-trading) runs the bot against real OHLCV history without real money. Good way to validate range choice for unfamiliar pairs. **When to scale up:** - 3+ profitable grid runs on the same pair - You can predict approximate fill count by looking at the chart - Your range picks have been wrong <30% of the time **When to scale down or stop using grid:** - Market regime is in transition (high volatility, news events) - You've had 3+ losing grids in a row - Trends are dominant across multiple horizons For automated regime detection (so you don't have to check Market Trends manually before every deploy), see [Conditional Bot](/conditional-bots) which auto-switches between Grid and other strategies based on regime.