Skip to main content

Grid for Spot trading

tested_in type_autoconfig developer

date_of_upload date_of_edit


Update 03/18/2021: spotGrid is now natively available in Gunbot (from v21.6.2 preview). Use this autoconfig version if you need custom dca levels and amounts

Update 10/29/2020: add video instructions to import this bundle using Gunbot GUI

Update 10/16/2022: add config bundle with 10 preset BNB pairs on binance (courtesy of @coronabob)

Update 10/15/2020: fix problem with compounding trading limit

Grid for Spot trading + compounding

This config bundle is an application of the "advanced DCA" setup shared earlier on the marketplace, combined with dynamic trailing ranges and a compounding trading limit. The included strategy settings should easily survive / trade profitably on small to medium ranges. Time will tell about large ranges :)

Typical trades for this setup includes

  • Ready made config bundle for 9 relatively high volume BTC pairs on Binance, with compounding
  • Ready made config bundle for a single USDT-BTC pair on Binance, with compounding
  • Default pair settings and strategy for usage on other exchanges.


  • "Always in a position" strategy, emulating a "market maker grid" strategy
  • 20 configurable DCA levels, based on support/resistance levels
  • dynamic trailing ranges that work, no more endless trailing with ranges that are just too big
  • trading limit compounding (on supported exchanges)

Tested on

  • v20.2.6
  • should stay working in future versions unless major changes happen to how "double up" works in Gunbot


  • This probably won't work great with really tiny buydown percentages, it could happen that multiple orders get counted as a single DCA round
  • I've only tested this setup with market orders. Although the setup tries to identify open limit orders and wait for them to fill, unexpected behavior might occur

Setup instructions

If you use one of the ready made bundles, you can just add your gunthy wallet address and exchange keys.

Video instructions

Using the settings import tool in the Gunbot interface (from v20 stable):

If you want more control, follow these steps:

  1. Add AutoConfig job Use the included autoconfig.json file if you don't use other jobs. If you have existing jobs in autoconfig.json, add both included jobs to your config.
  2. Set exchange Change the exchange in the job to the exchange name you want to use it on. By default it is set to "binance". Make sure to change every single occurence of the exchange name.
  3. Add strategy to config Add the strategy to your config.js file.
  4. Make sure each pair gets the same set of overrides Find the default overrides in the building blocks folder.
  5. Clean your account Make sure you only own base balance on the pairs you are planning to use this on.
  6. Done! No need to change anything else in the autoconfig job, All DCA settings are controlled with pair overrides

If you want to use it on multiple exchanges, add the job once for each exchange and give it a unique job name each time.

The full instructions for the DCA job are included as a separate text file.

How to change DCA buydowns

You can set different buydown levels for each DCA round, to do that change the line for the appropriate DCA round in the pair overrides. These overrides look like:

"AC_DCA_BUYDOWN_R1": " (((data.pair.R1 - data.pair.S1) / data.pair.Bid) * 100) * 0.18",

What this means is:

  • R1 stands for DCA round 1
  • 0.18 means: set DCA buydown to 18% of the distance between first support and first resistance levels. A value of 0.5 would set buydown right on the next support.

Using compounding

On supported exchanges you can use compounding, for example on Binance this works, on Nash it doesnt. You can check if it would work by searching for "globaltotalholding" in a pairs json state file. If it has a value above 0, it should work.

Compounding works with this line in the second job in autoconfig.json:

"TRADING_LIMIT": " Math.max(parseFloat(this.pair.globaltotalholding) / 150, 0.0014)"

What this means is

  • set trading limit to 1/150th of the total btc equivalent wallet balance, or set 0.0014 at minimum
  • 1/150th is just an example that should work well for the binance btc config. Of course you can set any value you want.

If you trade USDT pairs, use "globaltotalholdingUSD" instead, which is the USD equivalent value of your total spot wallet balance. Set it like this in the autoconfig job (with a minimum trading limit of 14 USDT):

"TRADING_LIMIT": " Math.max(parseFloat(this.pair.globaltotalholdingUSD) / 150, 14)"

Disclaimer It's not feasible for a free config example to test all possible things that could go wrong. Use with caution!

Enjoy! I’d appreciate it if you do not contact me through personal messages about this free config example. Thanks!