Buy Crypto
Pay with
Markets
NFT
Feed
Downloads
English
USD

How can we help you?
Account Functions
Tutorial
Binance Fan Token
Binance Earn
Crypto Deposit/Withdrawal
Buy Crypto (Fiat/P2P)
Spot & Margin Trading
Crypto Derivatives
Futures Contracts
Introduction to Binance Futures
Strategy Trading
USDⓈ-M Futures Contracts
COIN-M Futures Contracts
Futures Guide
Hedge Mode
Types of Orders
Binance Futures Welcome Bonus Coupon
Futures Service Agreement
Binance Futures Related Programs
Index
Trading Rules
Leveraged Tokens
Finance
API
Security
Terms of Use
Binance Convert
NFT
VIP

What is Grid Trading?

2021-01-28 16:24
Grid trading is a trading bot that automates the buying and selling of Futures contracts. It is designed to place orders in the market at preset intervals within a configured price range.
Grid trading is when orders are placed above and below a set price, creating a grid of orders at incrementally increasing and decreasing prices. In this way, it constructs a trading grid. For example, a trader could place BTC buy orders at every 1,000 USDT below the market price and place sell orders at every 1,000 USDT above the market price to take advantage of ranging conditions.
Grid trading performs best in volatile and sideways markets when prices fluctuate in a given range. This technique attempts to make profits on small price changes. The more grids you include, the greater the frequency of trades will be. However, it comes with an expense as the profit you make from each order is lower.
Thus, it is a tradeoff between making small profits from many trades, versus a strategy with lower frequency but generates a bigger profit per order.

How does Binance Grid Trading work?

Binance Grid Trading now supports USDⓈ-M and COIN-M Futures. You can customize and set grid parameters to determine the grid's upper and lower limits and the number of grids. Once the grid is created, the system automatically buys or sells orders at preset prices.
Let’s understand how it works.
You expect Bitcoin to hover in a price range between 50,000 USDT and 60,000 USDT in the next 24 hours. In this case, you could set up a grid trading system to trade within this predicted range.
On the grid trading panel, you could set parameters of the strategy, including:
  • The upper and lower boundaries of the price range;
  • The number of orders to be placed within the configured price range; and
  • The width between each buy and sell limit order.
In this scenario, as the BTC price falls toward 55,000 USDT , the grid trading bot will accumulate buy positions on the way down at a lower-than-market price. As the price recovers, the bot will sell on the way up at a higher-than-market price. This strategy essentially attempts to profit from price reversions.
For more details, please read What Is Long/Short Grid Trading.
Risk Warning
Grid trading as a strategic trading tool should not be regarded as financial or investment advice from Binance. Grid trading is used at your discretion and at your own risk. Binance will not be liable to you for any loss that might arise from your use of the feature. It is recommended that users should read and fully understand the Grid Trading tutorial and make risk control and trade rationally within their financial ability.

How to set up a Grid Trading strategy?

1. Log in to your Binance account and go to [Derivatives] - [Binance Futures Overview]. Click [Strategy Trading] - [Futures Grid].
If you’re using the Binance App:
  • To start trading using the USDⓈ-M Futures Grid, tap [Futures] - [USDⓈ-M Futures]. Then, tap [...] and select [Strategy Trading] - [Grid Trading].
  • To start trading using the COIN-M Futures Grid, tap [Futures] - [COIN-M Futures]. Then, tap [...] and select [Strategy Trading] - [Grid Trading].
2. Select a symbol to execute the strategy and set the grid parameters. Select the grid direction (Long, Short, or Neutral), the range, the number of grids, and order size. Then click [Create] to confirm. For example, the screenshot below shows the steps for creating USDⓈ-M Futures Grids.
Please note that the following situations may cause grid creation to fail:
  • When you are already running a grid trading on the selected symbol;
  • When you have open orders or positions on the selected symbol;
  • When you are under hedge position mode, please adjust to one-way mode;
  • When you exceed the maximum grid limit. Please note that you can only have 10 working and limit-triggered grids simultaneously (applies to both USDⓈ-M Futures and COIN-M Futures).

