1. Overview

The Crypto Spread Trader Bot, is an automated trading tool that allows you to profit from crypto currency markets’ inefficiencies. The main difference with any other automated bot, is that this one is not based on any indicators, but only on the price (order book). Is is a great tool either to run as fully automated for intermediate traders or as semi-automated for professional day traders looking for a high frequency edge to enhance their trading. The parameters are limited and gives a maximum of flexibility while still staying on a certain strategy. It is also a complete solution and unlike tools based on indicators, this one has a strategy taking into account all market moves: sideways, uptrend, downtrend.

You can use it for multiple tasks such as:

  • Spread Trading
  • Buy the dips / wicks
  • Cost Averaging
  • Scalping

If well configured, it can have a 100% success rate and scalp the market for a lot of small profits.

To use this tool properly you should be familiar with:

  • Bid / Ask & Spread
  • Order Book
  • Order types : Market & Limit
  • Support / Resistance (Optional)

2. Bot Usage, Limits and Pricing


2.1. Bot Usage & Pricing

Any new user has a free trial after which he can subscribe to one of our packages. The amount of bots you can create is limited according to your package. Bots can be executed 24/7 with no time restriction.

2.2. Order Replacement Rate Limits and API Usage

Each exchange have different limits. Some of them allow a very high speed order replacements and others have more restrictions. They are categorized in 2:

2.2.1 High Speed

Order replacement rate is limited to 4 per second for the following exchanges:

  • HitBTC

In case of spread trading on illiquid markets favor theses exchanges for fast order replacement edge. Your order will remain on top of the order book more easily.

2.2.2 Medium Speed

Order replacement rate is limited to 1 order every 30 seconds due to API restrictions on the following exchanges:

  • Binance

Theses exchanges are good to trade price moves. Low liquid markets are less well handled because of the low frequency order replacement. Avoid using keep on top of the order book feature with theses exchanges.


3. Configuration and Concepts


3.1. Setup Exchange Api Keys

The first step to start using the bot, is to configure your API keys. Make sure to DE ACTIVATE WITHDRAWAL on theses keys.

3.1.1. HitBTC

High speed order replacement is available for HitBTC: up to 4 replacements per second.

  1. On the top right of the screen click on the settings icon (gear icon).
  2. Then select the tab “Api Keys”
  3. Click on the button “New Api Key” 
  4. Copy the Secret and public keys in the corresponding fields on CryptoSpreadTrader, add a name then click “Save“.
    Be careful the secret key will be displayed only at the creation. If you lost it you will need to create another one.

  5. Allow the permissions “Order book, History, Trading balance“, “Place/cancel orders” and “Payment information” ONLY. (You will be requested to validate via Google Authenticator and email on each checkbox selection, make sur to keep your phone with you and check your emails.)

 

PS: Make sure to add some funds in your trading account.

  1. Click on Account section
  2. Send some funds to your HitBTC trading account

 

Api keys are set! You are now ready to configure your first bot!

 

3.1.2. Binance

Medium speed order replacement is available for Binance, the order replacement rate is limited to 1 every 2 seconds due to API restrictions.

  1. On the top right of the screen click on the profile icon, and select API Management.
  2. Type a name and click on “create” to create your API Key.
  3. You will get a popup. Open your mailbox and prepare you OTP token. Then click “Send Email”.
  4. You’ll have to type the code you received by email in less than 1 minute, in the first box and the OTP code in the second one. Then click submit.
  5. You can now copy the “API key” and “Api Secret” to the fields “Key” and “Secret” respectively in CryptoSpreadTrader’s new API key section.

3.2. Creating a bot

You can create a bot from 2 places :

  1. The sidebar
  2. By clicking “New Bot” on the dashboard

 

This will open the following popup.

You will need to set:

  • Pair: should be identical to the pair on the exchange. If the pair is not found you’ll get an error. (A common error is adding a slash. Should be BTCUSD NOT BTC/USD. Also some exchanges different names for example XBT instead of BTC on Kraken).
  • Name: should be unique to the specific pair.
  • API Key: the api key you previously created

Once you click on create, you will see a popup message en the top right of the screen with a success or a failure. In case of failure, please verify pair name, in most cases it is a badly formed pair.

The bot will now be visible on your dashboard. Click on the name to open the bot settings.


3.3. Bot Settings

You can Start / Stop the bot from the top bar.

