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.
Test strategies pack can be downloaded here: data.zip
Unpack the data folder from downloaded zip to bot’s folder. ATTENTION! this operation will completely remove all previous strategies you had filled. Make a backup copy of the data folder before copying.
The window with strategies settings:
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.
- 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.
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:
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! Otherwise the system may reboot and leave open orders on the exchange.
3) When using single-core (5$) servers, we highly recommend that you keep no more than 15-20 orders (depending on the replacement frequency)
4) When working with Moonshots with a short price interval (up to 0.5% difference between MshotPriceMin and MshotPrice) we recommend using MShotAddDistance = 50
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
- 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.
- 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.
- 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). 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
- MinHourlyVolume: The Minimum Hourly Volume below which not to take coins into consideration
- MaxHourlyVolume: The Maximum Hourly Volume above which not to take coins into consideration
- 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.
- 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: 15 min, 30 min, 1 hour, 2 hours, Pump5m. (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 %).
- 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)
- 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!
- 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)
- 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.
- Short: Open short orders instead of long (Binance Futures only).
- 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 filledcancelled
- 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: Specify a fixed ordersize, in the base currency (BTC, ETH, USDT). When 0, the value of the general settings (main window).
- 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)
- BuyPriceAbsolute: (Только для стратегии NewListing) Если поставить значение BuyPriceAbsolute — YES, то в параметре buyPrice нужно указывать стоимость в абсолютных значениях (например в 0,000524 ВТС или 0,0254 USDT), Если поставить значение BuyPriceAbsolute — NO, то в параметре buyPrice нужно указывать стоимость в процентном выражении (например 5% или -10% от цены листринга).
- 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.
- 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.
- 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 Cell.
- 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 wat 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
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.
- DropsPriceIsLow: If t YES, then in addition to the above-described conditions, the current market price has to be the hourly low.
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.
- 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”)
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).
- 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, PumpMovePersent=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).
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.
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
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.
- 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.
- 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 was raisedfall to 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).
- 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. Based on the 1-, 2-, 3-hourly deltas values or based on the hourly to daily volume ratio. 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
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.” If you specify -1000 on any interval, then the check on this interval is disabled.
Picture to illustrate: P – Prices, V – Volumes
- 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)
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)
- 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).
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.
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.
- 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.
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.
- 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
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
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.
Using of the strategy is simple: create one (or several if you have the MultiOrders addon) strategy. Specify fixed price (in base currency, the “BuyPriceAbsolute – YES” parameter) if you have assumptions about listing price; or specify relative price in percentage of actual listing price (the “BuyPriceAbsolute – NO” parameter).
As soon as trades on new coin starts, the bot will place buy orders.
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.
- 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
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
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.
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 seconds;
Liq_BV_SV_Filter: threshold value bv sv, (if 0, then ignored).