STRATEGIES

Application

The strategies are designed to separately fine-tune the parameters for different kinds of trading signals.

Important! This section applies to advanced settings. All the parameters can be changed with any accuracy, in any range. The bot does not check the “adequacy” of the values. We do not support the adjustment and operation of strategies, please turn them on only if you are sure in what you are doing.

To get acquainted with a prefabricated file with test strategies for Binance's Spot market can be downloaded here: data.zip

Unpack the data folder from downloaded zip to bot’s folder. ATTENTION! This operation must be performed with the bot turned off and it completely remove all previous strategies you had filled. Make a backup copy of the data folder before copying.

Important! Strategies are meant for fine tuning the bot's interaction with signals. This section covers advanced settings. All highlighted parameters can be modified to any value within any range. The bot does not check the "relevance" of the set parameters. Enable strategies only if you are sure you know what you are doing. You can always test your strategies in the "Demo" mode, but they will not perform as precise as they would if using a real account.


We do not offer any support for tuning your strategies. If you believe your strategy is not performing the way you were expecting it to, you should check it on your own and do your own research. Open the Settings, go to Special and enable Extended Debug Mode, then open any trading chart, at the top you will see a couple of rows with all the information about the coin you are viewing, you can there see the actual values for your strategies — this is the only viable way of checking what is actually happening. Nobody can tell you more by just viewing your screenshot — it is a question of mathematics and actual values.

To check why a strategy is not getting executed based on the set filters, enable the "Display the strategies that do not meet any of the filter criteria" (can be enabled through the Menu or in the Strategy window). Open any trading pair chart and you will notice a list of all strategies highlighting the reason why a certain strategy did not execut on the specified trading pair at the specified moment in time

The strategy settings window

The strategies begin to work after you tick the checkboxes for needed ones and click “Start Selected” (except for strategies for manual trading). At the same time in the main window on the button “strategy” lights up a light bulb. Strategies related to the signals in Telegram begin work immediately. To start strategies related to auto-detect, you must also enable the “Auto Detect” button.

Priorities for applying settings:

Bot’s main settings, “Risk Limit” group are adding to strategy filters (including global coins black list)Autodetection: if there is at least 1 strategy for a certain type of signals, then it is used instead of the general settings. If several strategies are specified for one type of signals, then the first in the list matching the conditions (white list, black list, daily volume limits) is used.

Telegram:

if there are strategies for the signal’s channel and signal’s key (read below about key), first in the list matching both channel and key will be used.

If there are NO strategies matching both channel and key, then the first strategy with an empty key matching the channel will be used

If there are NO strategies matching the channel, then general settings will be used.

Telegram strategies logic changed in v. 3.46:

Telegram strategies work only if the checkbox “Settings -> Autobuy -> Advanced filter” is set.

Telegram strategies work independently of the checkbox ” “Settings -> Autobuy -> Autobuy from Telegram” (you control a strategy autobuy option with the strategy itself)

Telegram strategies work independently of channels selection (in Settings -> Telegram) (you control the strategy channel by the strategy itself)

If there is no strategies matching the channel and the coin from a signal, then checkbox ” “Settings -> Autobuy -> Autobuy from Telegram” will manage whether or not the bot should open markets chart for the coin and buy this coin

Creation and editing:

To create a new strategy, click “Add New”. Fill the name, save. Select the signal type from the drop-down list, fill in the parameters. Selection of All strategies in the strategy editor by CTRL-A. ATTENTION: Before editing your strategies, make sure you stop them first if they were started!

The filled strategy can be copied to the clipboard to send to a friend (in plain text format). To insert received text, select the text with the strategy, copy it to the clipboard, click the “Paste” button in the bot.

Automatic trading server setting recommendations (updated 26.10.2020)

1) Menu – System Settings – check VDS box. We highly recommend you do so, this option helps save server resources. Less RAM and CPU power is wasted on storing and sorting graphs and more resources are dedicated to the proper functioning of algorithms

2) Turn Off Windows auto-update and Defender! Otherwise the system may reboot and leave open orders on the exchange.

3) Don't forget to turn off the "automatic switch to summer time" on your VPS, or, even better, set the time zone to "(UTC) time format UTC" .

4) When using MoonShots with a small price interval (up to 0.5% difference between MshotPriceMin and MshotPrice) we recommend using the MShotAddDistance = 50 parameter as well as MShotUsePrice = Trade. In this case, the prices for replacing an order will be the one used in the last transaction and the bot will replace the orders considerably faster. This is especially useful when trading futures.

5) When using strategies aimed at high frequency trading (MoonShots with short time intervals, strikes, Drops with small delta) it is advised to use positive values for the HFT parameter (an integer number).

Here’s how it works:

The value of HFT determines the timeframe in milliseconds, during which the request to place an order (sent to the exchange) is valid. If 0, then the parameter isn’t used (the order is valid until execution or cancellation).

Why this is needed:

if, while the bot is working on a VPS the ping has increased, the command for placing an order on Binance will reach the exchange slower. If a small timeframe is set, such an order will not be accepted by Binance. This will allow avoiding a situation in which an order is placed “too late” and the trade takes placed under changed market conditions.

On Vultr with a ping of 10-20 you can set a HFT = 100. If the orders won’t be accepted you can try 200-300.

If an order with the HFT parameter is not accepted, the bot will send a notification in Telegram. You can adjust the frequency of such notification in Settings -> Special (default value is not more than once a minute)

6) “Settings – Autostart”. It is mandatory that you turn on the “Autostop on API errors” option, set the number of errors to 3 or 4. Set the Restart not sooner than after 20 minutes.

7) We also recommend using a ping stop with a ping threshold of 100 and more

8) Set up the auto-login in windows (Menu – System Settings, insert your login and password for your Windows account and click the “Auto login” button).If you have not yet added the bot to Autostart, click the “Autostart” button in the same menu.

To check all these settings, restart your server (hot restart through the Vultr control panel) – MoonBot must start and resume operation automatically

These specifics are described on the "Binance Futures" module page, study these specifics and all recommendations carefully.

Parameters Meaning

Main:

StrategyName: Strategy name (each strategy must have a unique name)

Comment: Comment (defined by the user)

SignalType: Strategy type selector

ChannelName: Select the Telegram channel from the list of specified in the main settings

ChannelKey: Telegram signal type. for our premium channel its moon_1.. moon_20, for other channels its the keyword you use in Telegram signals filter (like “buy”, “news”, etc)

AcceptCommands (Telegram strategies only): Should the strategy accept Trust Management commands

SilentNoCharts: Do not open the market chart on signal/detect