The bot settings is divided into 3 blocks:

  • Green Block: Configuration for the first buy order. Only this configuration will be used it there is only 1 buy, then 1 sell. There is rarely more than 1 buy order in Uptrends & low volatile sideways market.
  • Red Block: Configuration is used if there is more than 1 buy order executed. Triggered when the market drops: the bot will buy more. This zone is sensible and will define the maximum drop you can handle and get out with a profit.
  • General Setting & Risk Calculation Block: Use this block to activate specific bot modes, and most importantly to know you maximum potential loss, required investment and where the orders will be placed.

 

3.3.1. Top bar

  1. Toggle to Start or Stop the bot. Please note that it can take up to 1 minute to start and up to 30 seconds to stop.
  2. API Key:  You can change the api key used by you bot here.
  3. Name: Give a name to your bot, it should be unique to the current pair. 

3.3.2. Green Block

Configuration for the first buy order. Only this configuration will be used it there is only 1 buy, then 1 sell. There is rarely more than 1 buy order in Uptrends & low volatile sideways market.

 

  1. Min / Max Quantity : Amount to be bought and sold in the sold currency (example in BCHBTC, amount will be in BCH). To limit the footprint, the bot will pick a random quantity between theses 2 values to generate the first order (SBO). The maximum size only applies to the first order (SBO) and is NOT the maximum size in case of multiple orders.
  2. Wait Period: This allows you to add a delay once a trade is closed before reopening another one. The value is in minutes. 
  3. 50 min drop %: The price will need to drop from that percentage in a maximum of 50 minutes to open a buy order. (The value is positive. Example 1% will correspond to a -1% drop) . High values will result in less trades, but better opportunities.
  4. Minimum Spread % (Advanced Option): The minimum spread condition in order to place a buy order. Does not apply to sell orders.
  5. Anti-spoof Spread Quantity (Advanced Option): If the top layers quantity in the order book are smaller than this value, it will be ignores and spread will be calculated without theses values. This prevents other bots to fake a small spread with very small orders.
  6. Show/Hide advanced Options: Show hide the Spread options (4 & 5).
  7. Take profit %: Take profit target in % from the buy price. This applies if there is only 1 buy order to sell. If more that 1 buy order has been executed, then we will use the Take Profit from the red block. Fees are not included in this value, make sure to add a value bigger than the fees.
  8. Update button: Will save the settings and update the calculation infos. (will also save elements from the red block).

 

3.3.3. Red Block

Configuration is used if there is more than 1 buy order executed. Triggered when the market drops: the bot will buy more. This zone is sensible and will define the maximum drop you can handle and get out with a profit.

  1. Buy drop %: Distance in % between each orders in case of a drop. This applies as from the second order when the first buy order was filled and not sold. To get the best value to this parameter, simply mesure the biggest drops on 1h or 4h charts and divide this value by the amount of orders you are ready to place, like this you will ensure to cover the complete drop range in case of severe trend reversal. Keep it mind that having too wide values might result in missing buy opportunities, and having too narrow values might result in severe drop downs, and getting stuck with you maximum amount of orders filled. Be cautious with this one.
  2. Quantity Multiplier: Each time the prices drop of “Buy drop %” from the previous filled buy price, we will multiply the previous buy order’s quantity by this value in order to buy more and lower the average buy price. We will start with the first order’s quantity. This is displayed in the “Estimated Entries table” in the “General Setting & Risk Calculation Block“.
  3. Max Orders: The maximum amount of layers of buy orders (including the first order) the bot should place in case of a drop. We usually recommend a value of 4 or 5. You can also create a custom strategy with more layers, but make sure that the total amount of cryptos to be bought in case of a drop is acceptable. This is displayed in the “estimated buy orders table” in the “General Setting & Risk Calculation Block“.
  4. Take profit %: In there is more than one filled buy order, then the bot will add this percentage to the average buy price of all open trades and sell when this target is reached. Fees are not included in this value, make sure to add a value bigger than the fees.
  5. Stoploss %: If the price drops more than this value from last entry point, then it will sell all the open trades at loss. (The value is positive. Example 15% will correspond to a -15% drop)
  6. Update button: Will save the settings and update the calculation infos. (will also save elements from the green block).

 

3.3.4. General Setting & Risk Calculation Block