Grid Trading Mechanism

Let’s use the USDⓈ-M Futures BTCUSDT Perpetual contract as an example to understand the process for grid trading.
  • Setting a Grid Trigger (optional)
  • Defining the initial structure of your grid strategy
  • Initial grid creation process
  • Grid Update
  • Setting a Stop Trigger (optional)
  • Order Cancellation
Setting a Grid Trigger (optional)
For parameters #10 & #11:
You can place your grid limit orders immediately or trigger them when the market price reaches a certain value. The grid orders will be triggered when the market price (Last price or Mark price) rises above or falls below the trigger price you enter.
Defining the initial structure of grid strategy
For parameters #1, #2,# 3,# 4, and #6:
You can determine a series of price levels according to the latest market price (buy, sell, mid-price), and place sell limit orders at a price higher than the market price, and a buy limit order at a price lower than the market price. After that, you can wait for the limit orders to be triggered and executed.
Please note that the number of limit orders is the number of grids +1 at the time of initial construction as no positions are held. The order nearest to the latest market price is the initial opening order, waiting to be executed.
Initial grid creation process
For neutral grids, the strategy will begin with no initial position. The initial position will be triggered when the market trades beyond the nearest price point after the initial construction.
Example:
Suppose you have set your strategy parameters as such:
  • Contract: BTCUSDT Perpetual
  • Lower price: 20,000 USDT
  • Upper price: 45,000 USDT
  • Number of grids: 5
  • Mode: Arithmetic
The price distribution will be as follows: 20,000 USDT, 25,000 USDT, 30,000 USDT, 35,000 USDT, 40,000 USDT, 45,000 USDT
Initial sell orders for the neutral grid will be placed above the current market price. Meanwhile, the buy orders will be populated below the current market price. Note that the price nearest to the market price would be excluded. In this scenario, the initial grid limit orders will be populated as such:
DirectionPrice
Sell45,000 USDT
Sell40,000 USDT
Buy30,000 USDT
Buy25,000 USDT
Buy20,000 USDT
Grid Update
Grid update means that every time a price point is touched, i.e., a limit order is filled, the grid limit order will update in time. The price of the most recently executed order will always be the one that is switched off, meaning it will not trigger any order. Buy or sell limit orders are then filled in again according to the set parameters to maintain the number of limit orders in the grid.
For example, the initial market price is 10,010 USDT , and the grid limit price at each unit is:
Price
Direction
10,200 USDT
Sell
10,100 USDT
Sell
10,000 USDT
Buy
9,900 USDT
Buy
9,800 USDT
Buy
Assuming that the price drops to 10,000 USDT and the buy order (the initial open position) is executed, the grid limit order will become:
Price
Direction
10,200 USDT
Sell
10,100 USDT
Sell
10,000 USDT
-
9,900 USDT
Buy
9,800 USDT
Buy
Let’s assume the price then rises to 10,100 USDT, triggering the execution of the 10,100 USDT sell order. The grid limit orders will be updated as follows:
Price
Direction
10,200 USDT
Sell
10,100 USDT
-
10,000 USDT
Buy
9,900 USDT
Buy
9,800 USDT
Buy
If after that the price drops to 9,900 USDT, the two buy orders (10,000 USDT and 9,900 USDT) are then executed, and the grid limit orders will be subsequently updated as follows:
Price
Direction
10,200 USDT
Sell
10,100 USDT
Sell
10,000 USDT
Sell
9,900 USDT
-
9,800 USDT
Buy
And so on.
5. Setting a Stop Trigger (optional)
For parameter #12:
You can manually terminate grid operation or set Stop Trigger.
Stop Trigger: When the market price rises above Stop_upper_limit or falls below Stop_lower_limit, i.e., the market is no longer following a swinging trend, the grid will stop its operation.
6. Order Cancellation
For parameters #13 & #14:
You can choose to cancel all orders and close all positions manually or automatically after the grid has been stopped.
When the 'cancel all orders' on stop is enabled, the system will automatically cancel all the unfilled orders for the symbol when the grid is stopped. When the close all positions on stop is enabled, the system will automatically close all open positions at market price for the symbol when the grid is stopped.
Please note that during grid operation, the following scenarios will cause the grid to terminate:
  • Manually terminate the grid;
  • Insufficient margin causes some positions to be liquidated or fail to place orders;
  • Manually cancel some or all grid limit orders;
  • Manually close some or all grid positions;
  • When the delivery contract is delivered, the product no longer exists and the grid strategy will be automatically stopped. During the delivery process, the system will automatically remove your limit orders and settle open positions.