ReportToTelegram: Send detected signal to your remote control channel (not executed orders report, but the signal itself like “#bnb drop detected”)

EmulatorMode: Turn ON the emulation of trades. Real trades on this strategy will not happen if selected.

Alarm settings on signal detection:

SoundAlert: Play sound alarm and show a button with the market name above the charts workspace for fast chart access (YESNO)

SoundKind: Choose from predefined sounds.

KeepAlert: How long to keep the market alert button, seconds

DebugLog: (For MoonStrike and Liquidations strategies) Generating more information about the reasons why strategies have triggered or have not triggered causes the log to be clogged with extra information.

IndependentSignals: If NO, then the logic is as follows: the strategies are checked one by one on the list, after finding the first one that fits the conditions of detection, a signal is given, other strategies are not checked (this logic worked all the time until current version). If YES, then all strategies in a row on the list are signaled, up to the first strategy with this option unchecked (the following strategies do not use this option: MoonShot, PumpDetection, UDP, Combo, Manual, TopMarket, the following strategies always have this option enabled: NewListing, EMA, Spread, MoonHook, Activity).

User Interface

DontWriteLog: (YES/NO) If YES, do not log the orders of this strategy (can be checked only in the emulator mode of the strategy)

DontKeepOrdersOnChart: (YES/NO) If YES, delete orders of this strategy from the chart if the Buy is canceled (not executed) (the checkbox is available only in the emulator mode of the strategy)

UseCustomColors: (YES/NO) If YES, use the 2 parameters below

OrderLineKind: Type of lines (solid/ dashed)

SellOrderColor: colour of the sell order

Filters

IgnoreFilters: Ignore all filters except white and black lists and OnlyNewListing. The "do not buy" options from the general settings are also ignored (except for the blacklist).

CoinsWhiteList: Whitelist of coins (if empty, not used). If the list is specified, then the strategy analyzes ONLY the specified list of coins. Should be separated by commas, with no spaces.

CoinsBlackList: Black list of coins (if empty, not used). The strategy will not analyze these coins. Should be separated by commas, with no spaces.

LeveragedTokens: Only for the spot market, allow trading UP and DOWN coins (turned off by default)

MinLeverage: filter has been added to the strategy: the min. leverage to woth on a market. Ignored when the "Ignore filters" option turned on. Default value is 1, which means that any leverage is accepted.

CustomEMA: This parameter is part of the Extension Package for auto-trading, the description to it can be read there. Custom EMA filter is excluded from the "CheckAfterBuy" checking in all strategies except MoonShot.

OnlyNewListing: the time in seconds during which the strategy will work on listings. If 0, ignored. The IgnoreFilters option does not affect this setting.

MaxLatency: Stops trading based on this strategy if latency exceeds a set value (by default = 0, not applied)

MinVolume: The Minimum Daily Volume below which not to take coins into consideration (specified in BTC, ETH, BNB, USDT, PAX, TUSD, USDC or USDS depending on the selected pair), (updated every 5-10 minutes). You can view the daily and hourly volumes of any coin by clicking the “Show Markets” button.

MaxVolume: The Maximum Daily Volume above which not to take coins into consideration (updated every 5-10 minutes).

MinHourlyVolume: The Minimum Hourly Volume below which not to take coins into consideration (updated every 5-10 minutes).

MaxHourlyVolume: The Maximum Hourly Volume above which not to take coins into consideration (updated every 5-10 minutes).

MinHourlyVolFast: The Minimum hourly volume with fast update by trades. By default 0 - do not check.

MaxHourlyVolFast: The Maximum hourly volume with fast update by trades. By default 0 - do not check.

MinuteVolDeltaMin: Minute delta of the volume, no more than (if 0 — not used). Calculated as the ratio of the volume for the last minute to average minute volume over the last 3 hours. A value of 1 means that the current volume is equal to the average.

MinuteVolDeltaMax: Minute delta of the volume, not less than (if 0 — not used). Calculated as the ratio of the volume for the last minute to average minute volume over the last 3 hours. A value of 1 means that the current volume is equal to the average.

PenaltyTime: During this period, specified in seconds, the strategy will not operate on a market which gave 3 negative trades in a row and on a market where you set up or cancel order manually.

TradePenaltyTime: Time in seconds during which the strategy will not work for the coin on which the trade was closed in minus. Clarification: if the trade was at a loss (any strategy, including manual trading), the strategies that use TradePenaltyTime not equal to 0, won't work on that coin for the duration of seconds set in TradePenaltyTime.

Delta_3h_Min: The Minimum value of the last 3 hours Delta (in %), below which the bot does not consider the coin. Delta is considered as the difference between the minimum and the maximum prices within the specified period.

Delta_3h_Max: The Maximum value of the last 3 hours Delta (in %) above which the bot does not consider the coin. 

Delta2_Type: Choose additional delta for filter test: 1 hours, 2 hours, 30 мин, 15 min, 5min, 1min, Pump5m, Pump1h, Dump1h. (Pump5m delta is diff. between 5-min old price and max, price during last 5 minutes, %. Use to avoid dumps after flash pumps)

Delta_24h_Min: The Minimum Delta value for the last 24 hours (in %), below which the bot does not consider the coin.

Delta_24h_Max: The Maximum Delta value for the last 24 hours (in %) above which the bot does not consider the coin.

Delta2_Min: The minimum value of the add. Delta (not less than, in %).

Delta2_Max: The maximum value of the add. Delta (not greater than, in %).Delta_BTC_Min: BTC minimum hourly rate change (%), not less than. Calculated as the difference between the average price for the last hour and the current price. Сan be negative.

Delta_BTC_Max: BTC maximum hourly rate change (in %), not more than.

Delta_BTC_24_Min: BTC minimum daily rate change (in %). Calculated as the difference between the average price for the last hour and the current price. Сan be negative.

Delta_BTC_24_Max: BTC maximum daily rate change (in %). Delta_Market_Min: The average of all hourly deltas across all altcoins, not less than (in %). Calculated as the difference between the average price for the last hour and the current price, averaged over all pairs. Can be negative.

Delta_Market_Max: The average of all hourly deltas across all altcoins, no more than (in %). 

Delta_Market_24_Min: The average of all daily deltas across all altcoins, not less than (in %).

Delta_Market_24_Max: The average of all daily deltas across all altcoins, no more than (in %).

Delta_BTC_5m_Min: Minimal BTC price change over the last 5 minutes (in percent), calculated as the difference (in percent) between the minimum and maximum price over the last 5 minutes and is always a positive value.

Delta_BTC_5m_Max: Maximum BTC price change over the last 5 minutes (in percent), calculated as the difference (in percent) between the minimum and maximum price over the last 5 minutes and is always a positive value.

Delta_BTC_1m_Min: Minimal BTC price change over the last 1 minutes (in percent), calculated as the difference (in percent) between the minimum and maximum price over the last 1 minutes and is always a positive value.

Delta_BTC_1m_Max: Maximum BTC price change over the last 1 minutes (in percent), calculated as the difference (in percent) between the minimum and maximum price over the last 1 minutes and is always a positive value.

UseBV_SV_Filter: This is the filter of the ratio of volumes of purchases to volumes of sales. If the filter is included (Yes), the strategy will work using the BV_SV Stop definitions (BV_SV_Kind; BV_SV_TradesN)

BV_SV_FilterRatio: The value of the Buy Volume to Sell Volume ratio in a given time N (or for a predetermined number of past transactions) below which autobuy is not performed.  Example: for a given N = 60 minutes and FilterRatio = 2 coin will pass through the filter only if for the last hour bought coins volume is at least 2 times more than was sold (if sold in an hour on a total of 1 Btc, then bought should at least 2 Btc) .

NextDetectPenalty: Time, in seconds, during which the strategy will not work again after a detect or signal of the same coin. (min. time between 2 detections in a row)

GlobalDetectPenalty: the total penalty on the coin for strategies of all types in seconds, that is, when one strategy is triggered on a given coin, the others will not work for the specified time. If 0, the parameter is ignored.

GlobalFilterPenalty: Time, in seconds, during which the strategy will not work again after it has not passed via any of the filters above (if 0, the parameter is ignored).

MoonIntRiskLevel: Coins that are deemed unsolicited by users at the moment are posted on the @MoonInt channel, indicating the risk level between 1 and 3 *CR* This is the risk level below which the emergency signals are ignored by this strategy. *CR* If 3 is set, only the most dangerous signals will be taken into account, if 4, then none will be taken into account. For the function to work, it is necessary to connect the bot to Telegram.

MoonIntStopLevel: Temporary strategy stop by signals from @MoonInt channel. In contrast to MoonIntRiskLevel, it stops the strategy from working with all coins at once. If you set it to 3, only the most dangerous signals will be taken into account. If you set it to 4 (the default value), then no signals will be taken into account. For the feature to work, the bot must be connected to Telegram.

DeltaSwitch: If a strategy starts to work with a coin under specified delta range (from X to Y), then it will stay on the coin until (X-DeltaSwitch to Y+DeltaSwitch) (currently makes sense only for MoonShot). Use it to make different strategies for different market conditions, i.e. 1 strategy for BTC delta from -1% to 0%, another strategy for BTC delta from 0% to 1%. If DeltaSwitch=0.2% then first strategy will stay on a coin up to 0.2% (0% + 0.2%)

PriceStepMin,PriceStepMax: price step as a percentage of current price (PriceStepMin=0 by default, PriceStepMax=0.5% by default to exclude “square” coins like HOT)

Example: the HOT coin (current price is 20 sat.) has 5% price step. The XVG coin (current price is 200sat) has 0.5% (so default PriceStepMax filters out coins under 200sat)

Actual coins price steps you can see in the coins table, the PumpQ column (“Show Markets” button)

NOTE: if you want your existing strategies to work with such coins, increase the default PriceStepMax!

UseBTCPriceStep: chosing the market for price step calculations. If Yes, the price step is calculated by actual pair, otherwise by corresponding BTC market. Example: USDT-HOT has actual price step 0.02%, while BTC-HOT step is 14%. Using new parameter HOT can be excluded by price step filter (0..1%)

SamePosition: (Only for Binance Futures) Place orders only in the direction of the open position.

MarkPriceMin, MarkPriceMax: (Only for Binance Futures) The MarkPrice filter is designed to avoid opening a position too far away from the mark price, which could lead to instant liquidation. The filter works with the MarkPrice delta, which is the percentile difference between the Market Price and the Mark Price. If the MarkPrice is above the market price, the difference will be negative and if it’s below the market price, the difference will be positive. The filter is set with values from and to (MarkPriceMin, MarkPriceMax).

Example: MarkPriceMin=0 MarkPriceMax=1 – will choose all the coins where the MarkPrice is moved to the opposite side from the order by no more than 1%. (therefore, if mark price is 1% above the market price, no short orders will be placed; if the mark price is 1% below the market price, no long orders will be placed; in other cases, both short and long orders will be placed)

MaxPosition: The max value of currently opened position. The position is calculated as sum of all sell and buy orders on this market.

CheckAfterBuy: whether to check filters after buy order is set (If NO, filters are checked only once when a signal is detected; If YES, filters are checked continuously until buy order is filled or canceled).

BinancePriceBug: the value by which the price should lag, in percent, for the trading to stop (if 0 — not used).

TotalLoss: The strategy stops working when the total minus exceeds the set value (positive number). The minus is counted by the total settings from the AutoStart tab for the set time for the whole report.

SessionProfitMin, SessionProfitMax: Session profit From SessionProfitMin To SessionProfitMax defines the strategy working diapason. Zero value means the parameter is ignored. You can setup session autoreset in the main settings - the AutoStart tab.

Triggers

TriggerKey: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerKeyBuy: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerKeyProfit: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerKeyLoss: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

ActiveTrigger: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

ClearTriggersBelow: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

ClearTriggersAbove: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

ClearTriggerKeys: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerAllMarkets: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerByKey: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerByAllKeys: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerSeconds: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerKeysBL: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerSecondsBL: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SellByTriggerBL: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

CancelByTriggerBL: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerKeyProfit: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerKeyLoss: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

ActiveTrigger: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerAllMarkets: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerByKey: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerSeconds: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

TriggerKeysBL: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

Session

IgnoreSession: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionStratMax: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionStratIncreaseMax: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionStratMin: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionStratReduceMin: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionResetOnMinus: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionPenaltyTime: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionPlusCount: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionMinusCount: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionIncreaseOrder: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionIncreaseOrderMax: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionReduceOrder: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionReduceOrderMin: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

SessionResetTime: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

Buy conditions:

AutoBuy: Autobuy detected coin. If YES, then place an order to buy at the parameters below. If NO, the strategy will give the signal, but the purchase will not be made, it is useful when you use the strategy as an assistant in the choice of coin for manual trading. The strategy is simply to signal you about interesting situations on the market, and you yourself will decide to open a position.

BuyDelay: delay for buy orders in milliseconds (0 - no delay, max 3000ms).

Short: Open short orders instead of long. To place a short order you must own the "Binance Futures" module, the specifics of setting up short strategies on Futures are also described there.

HFT:  (integer) Determines the timeframe in milliseconds, during which the request to place an order (sent to the exchange) is valid. If 0 then not used.

MaxActiveOrders: Max active orders for this particular strategy on different coins. If exceeded, autobuy will not be performed until some orders are filled or cancelled, (does not apply to repeated orders of Moonshots with the MShotRepeatAfterBuy option. Repeated orders will be placed excluding MaxActiveOrders).

MaxMarkets: max. number of markets where the strategy works simultaneously (except for strikes).

AutoCancelBuy: Auto cancellation of buy order after the specified time, in seconds. If 0, there is no cancellation.

AutoCancelLowerBuy: (Telegram only) Auto cancellation of buy order after the specified time, in seconds, if the lower purchase price signal was used.

BuyType: Buy - limit order placement,

BuyLimit - delayed order placement under the current price, after the trigger price is reached a limit order will be placed slightly higher (or lower respectively) by the size of the spread in PendingOrderSpread,

BuyStop - delayed order placement above the current price, after the trigger price is reached a limit order will be placed slightly higher (or lower respectively) by the size of the spread in PendingOrderSpread.

PendingOrderSpread: the spread size for placing a limit order, can take negative values; if the limit order is not executed within 3 seconds, it gets cancelled.

OrderSize: Specify a fixed ordersize, in the base currency (BTC, ETH, USDT). If 0, the value of the general settings will be used(main window).

buyPrice: The purchase price, (in %) from the price at the time of the strategy detect or from the price 30 seconds ago(next parameter).

Use30SecOldASK: If YES, then the bot will use [30-sec old ASK price + buyPrice] for the buy order, If NO, then [current ASK price + buyPrice]

TlgUseBuyDipWords: (Only for Telegram signals) If the signal contains stop-words to buy at a lower price (i.e. “buy dip”, “when dump”) and TlgUseBuyDipWords = YES, then a lower price will be used (look below).

TlgBuyDipPrice: (Only for Telegram signals) In the case above this price will be used (% to the current market price. use a negative value)

Delta Modifiers

BuyModifier: The coefficient of adding modifiers to the buy order price. Example: cumulative delta calculated by modifiers Add* is 5%. BuyModifier = -0.1. In this case the buy order will be set 0.5% lower. For clarity, try the parameters in the manual strategy

SellModifier: the price modifiers addition coeficient for Sell orders. Example: the total delta, according to the Add* modifier, equals 5%. SellModifier = 2. In this case the the Sell orders will be placed 1% higher.

DetectModifier: The coefficient of adding modifiers to the detection level. Example: cumulative delta calculated by modifiers Add* is 5%. DetectModifier = 0.1. A pump detect strategy configured to detect 2% pumps. In this case this strategy will detect only 2% + 5%*0.1 = 2.5% pumps

Add3hDelta: Modifiers of parameters based on deltas. Calculated as the sum of all modifiers multiplied by deltas (Sum [Pn * Dn] where Pn is the modifier specified in the strategy, Dn is the current delta). For clarity, try the parameters in the manual strategy

AddHourlyDelta: Modifiers of parameters based on deltas. Calculated as the sum of all modifiers multiplied by deltas (Sum [Pn * Dn] where Pn is the modifier specified in the strategy, Dn is the current delta). For clarity, try the parameters in the manual strategy

Add15minDelta: Modifiers of parameters based on deltas. Calculated as the sum of all modifiers multiplied by deltas (Sum [Pn * Dn] where Pn is the modifier specified in the strategy, Dn is the current delta). For clarity, try the parameters in the manual strategy

Add5minDelta: Modifiers of parameters based on deltas. Calculated as the sum of all modifiers multiplied by deltas (Sum [Pn * Dn] where Pn is the modifier specified in the strategy, Dn is the current delta). For clarity, try the parameters in the manual strategy

Add1minDelta: Modifiers of parameters based on deltas. Calculated as the sum of all modifiers multiplied by deltas (Sum [Pn * Dn] where Pn is the modifier specified in the strategy, Dn is the current delta). For clarity, try the parameters in the manual strategy

AddMarketDelta: Modifiers of parameters based on deltas. Calculated as the sum of all modifiers multiplied by deltas (Sum [Pn * Dn] where Pn is the modifier specified in the strategy, Dn is the current delta). For clarity, try the parameters in the manual strategy

AddBTCDelta: Modifiers of parameters based on deltas. Calculated as the sum of all modifiers multiplied by deltas (Sum [Pn * Dn] where Pn is the modifier specified in the strategy, Dn is the current delta). For clarity, try the parameters in the manual strategy

AddBTC5mDelta: Modifiers of parameters based on deltas. Calculated as the sum of all modifiers multiplied by deltas (Sum [Pn * Dn] where Pn is the modifier specified in the strategy, Dn is the current delta). For clarity, try the parameters in the manual strategy

AddBTC1mDelta: Modifiers of parameters based on deltas. Calculated as the sum of all modifiers multiplied by deltas (Sum [Pn * Dn] where Pn is the modifier specified in the strategy, Dn is the current delta). For clarity, try the parameters in the manual strategy

AddMarkDelta: Modifiers of parameters based on deltas. Calculated as the sum of all modifiers multiplied by deltas (Sum [Pn * Dn] where Pn is the modifier specified in the strategy, Dn is the current delta). For clarity, try the parameters in the manual strategy

AddPump1h: Modifiers of parameters based on deltas Pump1h

AddDump1h: Modifiers of parameters based on deltas Dump1h

AddPriceBug: Modifiers of parameters based on deltas PriceBug.

Multiple OrdersBuy

OrderCount: the number of orders (1 by default)

CheckFreeBalance: CheckFreeBalance: balance check for placement of a single order or a grid of orders, in case of insufficient balance, the orders are not placed

BuyPriceStep: price increment, in percentage points of the initial price (if less than zero, every next order will be placed lower, if greater than zero — higher)

BuyStepKind: Price step calculation method (Linear — linear progression or Exponential — geometric progression).

OrderSizeStep: order size change increment, in percentage points (0 — doesn't change the order size)

OrderSizeKind: a method for calculating a net of orders (Linear or Exponential (geometrical progression))

CancelBuyStep: buy order cancellation time increment when setting nets of orders (in seconds

JoinSellKey: a key for auto-joining sell orders (default is 0 — doesn't join). If any value is set, after purchase, the strategy will join all coins with another order that has the same key.

JoinPriceFixed: when joining, use the fixed sell price (SellPrice) from the strategy

IgnoreCancelBuy: ignore auto-cancel of a order net, if the first order from the net has executed

ATTENTION. When uniting sell orders, the newly created order will have all basic settings applied to it (stop, trailing, etc) during manual trading or the settings of the manual strategy if it is activated, i.e. a stoploss may appear even if you disabled it or manually changed it on the open orders. When uniting orders using a strategy, all parameters will be used based on the first strategy with the same key. Note that both manual and strategy orders may be united and take on the parameters from the first strategy in the list.

Important! Emulator orders, both enabled from the emulator menu or by checking the box in the strategy — CANNOT BE JOINED!

Sell Order

AutoSell: Place a sell order after buying. Default value is YES. Available on Spot market only if the ini file contains ExpertMode = 1.

SellPrice: Selling price (in %) from the purchase price.

Function “Lower Sell price on timer”:

PriceDownTimer: Timer function “to reduce the price” (if 0, disabled), defined in seconds. If not 0, then after the specified time sell order begins to decrease by the given parameters.

PriceDownDelay: Delayed price reducing steps (in seconds). After the purchase, we first try to sell at a specified price. When the time of PriceDownTimer triggers we reduce the price for the first time, then after PriceDownDelay we reduce the prices for the second time, again on the expiration PriceDownDelay we reduce the price for the third time, and so on.

PriceDownRelative: If NO then next parameter is a percentage of the absolute sell price. If YES, then a percentage of the difference between sell and buy price

PriceDownPercent: Lower sell order to this value each step.

Example: your initial sell is placed at 1000sat. PriceDownRelative=NO, PriceDownPercent=0.5%, PriceDownDelay=10s. In this case, every 10 seconds your sell will be lowered to (1000 – 0.5% = 5 sat): 995 sat, 990 sat, …

PriceDownAllowedDrop: Percentage of buy price to which the function is allowed to drop sell price to. If 0, then not lower than buy price. Can be negative.

UseScalpingMode: If YES, and if the sell price is set less than 1%, it will use the scalping mode in which the bot can increase the price up to 2% depending on the ASK orderbook. Some sort of function to place an order under the wall in the main settings.

SellByFilters: The time in seconds after purchase after which to sell when exiting the filter (0 - never).

SellByCustomEMA: A condition to sell, if the prices satisfy the EMA filter conditions (and more than SellByFilters sec have elapsed. If SellByFilters=0, condition is not considered). IMPORTANT! Unlike other filters, the sell is activated if the EMA filter conditions are fulfilled (and not vice versa). Example: SellByCustomEMA = "EMA(3,1) > 1%, will sell during growth when the growth over 3 seconds was more than 1%.

SellEMADelay: delay (seconds) before sell by EMA filter

SellEMACheckEnter: check the EMA filter before buy; if the condition is met, then do not buy (so that it does not sell immediately)

SellLevelDelay: The delay in seconds before a sell order is replaced to a set level. If 0, order is not moved.

SellLevelTime: Time (seconds) over which the maximum price (level) is counted to replace the sell order to this level plus SellLevelAdjust percent (can be negative, in which case the order will be set below the maximum level). If 0, the order is not moved.

SellLevelCount: How many times the order must be moved based on the SellLevel settings; the order will be moved after every SellLevelDelay seconds.

SellLevelAdjust: Correction percentage. Example: a coin bought at a price of 100, SellLevelDelay = 60 seconds, SellLevelTime = 3600 sec. (1 hour), SellLevelAdjust = -1. In this case, after 60 seconds after the purchase, the bot will count the maximum price over the last hour, if it equals to 120, the sell order will be moved to 120 - 1% = 118,8.

SellLevelRelative: move the sell by X% of the buy price relative to the high price (can be greater than 100%).

SellLevelAllowedDrop: The amount, in percentage of the buy, by which the “swap per level” function can lower the sell.

Stops

UseSignalStops: Only for Telegram signals. If a message with a signal contains stops and “autobuy settings -> advanced filter -> Use signals stops” is ON, then signals stops will be used. Otherwise, the strategy stops will be used.

UseStopLoss: Use stop loss or no, YES / NO.

FastStopLoss: faster stop on trades ("crosses"). Stops will react to spikes.

StopLossEMA: Use the average price for the stop loss. If 0 then not used. 3,5,10 – averaged over the last 3, 5.10 ticks. Better to use a value here, so that when a single spike down happens and breaks the stop loss will avoid activating Panic Sell.

StopLossDelay: Delay activation of stop-losses and trailing, from the time of purchase, in seconds. * CR * * Delay is sometimes useful to MoonShot strategy when we caught not a single shot, but a temporary wall, that will disappear soon.

StopLoss: Stop loss price in % from actual buy price (don’t forget to use negative value unless you need positive). This parameter and its derivatives are described in the basic configuration articles.

StopLossSpread: Spread for Stop Loss, % of current ASK price

AllowedDrop: Allowed level the bot can drop the price to after Stop Loss activation, % of buy price

UseSecondStop: Whether to use 2nd stop. The condition to use 2nd Stop: “If since TimeToSwitch2Stop seconds actual market Bid price is higher than PriceToSwitch (% of actual buy price), then switch to second Stop Loss”. Important: If the main stop has been already activated, then the 2nd stop won’t be applied!

TimeToSwitch2Stop: Time in seconds (since the buy order was filled) to switch to 2nd stop

PriceToSwitch2Stop: Percentage of the price change from actual buy price to switch to Stop2. can be negative

SecondStopLoss: The value of the second stop (in %) of the purchase price.

UseStopLoss3: Use 3rd stop loss with the activation timer, YES / NO. Works similarly to the second stop, it gives you another level, where you can put a stop to breakeven. Important: If the main stop has been already activated, then the 3d stop won’t be applied!

TimeToSwitchStop3: Time to activate 3d Stop, seconds

PriceToSwitchStop3: percentage of actual buy price to switch to Stop3

StopLoss3: Stop loss price in % of actual buy price (you may want to use positive If you expect high raise which might not happen)

AllowedDrop3: Allowed level the bot can drop price to on StopLoss3 activation, % of buy price. If the price drops further, upon reaching main Stop level the main AllowedDrop will be activated.

UseTrailing: Trailing use or not, YES / NO. Parameters trailing and its derivatives are described in the basic configuration articles.

TrailingPercent: Don’t forget to use the negative value

Trailing EMA (default is 0 – turned off): The number of ticks, for which the average peak price. (0 – disabled) This parameter is to avoid triggering with a sudden single spike up (say instantly by 10%), trailing will not rise up immediately, but will wait a few more ticks, to avoid false triggering due to correction.

TrailingSpread: Spread for Stop Loss, % of current ASK price

UseTakeProfit: Use take profit. If yes. trailing will be activated only when the current price is higher than TakeProfit + Trailing

TakeProfit: Value in % to the purchase price.

UseBV_SV_Stop: Use Stop by BV to SV (Buy volume to Sell volume) ratio for the last N trades or last N seconds * CR *. Important: Activating this setting, the strategy will also check on the condition of BV ratio to SV at the entrance of a coin. If the condition is satisfied, autobuy is not made! (Otherwise, it would immediately trigger the BVSV stop)

BV_SV_Kind: The method of calculating BV ratio to SV: for N transactions or N seconds.

BV_SV_TradesN: The number of transactions or seconds to calculate the BV ratio towards SV.

BV_SV_Ratio: The Ratio, If BV to SV is less then specified ratio, stop loss will be activated.

BV_SV_Reverse: If YES, the bv/sv exit is calculated based on the inverse ratio of sells to buys (i.e. exit when the price is moving in your direction).

BV_SV_TakeProfit: Include BV/SV only after reaching the specified price, (in %).

Drop Detection

Also described on the “Autodetection” page. This method is giving a signal on the price drop for a specified percentage. Using this strategy you can configure different bot behavior depending on the daily trading volume on the coin, on the specific coins listed in the whitelist, and adjust for the different levels of buy price, sell price and stops.

DropsMaxTime: Period to analyze, in seconds. Based on this parameter, all the parameters are estimated below. Example: set to 100 seconds, bot estimates price change in the last 100 seconds, ie, every new second(tick) is a new last 100 seconds interval.

DropsPriceMA: Interval to calculate Moving Average. The bot is getting 2-seconds price ticks, so for example If you set this to 10 seconds, then every 5 prices will be averaged. The bot then takes maximum average price and compares it to the last price. If you do not want to average prices you can set this parameter to less than 2.

DropsLastPriceMA: Ticks to calculate last price average value. If you set this to 1, then the last price will be taken as is. The more this value the less detection sensitivity for fast drops. If set to 0, then any sharp drop, bigger than the DropsPriceDelta value will trigger a detect.

DropsPriceDelta: Price drop during the analysis period, percentage. Is calculated as: (Highest price/ Lowest price - 1) * 100.

DropsPriceIsLow: If YES, then in addition to the above-described conditions, the current market price has to be the hourly low.

Example: If the current market price is 2% lower than the highest price, the strategy will be triggered (e.g.: the highest price was 102$, the current price is 100$. The drop is equal to (102/100 - 1) * 100 ) = 2%

Wall Detection

This method reveals coins with a large volume of buy orders for a long time (support). The example in Fig. below:

Configure parameters to specify a period to check how long the support was there; the bot checks it by 5-m candles. It recommended to set stoploss to a small level behind the wall, and to check manually news for the coin on twitter and so on. Usually, such walls followed by good news ensure that the coin is going to raise high.

Parameters

WallsMaxTime: Time to check the wall was there, seconds. The bot uses 5m candles to detect if the price had not dropped below the wall level.

WallsPriceDelta: Difference between minimum and maximum of 5m candles minimums. The objective is to determine how long the purchase wall is in place with a minimum of her movements.

WallBuyVolDeep: The distance between the price and wall inside the orderbook (in %). This parameter we specify within what distance from the current market price, we will check the presence of the volume of the wall.

WallBuyVolume: The volume of the tested walls in BTC (at least).

WallBuyVolToDailyVol: The volume of the wall is not less than the percentage of the volume of daily trades on the coin (in %). If the volume of the wall is 10BTC, and the daily trading volume is 100BTC, the strategy will work if the parameter is equal to 10/100 = 10% or less of it.

WallSellVolToBuy: Volume of the sell wall in % to buy wall. Its volume should not exceed X% of the volume of the buy wall.

WallSellVolDeep: How deep to look for sell orders in % to the current price

Example of the Walls strategy for Bittrex: copy the text below and paste it to the bot (Strategies form, the button “paste”)

##Begin_Strategy

Active=-1

StrategyName=Walls Test

Comment=

SignalType=WallsDetection

ChannelName=

ChannelKey=

SilentNoCharts=NO

ReportToTelegram=YES

CoinsWhiteList=

CoinsBlackList=TRX,NBT

MinVolume=10

MaxVolume=500

AutoBuy=NO

MaxActiveOrders=10

AutoCancelBuy=180

BuyType=Buy

OrderSize=0.00000000

buyPrice=-3.00000000

SellPrice=4.00000000

UseStopLoss=NO

StopLoss=1.00000000

PanicSellSpread=0.10000000

AllowedDrop=0.00000000

UseTrailing=YES

TrailingPersent=-1.00000000

UseTakeProfit=YES

TakeProfit=2.50000000

DropsMaxTime=600

DropsPriceMA=1

DropsLastPriceMA=1

DropsPriceDelta=1.00000000

DropsPriceIsLow=NO

WallsMaxTime=3600

WallsPriceDelta=4.00000000

WallBuyVolDeep=2.00000000

WallBuyVolume=10

WallBuyVolToDailyVol=10.00000000

WallSellVolToBuy=75.00000000

WallSellVolDeep=15.00000000

##End_Strategy#

Pump Detection (Binance Only)

Fast detecting of executed buy orders (market history). Example: (false detection by the way, look warning below)

The thin green candle is a pack of buy orders executed in a second. (Actually, that was 1 buyer which bought plenty of MANA for 11 BTC).

Parameters

PumpPriceInterval: Interval to measure price raise, choose from: 60s, 30s, 15s, 4s

PumpPriceRaise: Price raised during last PumpPriceInterval seconds, %

PumpBuysPerSec: The number of purchases per second (green crosses on the graph). EMA (Executed buy orders)

PumpVolPerSec: Purchase volume per second, in BTC (the lower the value, the greater the likelihood of false detects)(Buy volume), in BTC

PumpBuyersPerSecMin: The number of customers in the given interval (at least). For different scenarios, this value might be different. Some pumps should be detected, making sure several people are already in or vice versa, you can detect only actions form a single person. (if 0 – then ignored)

PumpBuyersPerSecMax: Buyers count in the specified interval, not more then (If 0, then ignored)

PumpVolEMA: The interval for calculating the volume of purchases EMA (default is 2 seconds, may be a fraction), i.e. the averaging interval of volume purchases.

PumpBuyersInterval: Interval to calculate Buyers count (1 second by default)

PumpMoveTimer: Time to move the sell order (If 0 then never). The order is moved only once.

PumpMovePercent: Percentage of [distance from peak price to buy price], to which move the sell order. Example: PumpMoveTimer=5sec, PumpMovePercent=50%. The bot has detected a pump, bought a coin at 1000 sat, in next 5 seconds the price has further raised to 1200 sat. Initial sell was placed at 1300 sat. This case the bot will replace the sell to (50% from (1200 – 1000) = 1100 sat (half of the peak price in the other words).

PumpUsePrevBuyPrice: Use 2-seconds old price for calculating BuyPrice (unless specified using price 30 seconds ago). Enabled by default. This setting protects against buying at the very top of the spike. Before this parameter was added to the settings, it was always enabled programmatically, so when disabled, the strategy behavior will change!

Currently, only 1 PumpsDetection strategy can be active despite you can configure many of them.

It’s recommended to use Pump Detection only for known in advance pumps when you know exact pump time. Turn it ON 15 seconds before the pump announcement and turn OFF immediately after.

WARNING! There is a high risk of false detection! Despite you can configure many parameters to avoid them, it is still possible that some market activity could be taken as a pump. look the example of MANA above.

Recommended parameters values for Binance pump detection on the example of Mega Pump Group actual pumps (https://t.me/mega_pump_group):

PumpPriceRaise:=7; – 7% Price increase for the last 30 seconds. The more this value, the less chance of false detection, on the other hand, you might want to detect a pump as soon as possible when the price is not very high yet.

PumpBuysPerSec:=20;

PumpVolPerSec:=0.8; The volume added by the very first buyers. (usually admins and privileged members of the discord group). The more this value, the less chance of false detection

PumpBuyersPerSecMax:=4; The goal is to detect the pump at the very beginning when no more than 2-4 ppl already bought the coin.

PumpBuyersPerSecMin:=2; Reject a case when there is only 1 buyer occasionally bought some coin not related to the pump

MoonShot (Buying on Spikes)

The strategy puts buy orders and automatically replace them in order to catch spikes. (look picture below) Initially, the order is placed at a price below the market price on MShotPrice (in the example below 3%). With a further price drop to MShotPriceMin (in the example of 2%), the order is replaced on MShotPrice from the current market price. If the price increases, the order moves up. Thus, the order price is always in the range from MShotPrice to MShotPriceMin.

Using the delay (MShotReplaceDelay) you can slow order’s replacing on downtrend; this is riskier but gives more actual trades. If MShotReplaceDelay=0 then the order will catch only spikes like in the picture above; this is less risky but happens less often.

Use delay on price raise (MShotRaiseWait) to avoid moving order up on fast pumps (which is very risky). Also, protect from the catch on dumps by using strategy daily volume filters (flash pumps could happen only on coins with low daily vol.)

With a relatively rapid drop in prices, it makes sense to use the MShotReplaceDelay delay to swap the buy order; In this case, the probability of a transaction increases, but the risk also increases.

Important

At partial execution greater than min. lot (0.001 BTC) the order will be immediately canceled and the sell will be set up regardless of the settings for partial cancellation (since there is no point in waiting for full execution after spike has happened)

At the moment, the internal limit for max. active orders for the MoonShot is 10. In addition, MShotPriceMin should be greater than 0.5 and MShotPrice should be greater then MShotPriceMin+0.5. The restriction is due to the exchange’s API limit.

Charts for this strategy are not opened automatically to reduce API requests. You can open them manually through the list of orders.

Parameters

MShotPrice: Price in % to current market to keep buy order at (always a positive value, the order is below market price at this value).

MShotPriceMin: Min, price in % to current market price, after which the order will be replaced to MShotPrice again. So that the order is always between MShotPrice and MShotPriceMin.

MShotMinusSatoshi: If YES, then buy orders will be placed not closer then 2 satoshi from current ASK price. Useful for coins with price 100sat or less, which have price step more than 1%.

MShotAdd3hDelta: For each percent of the 3-hour Delta add X% to the value of MShotPrice

MShotAddHourlyDelta: For each percent of hourly price delta add MShotAddHourlyDelta percent to price range [MShotPrice .. MShotPriceMin]. Example: If the coin rose/fell by 10% in last hour, and MShotAddHourlyDelta=0.1, then 1% will be added to both parameters [MShotPrice .. MShotPriceMin]. The more the price deviation the more the distance to your order.

MShotAdd15minDelta: For each percent of 15-minute Delta percentage add X% to the value of MShotPrice.

MShotAddMarketDelta: For each percent of the hourly Market Delta add X% to the value of MShotPrice.

MShotAddBTCDelta: For each percent of the hourly BTC Delta add X% to the value of MShotPrice.

MShotAddBTC5mDelta: To adjust price range by BTC 5-minutes delta. The delta is calculated as difference (percentage) between min and max rates during last 5 minutes (hence it always positive)

MShotAddDistance: The expansion coefficient for MShotPrice (percentage relatively to MShotPriceMin depending on deltas; If AddDelta values added X% to MShotPriceMin, then MShotPrice will be adjusted by X * (1 + MShotAddDistance/100)%. Example: MShotAddDistance = 100, MShotPriceMin is adjusted by AddDeltas by 1%, then MShotPrice is adjusted by 2%. Default 0 – dont adjust (works as before).

MShotAddPriceBug: A parameter modifier dependent on PriceBug. The recommended value of this parameter is 0.2, to be used when the exchange is lagging in order to buy further from the current price.

MShotSellAtLastPrice: After Buy has happened put a sell order at a price equal to the maximum price of the strategy (the sell price) and the last price (4-sec-old, that was, before the spike happened) ASK price, taking into account the MShotSellPriceAdjust (see below).

MShotSellPriceAdjust: If the previous option is YES, then substitutes MShotSellPriceAdjust percent from the previous market price. Example: at the moment of a spike market price was 1000 sat. MShotSellPriceAdjust = 1. Then you order will be placed at higher of 2 prices: strategy settings sell price and 1000sat – 1% = 990sat. Explanation: after a spike, the price often goes back to where it was just before the spike, so its good idea to sell a bit lower.

MShotReplaceDelay: Delay to replace the buy upon price drops to MShotPriceMin.

MShotRaiseWait: Delay to replace the buy upon price raise.

MShotSortBy: Sorting of coins that the bot selects for the operation. LastNhDelta - based on the 1-, 2-, 3-hourly deltas. DVolToHVolAsc - based on the horly to daily volume ratio ascending. DVolToHVolDesc - based on the horly to daily volume ratio descending. OrderBook (only for MoonStrike owners) - by the orderbook ((coins with the thinnest orderbook are taken first of all), DailyVol - by day. volume, MinuteVol - by minute volume. Accordingly, the coin with the highest value will have the highest priority.

MShotUsePrice: Can be “ASK” (default), “BID” or “Trade” – use the last trade price for calculation of the MoonShot price corridor. Determines what price (ASK or BID) should be used to calculate MoonShot price corridor

MShotRepeatAfterBuy: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

MShotRepeatIfProfit: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

MShotRepeatWait: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

MShotRepeatDelay: This parameter is part of the Extension Package for auto-trading, the description to it can be read there.

Volumes Lite (Volume Detection)

The detector uses 4 intervals to check that the average prices and volumes grew from previous to next interval. Growth is set in percent. If you set 0 percent, then the condition turns into “price (volume) did not fall.” To disable checking for price/volume growth for a specific interval, you should set a large negative value for a parameter that would allow passing the verification for this condition, i.e. the verification for the condition on the set interval will always take place (except for the times when a real fall in price/volume that was less than the set value has happened).

Picture to illustrate: P – Prices, V – Volumes

Parameters

VLiteT0: The interval in seconds.

VLiteT1: The interval in seconds.

VLiteT2: The interval in seconds.

VLiteT3: The interval in seconds.

VLiteP1: The price increase from the previous to the subsequent interval of not less than (in %).

VLiteP2: The price increase from the previous to the subsequent interval of not less than (in %).

VLiteP3: The price increase from the previous to the subsequent interval of not less than (in %).

VLiteMaxP: Each increase by no more than (in%).

VLitePDelta1: Comparison of rising prices between themselves (in %).

VLitePDelta2: Comparison of rising prices between themselves (in %).

VLiteDelta0: Price change at the zero interval. (The difference between the max. And min. Price within a range of zero percent).

VLiteMaxSpike: The maximum difference between the max. price and average price within the specified interval, no more than (in %). It is necessary to eliminate mini-pumps.

VLiteV1: Growth from the previous to the subsequent interval (%).

VLiteV2: Growth from the previous to the subsequent interval (%).

VLiteV3: Growth from the previous to the subsequent interval (%).

VLiteWeightedAvg: The method of calculating average prices: if YES, it is considered to be the weighted average by volume in the interval, if NO, the average of the count of transactions in the interval.

VLiteReducedVolumes: If YES, then count the amount per minute. If NO then the full amount of the interval.(in case of long intervals)

Volumes (Currently in testing)

The essence of the method is in the detection of volumes. Two intervals are set: “short” and “long” and the volumes are calculated at both intervals. The volume on a long interval is considered reduced to a minute, i.e. volume per minute. For example, if the long interval is set to 300 seconds (5 minutes), the volume in 5 minutes was 10 BTC, then the volume per minute would be 2 BTC. In a short interval, the volume is taken as is.

All ratios of volumes are given as numbers “how many times one is bigger than the other”, not percentages!

When the conditions for volumes are triggered, the orderbooks are checked as the second step:

filling the glass with BIDs (green) on 2 levels.

Min level prices at a short interval.Level max. prices at a short interval.

Filling the BIDs orderbook to a predetermined depth from the current ASK price.

Comparing the volume in the BIDs(green) orderbook at a given depth with the volume of ASKs (red) at a given height.

Determining the dynamics of filling the green orderbook from the moment of detection at the 1st step to the moment of placing the order (the bot waits for checking no more than 20 sec if the conditions did not work, no order is placed)

Parameters

VolShortInterval: The short interval in seconds.

VolShortPriseRaise: Price increase over the short interval (it is possible to set 0).

VolLongInterval: Long interval in seconds.

VolBvShortToLong: The ratio of the volume of purchases (BV) on the Short interval to the total volume on the Long period (how many times bigger than the other one).

VolBvLongToHourlyMin: The ratio of the volume on the long interval to the hourly volume, at least.

VolBvLongToHourlyMax: The ratio of the volume on the long interval to the hourly volume, not more.

VolBvLongToDailyMin: The ratio of the volume on the long interval to the daily volume, at least.

VolBvLongToDailyMax: The ratio of the volume on the long interval to the daily volume, not more.

VolBvToSvShort: BV to SV ratio on the short interval.

VolBvShort: BV on the short interval (in BTC).

VolBuyersShort: The number of buyers on the short interval is not less than. (single flash spikes can be filtered out by this line)

VolSvLong: Sell volume over the long interval, excluding the short interval volume, not more than (in BTC).

VolTakeLongMaxP: Whether to take MaxPrice rates at the long interval (useful in the case of a false rebound after a drop).

VolAtMinP: The volume in the green orderbook at min. prices for a short interval (in BTC).

VolAtMaxP: The volume in the green orderbook at max. prices for a short interval (in BTC).

VolDeltaAtMaxP: Dynamics(Delta) in the green orderbook at max. prices on the short interval after the detection until placing the order (bot waiting for not more than 20 seconds to check if the condition has not been met, the order is not placed), (in BTC).

VolDeltaAtMinP: Dynamics(Delta) in the green orderbook at min. prices for the short interval.

volBidsDeep: The depth at which to watch green orderbook, a percentage of current ASK.

volBids: Volume in the green orderbook at the specified depth (in BTC).

volAsksDeep: The height at which to watch the red orderbook, the percentage of the current ASK.

volBidsToAsks: The ratio BIDs ASKs volume to volume at the specified depths, not less than (in BTC).

Waves (Currently in testing)

The idea is the same as Volumes Lite: The detect uses 4 intervals to check prices and volumes deviation from previous to next interval. Unlike VolumesLite, negative parameter means that the value has dropped, positive means the value has raised, zero parameters will be ignored.

Parameters: P – Prices, V – Volumes

WavesT0: The interval in seconds.

WavesT1: The interval in seconds.

WavesT2: The interval in seconds.

WavesT3: The interval in seconds.

WavesP1: Price change from the previous to the next interval (in %). If you set a positive value, growth is checked. If you specify a negative value, verified drop. If zero, the parameter is ignored.

WavesP2: Price change from the previous to the next interval (in %). If you set a positive value, growth is checked. If you specify a negative value, verified drop. If zero, the parameter is ignored.

WavesP3: Price change from the previous to the next interval (in %). If you set a positive value, growth is checked. If you specify a negative value, verified drop. If zero, the parameter is ignored.

WavesDelta0: Price change at the zero interval (T0). (The difference between the max. and min. price within the T0 interval percent). If you set a positive value, growth is checked (measured delta is bigger than the one specified). If a negative value is set, then no growth is verified (delta measured is not greater than the predetermined. For example, “-1” means that the fluctuation was not more than 1%). If zero, the parameter is ignored.

WavesMaxSpike: The maximum difference between the max. price range and on average (not more than, in%). It is necessary to eliminate lumbago.

WavesV1: Growth of volumes from a previous to the subsequent interval. If you set a positive value, growth is checked. If you specify a negative value, verified drop. If zero, the parameter is ignored.

WavesV2: Growth of volumes from a previous to the subsequent interval. If you set a positive value, growth is checked. If you specify a negative value, verified drop. If zero, the parameter is ignored.

WavesV3: Growth of volumes from a previous to the subsequent interval. If you set a positive value, growth is checked. If you specify a negative value, verified drop. If zero, the parameter is ignored.

WavesWeightedAvg: The method of calculating average prices: if YES, it is considered to be the weighted average by volume in the interval, if NO, the average of the count of transactions in the interval.

WavesReducedVolumes: If YES, then count the volume per minute. If NO then the full amount on the interval.

Delta (Pricevolumes deviation)

Logic: We take a long interval of the last 100 seconds (as an idea, all parameters are adjustable) and a short window of 10 seconds. On each tick we run this 10-second window through the 100-second interval and calculate the minimum and maximum price averaged over the window. We get DeltaPrice in the last 100 seconds – the degree of movement of the coin.

We consider the total volume for the last 100 seconds and the previous 100 seconds and compare how much% the volume has grown.

We look at the last 10 seconds and count the number of deals and the change in the average price in the last 10 seconds compared to the average price in the last 100 seconds.

Parameters

DeltaInterval: Interval analysis of price and volume changes (long).

DeltaShortInterval: Interval of averaging prices and analysis of the dynamics of transactions (short).

DeltaPrice: Price change (delta) in the long interval (at least). It is considered as a percentage deviation between min. price and max. price based on prices averaging over short intervals.

DeltaVol: The total volume (BV + SV) on the long interval (at least, in BTC).

DeltaVolRaise: The total volume on the long interval is greater than the volume at the same previous interval for the given percentage (at least).

DeltaVolSec: The volume per second, averaged and thus delayed. The last seconds before the detect have more weight, single pump spikes are avoided with the averaging. If you put 0, it is ignored.

DeltaBuyers: The number of transactions (buyers + sellers) on the last short-range.

DeltaLastPrice: The average price on the last short interval increased or decreased by a predetermined percentage of the average price for a long interval. If the value is positive, then growth checked. If the value is negative, drop is checked. When 0, the parameter is ignored.

UDP

The following strategy is used for trusted management through the UDP protocol.

TMBuyPriceLimit: percent value.

TM strategy protection against purchases at excessive price: the TMBuyPriceLimit parameter sets the maximum value for the buy price (in percent based on the current market price). 

E.g.: If TMBuyPriceLimit = 5%, and a Buy command is received at a price of +10%, such command will be ignored.

More details about Trusted Management can be found here:

Trusted Management High-Frequency trading via UDP port

Trusted Management

MoonStrike

The task of the strategy is to detect a spike down(similar to what Moonshot is waiting for) and place an order as quickly as possible in order to have time to buy something. Estimated mechanics – the spike itself in most of the cases will not be caught but it triggers stop loss orders of other market players as well as other stop-limit orders, therefore (and also because of the delay in the execution) the idea does NOT ALWAYS work. Following trades will not happen every time.

It makes sense to run on a VPS in Japan, it also makes sense to increase the priority of the MoonBot application (in new versions, when started, the admin priority “above average” is set automatically).

Description of parameters:

MStrikeDepth: Depth of the spike as a percentage (10% by default, you can set 0.1% or higher). How is measured:

1. LastBidEMA (4 ticks) is considered using the next Formula: If on the next-to-last tick, the bid is less than LastBidEMA, then LastBidEMA is taken to be the same to the bid on the last-to-last tick (i.e., if the price falls, LastBidEMA will be equal to the bid in the orderbook 2 seconds ago) If on the next-to-last tick, the bid is larger than LastBidEMA, then the normal EMA (4) is considered Thus, when the price falls, the lastbid will always be minimal, with growth it will grow smoothly

2. Read the depth from LastBidEMA to the bottom of the spike at the time of the detection.

Note1: catches also “up-and-down” situation (for an exception, you should probably consider the EMA from bids, on the other hand, it will lead to catching slow drops like dropsdetect, but this is not interesting)

Note2: trades from the exchange arrive in turn, i.e. Spike begins to draw from top to bottom not instantly. Because of this, at some point (when the spike has become lower than MStrikeDepth, a detection will occur, in the meantime, the trades can go even lower. To override, see below MStrikeBuyDelay)

MStrikeVolume: The volume of spike at the time of detection is not less than.

MStrikeLastBidEMA: still in development.

MStrikeAddHourlyDelta: Similar to Moonshots, add% to MStrikeDepth for each percent of the hourly delta.

MStrikeAdd15minDelta: Similarly to above.

MStrikeAddMarketDelta: Similarly to above.

MStrikeAddBTCDelta: Similarly to above.

MStrikeBuyDelay: Delay in placing buy orders in milliseconds. It seems to be contrary to the idea of the strategy, but in a situation where trades after detection continue to draw the spike even lower, it can help. A delay is inserted between the detect and placing an order, during which the spike measurement continues.

Important:

The general parameters SellPrice and BuyPrice are REMOVED from this strategy! Instead, the parameters MStrikeBuyLevel and MStrikeSellLevel are introduced.

MStrikeBuyLevel – If 0, then we try to buy at the very bottom, if the value is 50.00 we try to buy 50% of the detected Strike depth, i.e. in the middle of it. Please note, that following trades from the same spike may arrive AFTER the detect has happened, simply because there is a delay between your Moonbot and the exchange server, that is sending you trades one by one, you need to make sure your strategy setting do not detect too early, otherwise, it is considered you are doing it intentionally and accept the risk.

MStrikeBuyRelative – If YES, it is counted as described in MStrikeBuyLevel. If NO, then the purchase order will be set at the specified percentage of the price at the moment of the detect. Example: MStrikeBuyRelative = YES, MStrikeBuyLevel = 5 – put a buy order 5% higher than the lowest point of the spike at the moment of the detect. MStrikeBuyRelative = NO, MStrikeBuyLevel = -5 – put a buy order at -5% from the price BEFORE the spike.

MStrikeSellLevel – percentage of the depth of the spike (and not the purchase price). For example, a spike 10% deep, SellPrice = 80% – in this case we sell 80% from 10% = +8% above the lowest detected price of the spike.

Order size must be specified, indication 0 will not take ordersize from the slider off the main screen.

MStrikeDirection - has 3 values for placing orders: Both (symmetrically in both directions), OnlyLong (only long orders), OnlyShort (only short orders). Both and OnlyShort options are available for Futures trading only.

MStrikeWaitDip: Wait until a trade appears with a price higher (or for a short - lower) than the previous one. (in any direction, i.e. for a long: a spike from sell orders, then a buy or sell appears with a price higher = detection). Wait no more than 10 seconds, if suddenly the trade did not appear, then the order is not placed

The log messages consist of:

LastBidEMA value according to the formula above;

Min detected price of the spike at the time of placing the order

Spike depth in percent

The volume of the spike

Buy price

Pre-calculated selling price

For example:

04:13:00.097 BCD: MoonStrike LastBID: 0.00029700 min.Price: 0.00029500 Depth: 0.7% StrikeVol: 0.295 BTC  BuyPrice: 0.00029500 sell +0.7% SellPrice: 0.00029699

NewListing (Autobuy newly listed coins)

The strategy is available only If you tick the “I agree to send the results of my transactions to the server” (“Settings – Login”) on all your bots and keep the check mark on for at least a week before using the strategy.

A strategy for fast automatic purchase and sale of new coins on the listing.


Working Principle:

If you want to buy a coin on the listing, you create one NewListing strategy, or several if you have the "Multiorder" module connected, with a fixed price in absolute value (parameter BuyPriceAbsolute=YES), or in percentage of listing price (parameter BuyPriceAbsolute=NO). As soon as the trading starts, the bot will immediately place an order to buy a new coin according to the set parameters.


If you need to quickly sell the coins that you received before the listing and they are on your balance, then specify that you need to sell coins from the balance (SellFromAssets=YES), specify at what price to sell (SellPriceAbsolute=YES at absolute price or SellPriceAbsolute=NO as a percentage of ASK price), specify the number of coins to sell from the balance (SellQuantity=1000 - sell 1000 coins, if SellQuantity=0, then sell all coins). As soon as trading starts, the bot will immediately sell the required number of coins at the specified parameters.


The strategy does not have a separate Strategy setting tab, but when you create it, special parameters appear in the general tabs.


In the Buy conditions tab:

buyPriceAbsolute: NO/YES (default is NO),

If NO, then buyPrice is calculated as a percentage of the market price (for example 1%), if YES, then buyPrice is calculated as an absolute value (for example $1).


In the Sell order tab:

SellPriceAbsolute: NO/YES (default is NO),

if NO, SellPrice is considered a percentage of the ASK price (for example 1%), if YES, SellPrice is considered an absolute value (for example $1).

SellFromAssets: NO/YES (default is NO),

If NO, then strategy will not sell coins from balance, if YES, then strategy will sell coins from balance.

SellQuantity: the number of coins to sell from the balance (e.g. 1000 coins), if set to "0", then all coins must be sold.

Combo

Combo is a pair of 2 strategies(“Start” + “End”), which works together: after the first strategy “Start” has signaled, the bot starts to wait for the second strategy “End” for the specified time. If the “End” strategy has signaled during the waiting period, the bot will buy the coin and use Combo strategy settings to trade it. Otherwise, the bot waits for the “Start” strategy again.

Note: autobuy should be turned off in both “Start” and “End” strategy!

All 3 strategies must be active.

Parameters:

ComboStart: The first strategy

ComboEnd: The second strategy

ComboDelayMin: Time between 1st and 2nd strategy signals, not less than, seconds

ComboDelayMax: Time between 1st and 2nd strategy signals, not more than, seconds

TopMarket

The TopMarket strategy is automatically created on first launch and is active by default. If you want to disable it, click on the "Remove selection" button. 

The TopMarket strategy signals a detection for the coins with the highest 15m delta. 

DeltaMin: percent value (0 or any positive value).

The lower threshold for a coin’s delta to trigger a detect.

TMSameDirection: YES / NO (default = YES)

Opens a position based on the trend or against it, the direction of the trend is determined by comparing the average price over the last hour with the current price on a specific coin.

а) TMSameDirection = YES (position will open following the trend, if it was a long position, it will open long)

b) TMSameDirection = NO (position will open against the trend, if it was a long, it will open a short position)

Note that with both TMSameDirection = YES and TMSameDirection = NO, the TopMarket strategy can accrue both long and short positions. If you want to accumulate positions only in one direction that you need, then do it through triggers: you define a strategy TopMarket as a MASTER strategy without buying, which triggers SLAVE strategy (for example EMA), which then buys in the desired direction (only short or only long), regardless of the trend direction.

The TopMarket strategy is one of the core strategies and can be used both for auto-trading and coin detection during manual trading sessions.

Strategies for Manual Trading

For more flexible settings for manual trading, there is a special strategy type “Manual”. To start using it, create one or more strategies of this type, don’t mark them with checkboxes and don’t start them. Unlike other strategies, “Manual” is turned by using the main menu, “Use Manual strategy” (look picture below). If you have more then 1 manual strategy, you may switch them by clicking on the caption with strategy name.

Note: when using manual strategy, its filters are applied when you click to set buy order; If you don’t need filters, put in the strategy loose high values: for coin’s Delta 0..1000, for BTC and markets delta -100..+100

Liquidations Strategy and its Parameters

The strategy is based on detecting liquidations and setting long or short orders depending on the type of liquidated orders.

This strategy is part of the “Binance Futures” module and is available to all who have activated the module (including the trial period).

Concept: for a given period of time, liquidations are being checked, their number, total volume (in USDT) and direction (long or short positions liquidated).

If LiqWaitTime > 0, then the lack of new liquidations for a set time period is also checked (in ms). Depending on the LiqDirection, the strategy can execute on both unique detections for a LiqTime time period and also check for combinations of consecutive detections (the minimum time between detections is set in the NextDetectPenalty filter, the maximum time is not limited): liquidations (short, long), (long, short), (short, short), (long, long). Example: the LiqDetection Twice strategy will execute only if two detections of the same type will occur (either short or long) in a row, with a minimum time interval between them equal to NextDetectPenalty; the time interval for the detections is set by LiqTime.

Parameter descriptions

LiqTime: time interval between counting liquidations, seconds;

LiqCount: number of liquidations within an interval (if null, is disregarded)

LiqVolumeMin: minimum volume of liquidations within a set interval, in USDT (if null, is disregarded)

LiqVolumeMax: maximum volume of liquidations within a set interval, in USDT (if null, is disregarded)

LiqWaitTime: time waiting after a detection for lack of new liquidations, millisec.;

LiqWithinTime: time since last liquidation is less than, millisec., (if null, is disregarded);

LiqDirection: the direction of liquidated positions (Both – any direction, OnlyShort – counting only short positions, OnlyLong – counting only long positions, Combo – two oposite positions in a row, Twice – two similar positions in a row);

LiqSameDirection: sets an order in the same direction or in the oposite direction, YES – the set order will repeat the direction of the liquidation, NO – the set order will be in the oposite direction;

Liq_BV_SV_Time: time for calculating volumes, in milliseconds;

Liq_BV_SV_Filter: threshold value bv sv, (if 0, then ignored).

EMA Strategy and its Parameters

This parameter is part of the Extension Package for auto-trading, the description of its parameters can be read there.

Spread Strategy and its Parameters

This parameter is part of the Extension Package for auto-trading, the description of its parameters can be read there.

MoonHook Strategy and its Parameters

The following strategy is only available for PRO version users who are registered with our cash-back program.

This strategy detects fast price drops and places a buy order that then fluctuates within a price range, similar to the moon-shot, awaiting a repeated shot.

Both the price range and the initial position of the order is linearly dependent on the actual detect. The "swiftness" of the price drop is determined by the

HookTimeFram parameter (a time-frame to be analyzed). The strategy was developed to catch shots (HookTimeFrame = 2 sec.), but larger time frames

can also be used (up to 40 sec.)

Note:

  1. In light of the inner workings of the strategy, the repeated detect is only possible after HookTimeFrame seconds (subject to discussions) (in abscence of this penalty, a spam of detects might occur).
  2. The strategy calculates the detect conditions once every 0.5 seconds.
  3. BuyModifier, unlike other strategies, affects only the width and depth of the price range in this strategy.

How it works: when a detect occurs, the deltas are recorded. Then, if the deltas start increasing, the difference of the current deltas and the

recorded ones are multiplied by their corresponding coefficient and affect the upper and lower limits of the price range.

Example:

BuyModifier = -3 (must be negative!)

coefficient Add3hDelta = 0.05

3hDelta at detect time = 10

later, the 3hDelta starts to grow rapidly = 50

Difference = 40

if at detect time, the price range was -2%, -3%, then at the time when the delta was = 50 (difference = 40) the price range will equal:

Upper Limit = -2+(40*0.05*(-3)/2)=-5%

Lower Limit = -3+(40*0.05*(-3))=-9%

Note! The upper limit increases twice slower thatn the Lower limit! In this way, a widening of the price range is achieved!

Parameter description

BuyOrderReduce: sets the interval (in ms) used to calculate the average trade volume. The strategy will place an order of size not larger than the average volume. By default = 100ms. Volume calculation: sum of all trades (buy and sell) over the TimeInterval interval, divided by BuyOrderReduce. Examlple: if TimeInterval = 5 sec (5000 ms), BuyOrderReduce = 100ms, the volume over 5 sec was 10 000$, the average volume over 100ms will equal 10000/5000ms*100ms=200$. In this case the strategy will place an order not larger than 200$.Alternatively, knowing the average volume over 100 / 10/ 5 ms, this will be the maximum order size of the strategyBuyOrderReduce=0 – parameter is turned offThe work of the order reduction function can be seen in the following inscription:IOTA: [1] (40) Buy order reduced: 1000.00$ => 23.32$ (Vol: 23.32$)In this log, the OrderSize in the strategy was 1000$, but the average volume over 100ms was just 23$, thus, the strategy has placed an order of 23$.

MinReducedSize: If after using BuyOrderReduce the order size becomes lower than the set size (in USDT), the order is not placed (and the corresponding detect will not exist). Default value = 0(not applied).

HookTimeFrame: time frame set for analysis.

HookDetectDepth: the depth of the detect.

HookDetectDepthMax: the maximum detect depth value for a shot. If 0, is ignored.

HookAntiPump parameter: If YES, it takes the average price before the detection to calculate the depth of detection, which helps filter out spikes right after a quick pump.

HookPriceRollBack: percentage of price roll back in percentage points relative to the general depth, 33% would mean a roll back by one third of the entire price movement

HookPriceRollBackMax: The rollback limit is no more than. If 0 (default), has no effect.

HookRollBackWait: The time during which the price stays above the RollBack (milliseconds). The recommended value of 100ms will cut off situations when the price immediately drops after detection. You can set more, but the entire event of a spike, rollback and waiting for a rollback must keep within the HookTimeFrame sec.

HookDropMin, HookDropMax: price decrease prior to the detect over the last 2 minutes, before and after. Is calculated in percentage points relative to the recorded depth of the shot.

Example: Take a 10% shot. But the price of the coin has allready been falling for 2 minutes before the shot and has already fallen by 20%.

In this case, the HookDrop = 20 / 10 * 100 = 200% (i.e the previous decrease in price is 200% larger than the shot itself). If 0, is ignored.

HookDirection: search for Long or Short detects or both.

HookOppositeOrder: place an order in the opposite direction (when an arrow is detected, put a short instead of a long)

HookInterpolate:

- If 0, the strategy will place an order from the uppermost price to the shot.

- If 1, the strategy will place an order from the rollback following the shot

- If 2, the HookInitialPrice parameter will be prioritized

- If 3, calculates the initial price and the corridor from current price, based on spike depth

- If 4, is based on rollback depth

If it contradicts the price range, the upper limit of the range will be moved up by half the distance between your order and the current price. If this is impossible, the detect will not execute.

Applying the same logic, the lower limit will be lowered.

The logic is the same for both short and long orders.

If HookInterpolate is set to 0, then the BuyModifier is not applied.

HookPriceDistance: the width of the price range. Set in percentage points relative to the general detect depth. For example: if a 5% fall was detected, a HookPriceDistance = 10% will mean that the order can move within the following limits -- upper limit HookPriceDistance = 5-5/100*10=4,5%, lower limit 5+5/100*10=5,5% from the current price. Just like the MoonShot, it will be moved when the price will come close to one of the limits. If 0, the order is not move like in case of MoonShot, will remain static until execution or cancellation.

HookPartFilledDelay: Delay for canceling a buy order after partial filling (milliseconds). If 0, there is no delay, the partially filled order is immediately canceled (as in moonshots)

HookSellLevel: replaces SellPrice. Is set in percent of the detect depth.

For example: SellPrice = 75% would mean that it should sell in the upper quarter of the shot. SellPrice = 100% would mean selling at the upmost point, at the start of the shot.

HookSellFixed: always calculate sell as (HookSellLevel * depth) percent, regardless of the buy price

HookReplaceDelay: Delay to replace the buy upon price drops

HookRaiseWait: Delay to replace the buy upon price raise

HookRepeatAfterSell: repeat buy order after the sell is executed

HookRepeatIfProfit: %, repeat if the sale closed with such or a large profit.

BuyOrderReduce: (the parameter has migrated from the Spread strategy and has similar values). Sets a time frame (in ms) for which the average tradin vaolume is calculated. The strategy will then place an order not larger than the average volume. Default value = 100 (ms). Volume is calculated as follows: all trades volume is sumed up (buy and sell) for the HookTimeFrame period and is devided by BuyOrderReduce.

For example: if HookTimeFrame = 5 sec (5000 ms), BuyOrderReduce = 100ms, the volume over 5 sec was 10000$, the average volume for 100ms will equal10000/5000ms*100ms=200$. In this case the strategy will place an order of no more than 200$.

In other words, we monitor the average volume over the last 100ms/10ms/5ms, that will be our maximum order size used by the strategy.

BuyOrderReduce=0 - parameter is turned off

The order reduction function execution can be observed in the log, in the following format:

IOTA: [1] (40) Buy order reduced: 1000.00$ => 23.32$ (Vol: 23.32$)

In this log, the OrderSize of the strategy was 1000$, while the average trading volume over 100ms was only 23$, thus the startegy has placed a

buy order of 23$.