Use this block to activate specific bot modes, and most importantly to know you maximum potential loss, required investment and where the orders will be placed.

      1. Buy only and Sell Only: Toggle on or another to respectively buy without selling or sell without buying. Activating both will result in doing nothing.
      2. Bid / Ask always on top: By default the system will place you bid and ask behind layers that have a smaller cumulative quantity than your orders. If you wish to always be on top no matter the quantity, activate theses options.
      3. Stop when all positions closed: Use this if you want the bot to finish it’s current trade then shutdown. The bot will continue running normally while you have an open trade (if the price drops, it will execute the necessary buys orders). Once everything is sold, it will stop.
      4. Max Loss: This is the maximum amount of “quote currency” you can loose if the stoploss is reached. Between the brakets you get the % it represents from the total amount invested if all orders are triggered.
      5. Max Investment: This is the maximum amount of “quote currency” you will need to execute all the buys if all the orders are filled. Make sure to have enough of the necessary currency so that you can complete all the orders. This estimation takes into account the lowered price of the potential entry points. 
      6. Account Balances: Your account balance on the exchange you connected to the bot (both available and reserved). This is updated every 30 minutes, so you might experience some delay.
      7. Estimated Entries Table: This table will give you a clear view of when the bot plans to execute a buy order.
        1. Drop: this is the % drop from the first entry price. You will note that the % is slightly lower than the Drop % on orders greater that the 2nd, this is because the Drop % is relative to the previous buy order and not the first one. A green tick means that this order is filled, the information will be recalculated based on the executed entry if any.
        2. Qty @ Price: this is the amount and at which price the buy order will be executed.
        3. Invested (Currency): This is the cumulated invested amount that will be effective on each layer. The value between the brackets is the current layer’s amount (non-cumulated).
        4. Breakeven: This is the breakeven price of all the executed orders at each layer. The “bounce” represents the % the price needs to bounce from the last buy price in order to reach the breakeven price.
        5. Take Profit: This is the take profit price of all the executed orders at each layer. The “bounce” represents the % the price needs to bounce from the last buy price in order to reach the take profit price. All the layers are considered as a “group” with an average buy price, and will be sold at the same time at take profit level.
        6. STOPLOSS: If the market drops to this price, then we will sell all the positions at loss in order to protect our capital.

3.4. A basic bot configuration example

IMPORTANT: Always take into account the maker fees. For example on HitBTC they are of 0.09% at this day (23/09/2020), so you need to take into account this fee both on buy and sell side: 0.09 x 2 => 0.18%. So any target lower than 0.18% in this example will result on a loss. Make sure to check the fees on you exchange’s account.

To ease your learning, we decided to share some demo configurations with minimal quantities so that you can try it with very minimal capital at risk. Please note that this is given as educational purposes, and even if until now theses configurations gave good results, this might change with time and is given with no warranty.

BCHBTC demo configuration

From the 14/08/2020 to the 23/09/2020 this bot has made 136 successful trades on HitBTC.

As an example, here is a basic bot configuration for BCHBTC pair. It does not trade the spread because the minimum spread is very small and the SBO profit target is higher than the spread. This bot trades the moves of the market and takes advantage of the price averaging (MBO strategy).

 

NWCBTC demo configuration

From the 12/08/2020 to the 28/11/2020 this bot has made 241 successful trades on HitBTC.

This bot is more focused on the spread, as you can see the minimum spread to trade is 1% which is high and the SBO target is a little lower with 0.9% which in theory allows the bot to sell almost immediately after buying.

 

BTCUSDT demo configuration

From the 17/11/2020 to the 28/11/2020 this bot has made 7 successful trades on Binance.

 

CELBTC demo configuration

From the 21/09/2020 to the 28/11/2020 this bot has made 50 successful trades on HitBTC.

 

YFIIBNB demo configuration

From the 10/07/2020 to the 28/11/2020 this bot has made 33 successful trades on Binance.


3.5. Trades

Each trade is a specific amount of cryptocurrency the bot will buy, it can be composed of one or many orders. For example the bot can set on order that will be filled immediately which will result in only one order to match the trade’s quantity, or the order might be partially filled many times which will result in multiple orders to complete only one trade.

You can force the closing of a trade by clicking on the red cross (N°10). Use this option if there is a mismatch between the exchange and your bot or if you simply want to cancel it. Keep in mind that is the trade buy side was filled or partially filled, it will not be sold if you forced it’s closure. You will have to do it manually on the exchange.

1- ID: Click on the id to filter the orders corresponding to this trade in the table below this one.

2- Buy Exec Qty: The bought quantity. If red, then the full quantity has not been matched yet, if green, then the buy side was completed.