The system will notify you if a grid is currently in operation. For example, the recommended grid trading leverage is below 20x. If the leverage continues to be higher than 20x, you will see a second reminder to lower the leverage.

How to set up the Grid Trading parameters?

Choose the contract on which the trading bot will be deployed.

1. Cross/Isolated Margin Mode and Leverage

Determine the type of margin for the grid trading position: Isolated or Cross margin modes.
  • Isolated margin mode: Margin is independent for each trading pair
  • Cross margin mode: Margin is shared between all trading pairs in the Futures account
Then, adjust the leverage. Leverage magnifies both gains and losses. With leverage, you can magnify relatively small price movements to potentially create profits. However, leverage is a double-edged sword, please use it prudently.

2. Lower/Upper Price

*Cannot be modified after placing the grid order
Set the lower price and the upper price of the grid. If the highest or the lowest grid is exceeded, no more positions will be opened. For example, if the current BTCUSDT perpetual Futures price is 48,000 USDT and you expect the price will fall when it goes above 49,000 USDT. In this case, you can set the upper price to 49,000 USDT. After the price reaches 49,000 USDT, the grid will no longer open positions.

3. Arithmetic/Geometric Mode

*Cannot be modified after placing the grid order
Arithmetic: Each grid has an equal price difference.
The arithmetic grid divides the price range from grid_lower_limit to grid_upper_limit into grid_count by an equal price difference.
The price difference of each grid is:
price_diff = (grid_upper_limit - grid_lower_limit) / grid_count
Then it constructed a series of price intervals:
price_1 = grid_lower_limit
price_2 = grid_lower_limit + price_diff
price_3 = grid_lower_limit + price_diff * 2
...
price_n = grid_lower_limit + price_diff * (n-1)
At grid_upper_limit, n = grid_count
Example: Arithmetic price_diff = 100: 1,000, 1,100, 1,200, 1,300, 1,400,... (the next price is 100 higher than the previous one)
Geometric: Each grid has an equal price difference ratio.
The geometric grid divides the price range from grid_lower_limit to grid_upper_limit into grid_count by an equal price ratio.
The price ratio of each grid is:
price_ratio = (grid_upper_limit / grid_lower_limit) ^ (1/grid_count)
The price difference of each grid is:
price_diff_percentage = ( (grid_upper_limit / grid_lower_limit) ^ (1/grid_count) - 1) * 100%
Then it constructed a series of price intervals:
price_1 = grid_lower_limit
price_2 = grid_lower_limit * price_ratio
price_3 = grid_lower_limit * price_ratio ^ 2
...
price_n = grid_lower_limit * price_ratio ^ (n-1)
At grid_upper_limit, n = grid_count
Example: Geometric grid price_diff_percentage = 10%: 1,000, 1,100, 1,210, 1,331, 1,464.1,... (the next price is 10% higher than the previous one)

4. Grids (i.e., number of limit orders)

*Cannot be modified after placing the grid order
  • Minimum: 2
  • Maximum: 149
Note: Price difference cannot be lower than the tick size, otherwise you need to adjust the Grid_count or Grid upper/lower limit.
How to calculate?
1. Arithmetic grid, price_diff = (grid_upper_limit - grid_lower_limit)/gridCount < tickSize
2. Geometric grid, min_price_diff = grid_lower_limit*price_ratio < tickSize , price_ratio = (grid_upper_limit / grid_lower_limit) ^ (1/grid_count)

5. Profit/Grid (After deducting the trading fees)

