Skip to content

How It Works

chrisleekr edited this page Apr 12, 2021 · 7 revisions

Trading Strategy

Buy Signal

The bot will continuously monitor the lowest value for the period of the candles. Once the current price reaches the lowest price, then the bot will place a STOP-LOSS-LIMIT order to buy. If the current price continuously falls, then the bot will cancel the previous order and re-place the new STOP-LOSS-LIMIT order with the new price.

  • The bot will not place a buy order if has enough coin (typically over $10 worth) to sell when reaches the trigger price for selling.

Buy Scenario

Let say, if the buy configurations are set as below:

  • Maximum purchase amount: $50
  • Trigger percentage: 1.005 (0.5%)
  • Stop price percentage: 1.01 (1.0%)
  • Limit price percentage: 1.011 (1.1%)

And the market is as below:

  • Current price: $101
  • Lowest price: $100
  • Trigger price: $100.5

Then the bot will not place an order because the trigger price ($100.5) is less than the current price ($101).

In the next tick, the market changes as below:

  • Current price: $100
  • Lowest price: $100
  • Trigger price: $100.5

The bot will place new STOP-LOSS-LIMIT order for buying because the current price ($100) is less than the trigger price ($100.5). For the simple calculation, I do not take an account for the commission. In real trading, the quantity may be different. The new buy order will be placed as below:

  • Stop price: $100 * 1.01 = $101
  • Limit price: $100 * 1.011 = $101.1
  • Quantity: 0.49

In the next tick, the market changes as below:

  • Current price: $99
  • Current limit price: $99 * 1.011 = 100.089
  • Open order stop price: $101

As the open order's stop price ($101) is higher than the current limit price ($100.089), the bot will cancel the open order and place new STOP-LOSS-LIMIT order as below:

  • Stop price: $99 * 1.01 = $99.99
  • Limit price: $99 * 1.011 = $100.089
  • Quantity: 0.49

If the price continuously falls, then the new buy order will be placed with the new price.

And if the market changes as below in the next tick:

  • Current price: $100

Then the current price reaches the stop price ($99.99); hence, the order will be executed with the limit price ($100.089).

Sell Signal

If there is enough balance for selling and the last buy price is recorded in the bot, then the bot will start monitoring the sell signal. Once the current price reaches the trigger price, then the bot will place a STOP-LOSS-LIMIT order to sell. If the current price continuously rises, then the bot will cancel the previous order and re-place the new STOP-LOSS-LIMIT order with the new price.

  • If the coin is worth less than typically $10 (minimum notional value), then the bot will remove the last buy price because Binance does not allow to place an order of less than $10.
  • If the bot does not have a record for the last buy price, the bot will not sell the coin.

Sell Scenario

Let say, if the sell configurations are set as below:

  • Trigger percentage: 1.05 (5.0%)
  • Stop price percentage: 0.98 (-2.0%)
  • Limit price percentage: 0.979 (-2.1%)

And the market is as below:

  • Coin owned: 0.5
  • Current price: $100
  • Last buy price: $100
  • Trigger price: $100 * 1.05 = $105

Then the bot will not place an order because the trigger price ($105) is higher than the current price ($100).

If the price is continuously falling, then the bot will keep monitoring until the price reaches the trigger price.

In the next tick, the market changes as below:

  • Current price: $105
  • Trigger price: $105

The bot will place new STOP-LOSS-LIMIT order for selling because the current price ($105) is higher or equal to the trigger price ($105). For the simple calculation, I do not take an account for the commission. In real trading, the quantity may be different. The new sell order will be placed as below:

  • Stop price: $105 * 0.98 = $102.9
  • Limit price: $105 * 0.979 = $102.795
  • Quantity: 0.5

In the next tick, the market changes as below:

  • Current price: $106
  • Current limit price: $103.774
  • Open order stop price: $102.29

As the open order's stop price ($102.29) is less than the current limit price ($103.774), the bot will cancel the open order and place new STOP-LOSS-LIMIT order as below:

  • Stop price: $106 * 0.98 = $103.88
  • Limit price: $106 * 0.979 = $103.774
  • Quantity: 0.5

If the price continuously rises, then the new sell order will be placed with the new price.

And if the market changes as below in the next tick:

  • Current price: $103

The current price reaches the stop price ($103.88); hence, the order will be executed with the limit price ($103.774).

Detail processes

This section is to describe how the bot is working in a detailed explanation for who can understand without understanding actual code.

Note that this document is valid from version 0.0.66 onwards.

The bot is consisting of two cronjobs that run every second (tick).

Trailing Trade Indicator

This job is in charge of getting the latest indicators and cache them for the job Trailing Trade. To avoid API limits, candles/open orders will retrieve for the specific symbol in each tick.

Steps

  1. Get global configuration
  2. Get the next symbol to process
  3. If the symbol is locked, it does not process, wait for the next tick
  4. Lock the symbol
  5. Get symbol configuration
  6. Get account information
  • Call Binance API /v3/account.
  • Save the account information to the cache
  1. Get indicators for the symbol
  • Call Binance API /v3/klines for the symbol
  • Retrieve candles based on the configuration. i.e. BTCUSDT, 30m, 100
  • Get the lowest price from the candles
  1. Get open orders for the symbol
  • Call Binance API /v3/openOrders for the symbol
  1. Save data to cache

Trailing Trade

TBD

Clone this wiki locally