3- Sell Exec Qty: The sold quantity. If red, then the full quantity has not been matched yet, if green, then the buy side was completed. The bot will try to sell as soon as possible, so sometimes you will see it in green because it has sold all the partially bought quantity, but the trade will remain open to close it’s buy side and trying to sell it afterwards.

4- AVG Buy Price: The average buy price of this trade.

5- AVG Sell Price: The average sell price of this trade.

6- Fee: The paid fee to the exchange (might display if amount is too small)

7- Net Profit: Net profit on the trade. When there are multiple trades (MBO) some will show a loss (earlier placed orders), but if you sum the total of the group trades, it will be a profit.

8- Group: This is a fingerprint of current MBO trades, all trades with the same group should be considered as one, they will have the same target, and their combination of profits will give you the trade’s profit. Hover on an active group to get the AVG Group’s Buy Price.

9- Live reload toggle and reload button: By live reload is on, which will update your data in live

10- Mark trade as closed: Use this option if there is a mismatch between the exchange and your bot or if you simply want to cancel it. Keep in mind that is the trade buy side was filled or partially filled, it will not be sold if you forced it’s closure. You will have to do it manually on the exchange.


3.6. Orders

This section will display only the filled and partially filled orders of the trades. You can filter the trades by clicking on the Trade ID on the Trade table or typing the trade id in the search box.

3.7. Logs

This section will allow you to see what your bot does in live. It should be updated at least every 10 seconds. In case of activation of the bot it can take up to 1 minute to start displaying data.

This is very useful to know which conditions are met or not and the target prices for sell orders.


4. Strategies

Even if this bot was made to execute a certain strategy, values can be modified in order to play on different aspects of the market and get more focus on some specific inefficiencies. It is important to understand each elements of the configuration in order to keep your risk low.

Trading is all about being consistant in time. Trying to hit big gains in a small amount of time will result in most cases of a huge losses at some point. This is why we recommend you always start with minimal values for at least a month, so that you can understand how it works and how will you react according to each market situation. If well configured, with wide move expectations, the bot should perform well in all situations, and often you will realize that if you are stuck in a position for some time, it will simply get back up as it always does. Limit your risk either by diversifying trading pairs, and / or keeping some spare currency to be able to react in case of unexpected action.


4.1. Stop Loss

The Crypto Spread Trader bot does not use any stop loss, the escape strategy is based on cost averaging in order to get out on the next bounce. It is very important that  Multiple Trade Profit Percent (MBO) x Max Open Trades = Maximum expected drop. If the price drop exceeds this expected value, then the bot will simply wait for the price to get back up again. To get this maximum expected drop simply mesure the past biggest drops, we advise you to keep at least one more order after that max drop. Keep in mind that markets can always do something unexpected. When estimating this maximum drop you are simply assessing that there is a very high probability that the market bounces back, but there still is a very small possibility that it goes lower. If well configured, a 100% success rate should be achieved. Keep in mind that trading is a marathon and not a race, you should be patient and have small targets to make consistant little wins. Trades that don’t close quickly might indicate a bad configuration or a bad selection of cryptocurrency.

If a crypto is delisted while in position, we would suggest you to take your lost and never trade this pair again.


4.2. SBO vs MBO

SBO stands for Single Buy Order and is controlled by the Green Block, is the strategy used when only 1 active trade is filled, usually on a sideways market with big spreads this strategy will apply mainly.

The buy orders will be triggered only if the following conditions apply:

  • Current Spread (less anti-spoof) >= Min Spread (Green Block) – Optional
  • Current price <= Highest close of 10 last candles on 5 min chart – 50 min drop % (Green Block)
  • Time since last closed trade >= Wait Period (Green Block)
  • Only 1 trade open at a time (cannot be cumulated)

The sell orders will be triggered if:

  • Current price >= Average Buy Price + Take Profit % (Green Block)

The quantity of the orders will be between Min and Max Order size. (Green Block)

 

MBO stands for Multiple Buy Orders and is controlled by the Red Block, is the strategy used when a sudden drop happens with an SBO trade not closed (sold). It was meant to be an escape strategy but can be used as a main strategy.

The buy orders will be triggered only if the following conditions apply:

  • Current price <= Last bought order price – Buy drop %

The sell orders will be triggered if:

  • Current price >= Average Buy Price of all buy orders + Take profit % (Red Block)

The quantity of the orders will amount of previous trade x Quantity Multiplier (Red Block)


4.3. How to configure a bot : understanding the probabilities