If the profit/grid is less than the maker commission, you will be notified that the total grid profit may not be able to cover trading fees.
How to calculate? (The profit/grid displayed is for reference only)
1. Arithmetic grid
d = (grid_upper_limit - grid_lower_limit) / grid_count
c = TradingFeeRate (your current maker fee rate)
profit_per_grid_lower = (grid_upper_limit * (1-c)) / (grid_upper_limit-d) - 1 - c
profit_per_grid_higher = (1-c) * d / grid_lower_limit-2c
Example: Price interval = 1,000 - 2,000, Grid_count = 10, Commission = 0.1%
Price difference of each grid is = (2000-1000) / 10 = 100
profit_per_grid_lower = (2000*(1-0.1%)) / (2000-100) - 1 - 0.1% = 5.05%
profit_per_grid_higher = (1-0.1%) * 100 / 1,000 - 2 * 0.1% = 9.79%
2. Geometric grid
r = (grid_upper_limit/grid_lower_limit) ^ (1/grid_count)
c =TradingFeeRate (your current maker fee rate)
profit_per_grid_geo = profit_per_grid_geo = (1-c) * r - 1 - c
Example: Price interval = 1,000 - 2,000, Grid_count = 10, Commission = 0.1%
Price ratio of each grid is = (2,000 - 1,000) ^ (1/10) = 107.18%
Profit/grid = (1 - 0.1%) * 107.18% - 1 - 0.1% = 6.97%

6. Initial Margin

*Cannot be modified after placing the grid order
Initial margin = initial_value / leverage
You can adjust the percentage of the investable amount up to 100% (Initial margin = percentage * margin balance). Please note that it must be within the interval between the min_initial_margin and the margin balance.
For USDⓈ-M Futures Grid
  • Direction Neutral
min_initial_margin= minQty * sum (price)/ (leverage * adjust_coef)
minQty: the minimum grid_qty
  • Direction Long/Short Grid
Define assuming price: assuming_price (BUY) = price /assuming_price (SELL) = max (mark_price, price)
min_initial_margin = sum (min grid qty * assuming price + leverage * min grid qty * abs {min [0, side * (mark price - price)]}) / (leverage * adjust_coef)
*If you have set a trigger price, the mark price should be replaced by the trigger price.
For COIN-M Futures Grid
  • Direction Neutral
min_initial_margin = min grid qty * sum (contract_multiplier / price) / (leverage * adjust_coef)
  • Direction Long/Short Grid
