The Grid bot card: PnL and fills
The card is the main screen of a running bot: it shows its status, the grid parameters, the profit and the control buttons. The data in it is refreshed every time you open it and with the 🔄 Refresh button.
Where it is in the bot
Main menu → 🪜 Grid Bots → tap a bot in the list. If there are no bots yet, the bot writes: “You don't have any Grid bots yet. … Press 'Create Grid Bot' to begin.” A summary of all bots at once (Signal, DCA, Grid) is in the 📊 My Bots (Overview) section, see The unified My Bots overview.
What the card shows
The first line is the bot name and the status, for example “BTC grid — Active”. Then:
| Line | What it means |
|---|---|
| “📈 Symbol: BTCUSDT” | the trading pair |
| “📐 Direction: Long” | Long / Short / Neutral |
| “📏 Mode: Arithmetic” | or Geometric |
| “📊 Range: 60000 — 66000” | for an Infinity Grid there is “∞” instead of the upper bound |
| “📊 Levels: 11” | for Infinity — “📊 Levels created: 31, top @ $72000” |
| “💰 Investment: 110 USDT” | the amount per level × the number of levels |
| “⚡ Leverage: 2x | CROSS” | the leverage and the margin type; on spot — 1x |
| “🎯 Active window: 10 levels (two-layer buffer)” | only if the window is set |
| “⚠️ Liquidation (estimate): ~$55000 (-8%)” | on futures only, with leverage above 1 |
| “💵 Realized P&L: 1.20 USDT” | the profit of closed level cycles |
| “📈 Unrealized P&L: -0.40 USDT” | the floating result of the open position; on futures it is refreshed every 60 seconds |
| “💸 Funding: -0.05 USDT” | futures; refreshed every 30 minutes, shown when it is not zero |
| “🔄 Fills: Buy 12 / Sell 10” | how many buy and sell orders were filled |
Realized P&L grows with every closed cycle: the sum of the profits from the notifications “💰 … SELL filled at price … Profit: +X USDT” equals the Realized P&L in the card. If you closed the position by hand on the exchange, the bot does not count that result in Realized P&L.
Fills are the fill counters. In a Long grid every pair “buy → sell” is one closed cycle, so the difference Buy − Sell roughly shows how many levels currently hold a position and wait for the sell.
Statuses
| Status | Meaning |
|---|---|
| Created | not started yet |
| Waiting trigger | waiting for the activation price, there are no orders |
| Activating | the orders are being placed |
| Active | working |
| Paused / Soft paused | the orders stay, new ones are not placed |
| Hard paused | all orders are removed |
| Out of range (above) / Out of range (below) | waiting for the price to come back, see Protections |
| Locked | stopped by an administrator |
| Closing / Closed | the work is finishing |
| Error | needs attention |
Buttons
The set of buttons depends on the status:
- running: ⏸️ Pause, ⏸️⏸️ Hard pause;
- in any pause: ▶️ Resume; in the status “Waiting trigger”: 🎯 Activate now;
- while the bot is not closed: ⏹️ Stop, 💼 Stop (keep orders), 🚫 Cancel orders only, 🎯 Change active window;
- “Active” and the soft pauses: 📐 Change boundaries, 🔢 Change density, 💵 Change order size, 🔄 Recreate grid (not for an Infinity Grid);
- “Out of range (above)” and “Out of range (below)”: out of the editing buttons only 🔄 Recreate grid, and there is no ▶️ Resume button;
- always: 🔔 Notifications: Realtime (switches the mode) and 🔄 Refresh.
What each button does is described in Pause and stop and Editing a running bot.
Example with a calculation
A Long grid 60,000 — 66,000, 11 levels of 10 USDT, a step of 600 USDT (1 % of the lower bound). Over a day the card shows “🔄 Fills: Buy 12 / Sell 10” and “💵 Realized P&L: 0.85 USDT”.
- There are 10 closed cycles (as many as the sells). Every cycle gives about 0.10 USDT before fees, that is up to 1 USDT a day; the fees on the buy and the sell for your keys brought the result down to 0.85 USDT — and it is exactly this figure, after fees, that Realized P&L shows.
- Buy − Sell = 2: two levels are bought and wait for the sell; their result is in “📈 Unrealized P&L”.
- The daily summary in the notification bot shows the same result: “📊 BTC grid (BTCUSDT) Daily summary: … trades, Day PnL: 0.85 USDT”.
Exporting the history
The command /export_grid_history <gridBotId> sends a CSV file with the level history: “📊 Grid bot #12 levels history. CSV file (Excel-compatible).” The errors: “ℹ️ Usage: /export_grid_history <gridBotId>”, “❌ ID must be a number.”, “❌ Grid bot with this ID was not found or belongs to another user.” This is a convenient way to reconcile Realized P&L with the trade history on Bybit for this pair once a day (the difference is fees and funding).