People uses many techniques in trading. While most of them lose money, a few of them stay consistent, with various methods. Some are very stressful and require a lot of dedication, while others a little less, but in all cases the main problem is being consistant in time so that the trader can catch the good trades. This bot allows you to have this consistency without needing to stay in front of the market all day long. By detaching the actual action of buying and selling, you can analyse the market with some hindsight.

About the SBO (Green Block)

In some specific markets (mostly not very liquid), you can see that there are wicks or noise (up / down movements) on a certain range of price. If this range is big enough why not exploiting this ?

About the MBO (Red Block)

Open any crypto chart on a 1H time frame and notice that :

  • Everytime the market goes down, it goes up at some point for at least 1/4 of its drop

Now start measuring the move amplitudes and see that there is some similarity between each drops. From there you cans expect that the probability of a bounce at some specific ranges are high.

It is as simple as that…


4.4. Configuration Ideas


4.4.1. Spread Trading

Focus on low liquid markets with wide spreads. Trigger the buys when spread is greater than you profit target so that the bot can sell quickly.

Check the trade history on your exchange and make sure there is enough liquidity for you order sizes and enough trades so that you get executed. There should be 1 market order executed at least every 5 minutes, otherwise there is a low change of getting executed.

Avoid getting blocked in MBO by setting very low profit targets on MBO (ex: 0.2 – 0.3%).

Try to execute most trades by setting a very low Buy Below % (ex: 0.5, or 0).


4.4.2. Buy the dips / wicks

Set high Buy Below % to get executed only on panic drops (ex: 1, 2, 3 … depending on the market usual drop sizes).

Adapt you next trade min drop percent so that you can take advantage if the wick / dip goes very low).

Set 4 or 5 Max Orders we strongly advise you always keep enough capital to set one addition order even if all orders are executed.

We don’t advise using a multiplier higher than 2, but it is up to you.

Set a high MBO profit target (ex: 1 to 5% according to the market’s previous behaviour)


4.4.3. High Layering Strategy

This is a hack of the actual bot, it was not made for this but you can still do it. You might want to buy as frequently as possible. In this case you can set a lot of orders, like for example 10 or 50 of max orders, with a very small multiplier (ex: 1.1 or 1.2) and very small order sizes.

The cost averaging will become stronger the lower the price goes. This strategy hasn’t been well tested yet, and is just given as an example of how you can tweak the bot to you desired strategy.


5. Troubleshooting the bot


5.1. My bot does not start

Please check that the log’s section Auto Update and Auto Scroll toggles are on.

Make sure you wait at least 1 minute before checking the log section. If you see no message saying that it has started, and no data is added to the log section. Please contact us.


5.2. My bot does not buy

Make sure the sell only mode is not active

Check the logs and wait for the handleBuyOrders log to appear. Check if all conditions are met. If you are not sure about the conditions please check section 4.2 of the documentation.

You should see a log like this:

handleBuyOrders – CONDITIONS => Delay: 116165 / 60 sec | Spread: 0.02 / 0.04 | Spread Real: 0.02 | Price: 0.020576 / 0.019497 (0.001079) | Open trades: 1 / 4 (0 unfilled)


5.3. My bot does not sell

Make sure buy only mode is not active.

Please check the handleSellOrders log in the Log section to see if the target price is met. You should see something like this :

handleSellOrders () trade_id: 1878 => Price: 0.020585 >= 0.020794 (false) | Open Sell Order: No

In this example 0.020585 is the current price and 0.020794 is the target price. False is the condition result, it needs to be true to be sold.

If you want to sell at a lower price you can change the profit target and the bot will take it into account within 10 seconds. You can set a negative number to sell at loss.


5.4. My bot crashed


5.4.1. What should I do ?

Check if all orders are closed directly on your exchange.

Check the error message in the logs. If insufficient funds, make sure you did not sell some of the crypto manually, if not contact us.

If any other error and the bot did not auto restart, then contact us.


5.4.2. My order is out of sync between the exchange and the bot.

  1. Stop the bot
  2. Close all remaining orders on the exchange
  3. Relaunch the bot

Please report this issue to us. It should not happen.


5.5. My bot sold a trade with a loss

Make sure that both SBO and MBO profits are greater than 2x the maker fee on your exchange. For example if the Maker fee is of 0.09 then profit targets should be greater that 0.18%. If not you will make a loss.

If targets are greater than fees and it is an MBO trade (multiple opened trades because of market drop) it is perfectly normal. There should be an ID in the Group column in the Trade table. If you sum up the profits and loss, you should get a positive value.