Define assuming price: assuming_price (BUY) = price / assuming_price (SELL) = max (mark_price, price)
min_initial_margin = min grid qty * sum (contract_multiplier / (leverage * assuming price ) + contract_multiplier * abs {min [0, side * (1 / Order's Price - 1 / mark price)]}) / adjust_coef
*If you have set a trigger price, the mark price should be replaced by the trigger price.
*Currently, the adjust_coe has defaulted to 0.9. It will be adjusted according to market conditions.

7. Total Investment

*Cannot be modified after placing the grid order
Total investment = Initial margin * leverage
After setting the leverage:
  • minimum Initial_value = sum (price * minQty)
  • maximum Initial_value = margin * leverage

8. Qty/Order

For USDⓈ-M Futures Grid, direction Neutral:
grid_qty = adjust_coef * initial_margin * leverage / sum (price)
For COIN-M Futures Grid, direction Neutral:
grid qty = adjust_coef * initial_margin * leverage / sum (1 / price)

9. Available Margin Balance

The margin balance of your USDⓈ-M or COIN-M Futures account.

10. Trigger_type: Last Price / Mark Price

*Optional, can be modified before the grid is triggered
1. Grid trigger type: When the last price or the market price you choose reaches the trigger price, the grid will start running.
2. Stop trigger type: When the last price or the market price reaches the top or bottom stop price, the grid will be stopped.

11. Trigger_price

*Optional, can be modified after placing the grid order
Your grid order will be triggered when the last price or the mark price rises above or falls below the trigger price you set.

12. Stop_upper_limit (Stop-loss top price) / Stop_lower_limit (Stop-loss bottom price)

*Optional, can be modified after placing the grid order
1. Stop_upper_limit
The stop-loss top price should be higher than the upper price, the last price, and the trigger price. When the latest market price reaches the Stop_upper_limit, the grid will stop working.
2. Stop_lower_limit
The stop-loss bottom price should be lower than the lower price, the last price, and the trigger price. When the latest market price reaches the Stop_lower_limit, the grid will stop working.

13. Cancel All Orders on Stop

*Optional, can be modified after placing the grid order
You can enable this function to automatically cancel all unfilled orders of the symbol when the grid stops.

14. Close All Positions on Stop

*Optional, can be modified after placing the grid order
You can enable this function to automatically close all open positions of the symbol at the market price when the grid stops.
*Please note that the above parameter setting suggestions are for reference only. Futures trading carries a substantial risk and the possibility of both significant profits and losses. Past gains are not indicative of future returns. All of your margin balance could be liquidated in the event of extreme price movement. Binance shall not be liable for any of your losses.

How to calculate the current margin?

position_notional = Latest_Mark_Price * size
position_notional_value = abs (position notional)
present notional = max (abs (position_notional + open order's bid_notional), abs (position_notional - open order's ask_notional))
*Abs: absolute value
open order's ask_notional = askNotional
open order's bid_notional = bidNotional
  • Crossed margin:
Current margin = present notional / current leverage
  • Isolated margin:
Current margin = (present notional - position_notional_value) / leverage + isolatedWalletBalance

How to check my grid details?

Time
The time when the grid was created
Symbol
Click on the leverage next to the symbol to adjust the grid leverage
Initial Margin
Margin at the time of grid creation
Total Profit
Total profit = Grid Profit + Unrealized PnL
Notes:
1. If the [Close all positions on stop] function is enabled with open positions under the grid, all positions will be closed at market price after the grid stops. The PnL of the closing positions are not included in the grid profit.
2. Funding fees incurred when the strategy is working are not included in the grid profit.
Total Profit (%)
ROI = Total Profit / initial_margin * 100%
Realized profit
Realized profit and loss from grid trading is the cumulative profits of all completed orders.
For arithmetic grid, Total Profit = Number of Completed Orders * Profit/Grid - Total Commission
Unrealized PnL
Unrealized profit and loss on open orders calculated based on Mark Price / Last Price, and return on equity percentage
Duration
The time the grid has been in operation since the grid is created
Liq. Price
Please refer to the calculation of the liquidation price for USDⓈ-M Futures contracts and COIN-M Futures contracts.
Grid Status
  • New: The grid is created, but not triggered
  • Working: The grid is triggered
  • Adjust margin
Adjust margin is only available in the Isolated Margin Mode.
  • Grid Termination
You can click [End] under [Action] to stop the grid. You can also choose to cancel unfilled orders and close all positions manually or automatically after the grid is stopped.



When the [Cancel all orders on stop] function is enabled, the system will automatically cancel all unfilled orders of that symbol when the grid is stopped. When the [Close all positions on stop] function is enabled, the system will automatically close all open positions of the symbol at the market price when the grid is stopped.
  • Active Order
You can see all your open orders, including partially filled orders.
  • Completed orders
You can see a summary of all completed orders. Each transaction consists of a pair of corresponding buy and sell orders. Profits are calculated based on each pair of matched buy and sell orders.
Please note that the BNB commission fee is converted into margin assets using the real-time exchange rate at the time of the transaction.

How to check my grid history?

Go to the [History] tab to check your grid order history and view grid details.
Grids Status
Canceled: You manually terminated the grid
Expired: The grid was terminated due to the reasons below:
  • The order failed to place;
  • The grid strategy was manually terminated;
  • You manually placed or canceled an order, which caused the grid to stop;
  • The market price has reached the stop-loss price of the grid strategy;
  • The position has been liquidated;
  • The maximum number of open orders has been reached;
  • Insufficient margin account balance;
  • The order price is above the limit price;
  • The market is closed or paused;
  • A position failed to close or was unable to fill;
  • The maximum allowable notional value at the current leverage level has been exceeded.