Our plans and pricing are changing on 1st November. Learn more...

Automated Trading Overview

Version History

An overview of the changes on each release of the automated trading bot

To update to the latest version of the bot, go to the bots settings and click on 'Restart Server'.

Most bots will automatically update the next time they are idle. If your bot is continuously tracking trades 24/7, we recommend stopping all your orders or manually restarting from time to time, to stay up to date. It can take up to 2 hours for the updates to be fully rolled out across our entire infrastructure.

27th October 2020 version 1.1.199

  • Bybit will now fall back to an alternative source of data for the position size while the socket connection is restarting due to a connection error.

26th October 2020 version 1.1.198

  • Fixed a minor issue that prevented the bot updating when only updating the account PnL data.

26th October 2020 version 1.1.197

  • New telemetry from the bot to enable better historical trading history and error reporting, especially for trading groups.

19th October 2020 version 1.1.196

  • Fixed a timeout issue on Bybit's reconnection of an active socket connection. This was causing a delay of a few minutes while the connection was reset.

18th October 2020 version 1.1.195

  • Fixed an issue on FTX where the bot produces a lot of output when tracking a stop order (eg trailing stops). This information was harmless and did not affect any functionality, but cluttered up the logs. It has been simplified now.

16th October 2020 version 1.1.194

  • FTX no longer reports an error in certain cases that an error is to be expected. The error is still logged in the bots output, but you will no longer receive a notification or see entries in the error log for anything non-critical that is handled in the normal operation of things.
  • Added LINKUSDT % position support on BitMEX.

14th October 2020 version 1.1.193

  • Update to FTX to resolve an issue related to cancelling some stop orders.

12th October 2020 version 1.1.192

  • aggressive() order updated on FTX and Binance to try and fully resolve the occasional problems caused by the order state being inaccurate from the exchange. Additional logging information is also now reported in some of the unusual states (like moving an order and then being told it was cancelled).

8th October 2020 version 1.1.191

  • added a new breakeven option for trailingTakeProfit() orders.
  • Added some validation in aggressive() orders to prevent re-entrant attempts to cancel the order whilst it is moving the underlying exchange order.

3rd October 2020 version 1.1.190

  • Added some more logging for some of the edge cases in Binance when trying to change the price of an order.

2nd October 2020 version 1.1.189

  • Infrastructure improvements to support faster trade and event logging back to the servers. Should also be more scalable during peak times. Not super interesting, but is super useful.

1st October 2020 version 1.1.188

  • Improvements to aggressive() on Binance to try and work around some of the limitations. We no longer trust the order status data from the exchange and have added some additional steps to validate the state of orders before making decisions.

29th September 2020 version 1.1.187

  • BitMEX now does more to get the initial price data, as super low liquidity markets were timing out waiting to get any price information.
  • Removed some event logging (working towards a more useful set of trade, error and PnL tracking)
  • Fixed a minor issue for timing data for log output to ensure accurate ordering.

28th September 2020 version 1.1.186

  • Setting leverage on Bybit now first checks what the current leverage is and only changes it if it needs to. This is because Bybit treated setting it to the same value as an error.
  • side=Long or Short should work for market orders too now (missed one)

28th September 2020 version 1.1.185

  • Added support for using side=long and side=short, as well as the regular side=buy and side=sell.

27th September 2020 version 1.1.184

  • A few updates to the Binance integration, especially with regard to updating order prices. Binance has also been adjusted to restart less often, report a little more data if API calls fail and added longer timeouts for recording system events and order tagging.
  • aggressive() updated to handle more of Binance's errors with a little more grace

24th September 2020 version 1.1.182 & 1.1.183

  • Small adjustment to the data rates for live logging
  • exchangeSettings() support for FTX, so you can now set the account wide leverage and an order size cap on FTX and FTX.us
  • aggressive() tweaked to cope better with the laggy order status data on Binance.

24th September 2020 version 1.1.181

  • FTX detects bad API keys a little better than it did, wasting less time retrying things.

24th September 2020 version 1.1.180

  • aggressive() order will now monitor for repeated error cases and stop if the order can not be recovered.

21st September 2020 version 1.1.179

  • Small tweak to when trailing method data is configured and established for trailing take profit orders. Fixes a issue with stop moving incorrectly just after being created.

21st September 2020 version 1.1.178

  • Updated Bybit to consider max affordable when evaluating the position size, plus some better rounding to ensure fewer orders are rejected as too big.

17th September 2020 version 1.1.177

  • Added support for a more efficient way of relaying data between the bots and the servers, which should open the door to some cool stuff in the coming months. No visible changes to anything, so kind of a dull release for everyone except me 😎

15th September 2020 version 1.1.176

  • Updated order size calculations on some FTX spot markets for better precision.

13th September 2020 version 1.1.175

  • Added some more error events for when exchanges go down.

11th September 2020 version 1.1.174

  • Balance reports updated to make sure they include the key names used to generate the report, so they can be filtered in Alertatron more easily.

10th September 2020 version 1.1.173

  • Added support for new range of Quanto Futures on BitMEX. The following futures contracts will be launched tomorrow on BitMEX but are currently available on their testnet exchange. ADAUSDT, EOSUSDT, LINKUSDT and XTZUSDT futures markets are all supported now.

10th September 2020 version 1.1.172

  • Coinbase integration has had a minor adjustment to the way it determines asset precision for rounding to fix an issue reported by a customer.

7th September 2020 version 1.1.171

  • continue() and stop() now support a range of new conditional tests, inclusing valueIsOne, valueIsZero, valueIsTrue, valueIsFalse, valueIsPositive and valueIsNegative.

3nd September 2020 version 1.1.170

  • aggressive() orders on Binance could miss partial fills of the order under some conditions. The bot now ensures the remaining amount is correctly fetched, avoiding any race conditions and timing issues, to prevent this from happening.

2nd September 2020 version 1.1.169

  • Some of the ground work for supporting the new USDT Linear Perpetual contracts on Deribit (testnet only at the moment).

1st September 2020 version 1.1.168

  • dynamicTakeProfit() orders have had some improvements added. They now handle the way some exchanges cancel reduce only orders if the position is reduced, by replacing the take profit order at the new size. They also report more details about the change in position size.
  • BitMEX has been updated to present more infomation about % position size calculations, esp. on contracts not involving the underlying XBT equity, such as ETHUSD.
  • BitMEX also now keeps cancelled and filled order details around for longer, even between connection resets.
  • Bybit will now report the open position size when a new connection to the exchange is opened.
  • Tagged orders have had some internal improvements to prevent lots of orders being tracked that are no longer open. The system is now able to auto-clean these expired orders from the tagging system.

12th August 2020 version 1.1.167

  • Update to Binance support that fixes an issue where many separate commands blocks are all executing together on the same ticker, and a connection reset is initiated, it was possible for later blocks to find no order information available. All blocks will now wait for the connection reset to complete in full when querying for order infomation. TLDR; managed() orders, waiting for limit orders to fill on Binance, could conclude the order was gone under some conditions. not any more.

12th August 2020 version 1.1.166

  • Fixed a possible issue on Deribit with filled stop orders. Once a stop order is filled, it's order ID changes to the ID of the market or limit order it triggered. On occasionals, the update indicating it was triggered is skipped and Alertatron could be left being unable to detect the order (as it now has a different id). TLDR; we now track the stop order's id, regardless of it's state and can handle the rare cases where some of the update events are merged by the exchange.

11th August 2020 version 1.1.165

  • Resolved an issue related to tagged orders on Binance.

10th August 2020 version 1.1.164

  • Small change to trailing orders on Bybit as it could be fooled into using a wick in the first few seconds of the trades life that should not have been considered.

10th August 2020 version 1.1.163

  • Added extra validation when updating an orders price fails on BitMEX to ensure we are working with the latest and correct order state.

9th August 2020 version 1.1.162

  • Attempting to cancel an order that was already cancelled no longer throws an error to the event log, so you no longer get an alert if you have error notifications enabled. The error is fully handled internally anyway and can't always be avoided.

8th August 2020 version 1.1.161

  • scaled() orders now treat side as case-insensitive, like elsewhere in the system.
  • If fetching recent candle data fails for any reason, the bot now ignores the error, as it's generally not critical to anything, and carrying on with the old data is preferred.
  • continue() and stop() no longer look like errors when the condition being testing is not true - just some wording changes and no longer outputs the information in red caps.

5th August 2020 version 1.1.160

  • Fixed an issue on Bybit when trading multiple markets and using trailingStopOrders. Candle data for assisting with determining recent highs and lows could contain data from mixed markets, resulting in stops being moved incorrectly. This is now resolved.

30th July 2020 version 1.1.159

  • Added the new LTCUSD contract specifications to the BitMEX integration.

29th July 2020 version 1.1.158

  • Fixed an issue with Aggressive orders on Binance.
  • Made some adjusts to our server configuration to work around a temp issue with Deribit. This will hopefully resolve the isolated accounts seeing invalid credentials errors since the Bitcoin price surge.

27th July 2020 version 1.1.157

  • Improved some of the bot output for Binance and Deribit

26th July 2020 version 1.1.156

  • Report a little more detail about exchange errors on FTX. The bot now also waits a little longer before retrying.

24th July 2020 version 1.1.155

  • During FTX downtime and server restart events, our integration will allow more time for their servers to come back up. This extends possible downtime recovery from about 3-4 min to about 10-15 minutes. As long as their servers are back up within that time, we should be able to auto-reconnect and continue as if nothing happened. The reconnection events also display some additional details so it is simpler to track in the logs.
  • BitMEX market orders wait for confirmation of order filled and position size updated, as those bits of information can lag badly on this exchange. However, if there had been no confirmation after a while, it would behave as if the order had failed. We still wait for confirmation, but if there is a timeout, we don't assume an order failure and allow other steps, such as a managed order, to continue.

24th July 2020 version 1.1.154

  • Bybit now combines data from the price with with recent candle data to produce better high and low price data for trailing orders to trail from.

21th July 2020 version 1.1.153

  • If there is no price data for a while, trailing stops and trailing take profit will ignore the problem and assume the data will be available again shortly. This should help prevent a problem where trailing orders could stop trailing if the exchange went down for a while or there was an extended period of zero trading volume on the exchange just after a reconnection event.

21th July 2020 version 1.1.152

  • On Binance, when the bot tried to move an order (eg aggressive() does this a lot), when the order was partially filled, it could result in a new order being placed with the size not fully rounded to the precision of the asset being traded, resulting in amounts of too high a precision. Binance rejected this. This update resolves this case.

20th July 2020 version 1.1.151

  • Reporting on exchange orders is a little clearer on connection and reconnection.
  • Fixed an issue on Binance where an error was incorrectly reported on some re-connections.

19th July 2020 version 1.1.150

  • Fixed a rounding issue when shuffling orders as part of a marketMaker() command.

19th July 2020 version 1.1.149

  • Minor update to FTX to add support for bound API keys.

19th July 2020 version 1.1.148

  • Added an extra way of getting price data from the exchange for Bybit, as some accounts were seeing commands fail due to lack of price data after a reconnect, which was likely caused by zero volume at the time.
  • Updated some of the network connectivity management for FTX. This should resolve a number of errors that were seen in the output and help ensure the connection is able to auto-recover from more network failures than before.

17th July 2020 version 1.1.147

  • Updated Bybit to work around problems on the testnet exchange at the moment.
  • Added support for PnL data on Binance to prepare for support in trading groups.
  • Fixed an issue on Binance that could cause a problem when moving a partially filled order to a new price.

16th July 2020 version 1.1.146

  • Stopped logging a harmless error that would appear when using BitMEX ETHUSD during connection startup.

16th July 2020 version 1.1.145

  • Trailing stop orders can now trail in 2 modes - continuous trail (like normal), and stepped trail that will move the stop in discrete steps only. This makes it possible to create stops that move up to break even when the price reaches a certain point for example. See the docs for more details.

14th July 2020 version 1.1.144

  • on BitMEX, if a limit order was partially filled and remained in that state for around 5 minutes, then you tried to cancel all orders, the partially filled order would not be cancelled. Thank you to our epic customers for noticing this very hard-to-reproduce behaviour. Fixed.

13th July 2020 version 1.1.143

  • pingPong() orders now round amounts and prices in line with other orders, according to the exchange symbol settings. This was causing some failed orders on Binance, which should now be resolved.
  • Adjusted the way background processes were handled, especially when cancelling / stopping them, to reduce the occurance of attempting to cancel an order twice (once when finding the order in the order book, and once when the algo order cleans up the orders it had created and was tracking). These duplicate cancels are generally harmless, but produce an error in the event log. If you have error notifications enabled, this could be irritating.
  • aggressive() takes a bit more care when cleaning up it's orders.

11th July 2020 version 1.1.142

  • Bybit now re-caches order state information just before a cancel operation, to reduce the number of times it tries to cancel an order that was already cancelled.

10th July 2020 version 1.1.141

  • Minor tweak to the reconnection process for FTX. When the connection to the exchange is lost or the exchange goes down briefly, this should help auto-recovery. We're not 100% certain this will fully resolve the issue seen in the last couple of days (FTX appears to be suffering intermittent brief downtime), as it is very hard to reproduce the exact conditions.

9th July 2020 version 1.1.140

  • Binance price rounding has been updated as there were occasional cases where the rounding was producing overly precise values. The prices should now always match the tick size and precision specification for the ticker traded.
  • Bybit integration improved for better network scaling (only testnet for now)

7th July 2020 version 1.1.139

  • added event logging when orders are cancelled on Binance and fixed the icon being used in the event log.

5th July 2020 version 1.1.138

  • Bybit PnL for continue() and stop() is now based on unrealised PnL only.

5th July 2020 version 1.1.137

  • Distribute timing of telemetry data back to the servers, so the load is spread more evenly, especially when large number of bots trigger actions in unison.
  • Market maker now reports more details on 'zombie' missing orders.
  • PnL calculations on Bybit do some additional validation to avoid NaN results.

4th July 2020 version 1.1.136

  • Binance Futures added (not generally available yet - ask for access)
  • Market maker order updated to try and prevent dropped orders in price wicks after multiple days of execution.

25th June 2020 version 1.1.135

  • Little more output for dynamicTakeProfit to making tracking the orders a little simpler.
  • Bybit and Deribit log error events for more classes of low level error now.
  • Removed the legacy Deribit integration, as it is no longer used.

21st June 2020 version 1.1.134

  • managed() update to handle limit entry orders being rejected when using side/amount for order sizing, so it should not longer attempt to place SL or TP orders in this case.

18th June 2020 version 1.1.133

  • BitMEX support for percentage sizes in their new BCHUSD contract.

14th June 2020 version 1.1.132

  • Deribit handles the exchange connection restarting in the middle of cancelling a set of orders better now.

11th June 2020 version 1.1.131

  • Exchanges now correctly round % of positions sizes for short positions up (it was rounding down for shorts and up for longs) to the nearest valid size. Rounding down could result in your TP orders adding up to less than the position size in some cases (eg 3 TP orders at 25%, 25% and 50% of position), due to small rounding errors. Now they will always add up to at least as much as the position size if the parts add up to 100%, though the total could not come to more than the original position size, this can be protected against using reduceOnly orders. For example, on Deribit, 25% of a short position of 190 contracts is 0.25 x 190 = 47.5. Rounded to nearest $10 (Deribits unit size) is now 50. This was 40 for short positions & 50 for long position before this update, but now it is 50 for both long and short positions.

10th June 2020 version 1.1.130

  • Deribit integration updated again - internal changes to meet some updated requirements from Deribit - should not have any impact.

9th June 2020 version 1.1.129

  • Update to Deribit integration to support faster order execution.

8th June 2020 version 1.1.128

  • FTX error handling improvements
  • Big updates to dynamicTakeProfit() (see docs). It can now cancel all, none, buy, sell, entry and tagged orders when it completes. It is also capable to continuing to track positions as long as there is some of the position still open.

8th June 2020 version 1.1.127

  • FTX updates to active order tracking.

7th June 2020 version 1.1.126

  • Deribit support updated to improved connection error handling.
  • Bybit's error handling and rate limiting refactored a bit. Handling for some more undocumented errors added.

3rd June 2020 version 1.1.125

  • Bybit updated to handled an undocumented error we were seeing.

2nd June 2020 version 1.1.124

  • Updated the Bybit API wrapper to adjust the way messages were signed and added additional error reporting to the bot output when API errors are encountered.

31st May 2020 version 1.1.123

  • fix to the new dynamicTakeProfit() command so it can detect growing short positions and adjust the take profit to match.

31st May 2020 version 1.1.122

  • Update on FTX to reduce floating point comparison issues when testing if an order is fully filled - resolves an intermittant issue on markets that typically used very small amounts as order sizes.
  • iceberg() orders now more robust about handling lagged order information from the exchange
  • fixed a potential issue in stopAndTakeProfit() relating to the placement of the take profit order
  • scaled() had some code improvements - no change in functionality.

30th May 2020 version 1.1.121

  • Add the new cancelOtherOnFill setting for the dynamicTakeProfit() command. See the docs for more details...

29th May 2020 version 1.1.120

  • Added support for FTX US
  • dynamicTakeProfit() did not correctly handle being asked to cancel. Does now.
  • Deribit now backs off for a few seconds and retries if it see's the 'Settlement in progress' error.

28th May 2020 version 1.1.119

  • managed() will now examine both aggressive and limit entries to see if they actually were filled. If they did not fill at all, the managed() order will now skip placing the TP and SL orders. Aggressive or limits can fail to fill if timeouts or slippage limits are hit.
  • Some internal refactors and some new tests.
  • A new command that will appear once the deployment is rolled out... 😎

24th May 2020 version 1.1.118

  • Added support for BitMEX's new ETHUSD futures contracts, so you can now use % order amount and position sizing on them.

20th May 2020 version 1.1.117

  • Added error events to the event log for some cases when connection failures occur (eg when an exchange is down).

18th May 2020 version 1.1.116

  • Scaled orders now support the postOnly property, so you can control this flag on the orders it creates. Default to true for backwards compatibility.
  • marketmaker() order updated to use more efficient order submission, plus logging more compact and consistent. The limit orders are no longer post only too, which solves a number of minor edge problems that were difficult to fully recover from.
  • Bybit order status information now handles a few more unusual cases, especially when order information was queried very soon after the order was submitted.
  • Updated some tests.

17th May 2020 version 1.1.115

  • Minor refactoring with some new tests.

16th May 2020 version 1.1.113 & 1.1.114

  • Adjustments to aggressive orders on FTX to improve stability
  • retry requests that fail at FTX due to their servers reporting an 'Internal Server Error'
  • Fixed an issue with aggressive orders when using % order sizes introduced as part of the FTX updates.

15th May 2020 version 1.1.112

  • continue() and stop() now have support for testing vs a percentage of your balance, percentage offsets in price and comparing price to average entry price. For example, you can now test if your position size is less than 2x your balance like so: continue(if=positionSizeLessThan, value=200%), or test that the price is more than 3% above your average entry price with continue(if=priceGreaterThan, value=e3%)

14th May 2020 version 1.1.111

  • Version is all 1's, which is cool
  • Resolved an issue with tagged orders if you were using the same exchange and symbol with multiple accounts at the same time.

14th May 2020 version 1.1.110

  • Adjusted round calculations for balance and available balance at Bitfinex
  • Bybit - Additional logging to track orders the exchange says are open and to report the state of the orders, especially when trying to cancel them. This is mainly to help identify a possible issue with detecting if an order is open or closed during cancel.

11th May 2020 version 1.1.109

  • Fixed an issue that is caused by many alerts arriving simulataneously with trades for the same exchange / symbol on Bybit. Additional locking measures have been added to protect Bybit's more drawn out process for establishing a connection. This only caused a problem if you sent many alerts at the same time though (lots of commands in a single alert would have been fine, and many alerts over a few seconds would also be fine).

9th May 2020 version 1.1.108

  • internal changes

6th May 2020 version 1.1.107

  • Fixed an issue with tagged orders. If you used a managed() order, with a limit entry, and used a tag on the order, there were some setups where this tag would not be removed when the order was completed. When cancelling the tagged orders, we would attempt to cancel these orders that were already filled/cancelled. Normally this would not really be an issue, but on BitMEX this could take a while if there were a lot of them, as we can't trust the local data about missing orders on BitMEX and have to make separate calls to determine the true state of the order when we find one that appears to be missing. managed() now correctly untags the order, regardless of how it completes (filled, cancelled, timeout etc).

3rd May 2020 version 1.1.106

  • Reduce only trailingStop() and trailingTakeProfit() orders, on margined exchanges, will now detect if the position is closed elsewhere and cancel the orders (as they will no longer do anything when triggered anyway). This will also cause managed() orders to detect this state and close as well.

3rd May 2020 version 1.1.105

  • FTX updated to fix the occasional 'not signed in' errors in the logs.

3rd May 2020 version 1.1.104

  • Update some logging for consistency
  • managed() now detects when it does not need to wait for orders for better performance.

29th Apr 2020 version 1.1.103

  • Updated the way we handle conditional orders in FTX to simplify it. Needs more API calls, but the improved simplicity should help keep things fast and stable.
  • You will still see quite a lot of errors when cancelling orders after using trailing stops (order already closed). These are harmless and we're talking to FTX to see if there is a way to detect the order state before asking to cancel, as the available state from the exchange always reports them as open.

29th Apr 2020 version 1.1.102

  • Various improvements to the way the bots talks to Alertatron to improvement performance.

27th Apr 2020 version 1.1.101

  • More 'unstable network conditions' work.

22nd Apr 2020 version 1.1.100

  • Update to a few internal parts of the bot for performance. Things should execute a lot faster when placing many orders now.

21st Apr 2020 version 1.1.99

  • Some adjustments to the way log data is pushed back to the app for a performance boost.
  • aggressive() was not giving very helpful error messages when it failed to open its initial limit order. fixed.
  • Some adjustments to cancelling orders, especially algo orders. Should be fewer attempts to cancel the same order by different parts of the system now.
  • Tweaked Deribit order state caching, especially for cancelled orders.

20th Apr 2020 version 1.1.98

  • Min order size for XBT Futures markets on BitMEX have been update to 0.0025 XBT to match XBTUSD.
  • FTX rejects bad symbols earlier in its connection process now, to avoid a chain of errors from trying to use an invalid symbol name.

19th Apr 2020 version 1.1.97

  • Added a new test system for simulating crappy network conditions and added a load more tests.
  • Updates to FTX, Deribit and Bybit. Mostly around bringing them together for more code reuse and improved bad network handling.
  • Improved the order cache on Deribit to discard out of date data a bit sooner to improve memory and performance usage.
  • Some tweaks to improve handling of high volume bursts of messages to the bots.

16th Apr 2020 version 1.1.96

  • Added some new options to continue() and stop(). The new tests include positionEq, positionOpen, positionSizeGreaterThan, positionSizeGreaterThanEq, positionSizeLessThan, positionSizeLessThanEq, positionSizeEq. See the docs of continue() or stop() for details.

16th Apr 2020 version 1.1.95

  • Added some additional error handling in Bybit to protect against a problem seen on ping pong orders.
  • Some errors re-worded in BitMEX (plus logging some errors that did not previous get pushed to the event log)

14th Apr 2020 version 1.1.94

  • Small adjustment to the way PnL is presented to continue() and stop(), as the API can report PnL when there is no open position.

10th Apr 2020 version 1.1.93

  • Default to using 'last' price instead of 'mark' price for some managed order types (like managed() and stopOrTakeProfit())
  • Some minor internal changes to improve BitMEX under system overload issues.

10th Apr 2020 version 1.1.92

  • Bybit and FTX randomise their timeouts for refreshing the connection, to avoid all the connections in a trading group ddos'ing the exchange
  • Tweaked the locking during opening and closing exchange connections
  • trivial tweak to logging

8th Apr 2020 version 1.1.91

  • FTX now handles flaky connections better, using some of the same system that was developed to keep Bybit going through random connection issues.
  • Bybit added a new error code that we will retries requests. If we see this error, we assume it's a passing glitch, wait a moment and try again a few times.

5th Apr 2020 version 1.1.90

  • Adjustment to the PnL calculations for Trading Groups, and a fix for Deribits calculations when fetching only small amounts of data.

2nd Apr 2020 version 1.1.89

  • Tidy up of bot output in some areas
  • Some minor tweaks to trailing stops so they can use the same historical price spikes that trailing take profits support
  • Minor adjustments to network pings for some exchanges, especially during reconnection.
  • All a bit geeky and technical this time - nothing all that exciting. sorry.

1st Apr 2020 version 1.1.88

  • Updated Bybit with active connection analysis. The connection to the exchange will automatically be restarted if the bot fails to see fresh price data for a minute or two, as well as on other conditions. It will also restart the connection from time to time to keep things fresh. The goal of these changes is to improve the integrations ability to self-heal when the connection becomes unstable or unreliable.

1st Apr 2020 version 1.1.87

  • Some additional improvements to handle dropped connections and Bybit going partially down. Should be more able to recover in more combinations of situations now.

31st Mar 2020 version 1.1.86

  • More systems in place to ensure that position size is up to date after a market order is executed. Improvements on BitMEX and Bybit here, which will hopefully end the occasional problems people are seeing with incorrect position sizes affecting some orders. Hopefully this will fully solve the problem, but until it is used extreme extreme pressure and system overload it's hard to know for sure.
  • Made Limit and Market orders output a bit more useful.
  • A couple of other internal changes to ByBit that should make updating order prices more robust.
  • More tests added to test suite.

28th Mar 2020 version 1.1.85

  • Bybit was throwing an undocumented error while part of their infrastrucure was down last night. We now take action on this error to pause and retry, to increase the chance of success in future outages of theirs.
  • A few more adjustments to a new order type.
  • version 1.1.84 ended up getting added into this one.

28th Mar 2020 version 1.1.83

  • FTX min order size adjusted (reduced from 0.01BTC to 0.001BTC on BTC-PERP for example). This change was based on information from FTX devs which should help us here. Note that repeated orders below the original min size are likely to fail though (spam orders).

25th Mar 2020 version 1.1.82

  • Deribit rate limiting adjustments
  • Some updates to support PnL reporting for trading groups
  • Deribit termination during an 'exchange down' situation improved.
  • Fixed some issues with tagged orders on FTX BTC/USD market.
  • Added a new order type for testing (not released yet)

20th Mar 2020 version 1.1.81

  • balance() now gives useful results on Bybit

19th Mar 2020 version 1.1.80

  • Added handling for some undocumented Bybit errors codes.

18th Mar 2020 version 1.1.79

  • Performance improvements in the Bybit integration (especially around establishing the initial connection to the exchange).

16th Mar 2020 version 1.1.78

  • Updated the way Deribit handles bad or unreliable connections. It should now recover from dropped connections far more quickly and reliably than before.
  • Lots of internal updates to support a new feature in Trading Groups coming soon...

14th Mar 2020 version 1.1.77

  • Calculations for percentage of position size now round up to the nearest valid trade size (eg 1 steps on BitMEX, $10 steps on Deribit, market step size on FTX etc). This is to ensure that when creating multiple orders from your position, they will always cover your entire position. For example, placing 2 take profits, using 60% and 40% of your position will always result in orders that cover at least 100% of your position. Previously, this calculation rounded down, so the example above could leave your position open by a single unit under some conditions. This is now resolved. Don't forget to use ReduceOnly when closing positions though, as this will ensure you'll never close more than your current position size.

13th Mar 2020 version 1.1.76

  • Minor update to the FTX rate limiting handling. We normally stay inside the rate limits automatically, so don't usually see rate limit errors from the API, but in these unusual conditions we've seen a couple. This update ensures those are handled better and your orders are retried a few times, with suitable back-offs.

13th Mar 2020 version 1.1.75

  • Added some extra handling around getting order state on Bybit, especially in the case where the bot is missing order details locally.

12th Mar 2020 version 1.1.74

  • Improvements to the connection reset handling for Bybit. This triggers when the exchange drops the connection. We should now smoothly reconnect to the exchange and re-subscribe to any required channels.

10th Mar 2020 version 1.1.73

  • Test version of Bybit integration added for Trading Groups.

10th Mar 2020 version 1.1.72

  • More tweaks to BitMEX's reluctance to give us up to date position information after a market order.

8th Mar 2020 version 1.1.71

  • Changed the way that we wait for BitMEX market orders to confirm as filled, as we'd seen a case where the old system wasn't working correctly duing System Overload.

26th Feb 2020 version 1.1.70

  • managed() is no longer supported on Bitfinex or Coinbase, as it is not possible to have open stop loss order and take profit order on the same coins, limiting the usefulness of this order type to trading only a small part of your balance. Replace managed() with 3 orders instead though (market(), stopOrder(), limit()).

20th Feb 2020 version 1.1.69

  • Cancelling tagged orders on FTX was not working in some situations. Fixed.

18th Feb 2020 version 1.1.68

  • `stopOrTakeProfit() was producing a lot of pointless log output. This is now gone.
  • A few other tweaks to log output to keep things tidy.

18th Feb 2020 version 1.1.67

  • Several updates to tracking of background tasks. They now report what they are up to in the logs from time to time so it's clear what is processing and what it is doing.
  • Adjusted the way trailing offsets are calculated in some conditions. It is now clearer especially when using offsets that are a mixture of different relative operators and there is a big gap between average entry price and current price.

11th Feb 2020 version 1.1.66

  • fixed an issue where it was possible to drop some log lines if you sent multiple alerts to the bot at the same time. This should be resolved now.

10th Feb 2020 version 1.1.65

  • Update to some of the trailing stop orders to fix an issue with trailing, especially when using average entry offsets.
  • Some optimisations in batching logs and events back, to reduce load on parts of our infrastructure.

9th Feb 2020 version 1.1.64

  • logs and event logs are flushed a little more readily now.
  • BitMEX tweaks for when we get rate limited.

7th Feb 2020 version 1.1.63

  • managed() and marketMaker() orders now get less confused when you try and cancel only buy or only sell orders. For managed, just the active ones on the correct side will be cancelled and it will try and pick up the pieces from there.
  • market orders have had their failure cases tightened up a bit.
  • aggressive() orders now also handle failures on trying to place the initial entry order more gracefully, and can indicate if the order was left unfilled, partially filled or fully filled to systems like managed().
  • As a result of the other 2 things, managed() is now also able to handle failures on entry better. Previously, a failed aggressive entry would cause managed() to still attempt to place any requested stops and TP's. It now recognises that the entry order failed and does not attempt to place the stop and take profit orders.

6th Feb 2020 version 1.1.62

  • FTX Balance reports were not being notified to your account since yesterdays release. This is resolved now.
  • Logging has been improved a little, so the viewable content should be more up to date when the bot is essentially doing nothing and waiting for something to happen.
  • Restart bot button now a little more aggressive about getting things done.

5th Feb 2020 version 1.1.61

  • FTX now handles moving orders a little better. The initial order status returned by the API is not always accurate, so we now wait for the first order update to give us the true state of the order. This can help make aggressive() work more reliably.

5th Feb 2020 version 1.1.60

  • Lots of internal infrastructure related improvements to make scaling smoother.
  • Bots now auto-update, so you will no longer need to do anything to ensure you are running the most up to date version. This happens automatically while the bot is idle.
  • New log viewing screen that lets you see all your recent log activity between restarts and api key changes. The results are also paginated for easy viewing and you can hover the mouse over any log line to see the exact time that line was generated.
  • Adding and removing API keys will no longer interrupt active running trades, as it no longer needs to restart the bot to do this. Note: You will need one more restart to migrate to this version, but once you are on 1.1.60 you won't see restarts any more.
  • Added some details of the stack running the bot to the logs. This is just to help with diagnosis when there is a problem.
  • Puts in place all the ground work needed to support the up-coming Trading Group features.
  • Significantly increased capacity, so we can support many more customers without any additional strain on systems. Keeping everything running ultra-fast is one of our top priorities.

4th Feb 2020 version 1.1.59

  • Support added for BitMEX's new XRPUSD Perpetual Contract. The contract specification and details can be seen on BitMEX's website. Full support for percentage based order sizes is also included.
  • BitMEX Reduce Only stop orders now use Close to ensure they don't require additional margin to execute. This is equivalent to ticking 'Close on trigger' on BitMEX. The differences between this and regular reduce only orders are subtle, but on balance this should be the better option, as it increases the chance your stop will actually execute.

28th Jan 2020 version 1.1.58

  • trailingTakeProfit() updated to ensure it doesn't miss momentary price spikes. Previously it would sample the price each time it was polled (once or twice a second generally). Now it considers every price update that occured since it last checked. This has added new ability of the bot to query recent highs and lows on the exchanges, going back up to around 1 minute.
  • Logging output from trailingTakeProfit() is now a little more informative.

26th Jan 2020 version 1.1.57

  • Min order sizes for BitMEX are now based on 0.0025 XBT, in line with BitMEX's notice here: https://blog.bitmex.com/notice-regarding-spam-orders/
  • aggressive() now have additional handling of cases where BitMEX double cancels orders, and a smarter recovery phase that should make the more stable on this exchange, even in 'wicky' moments.
  • trailing stop limits orders were not correctly trailing the limit price (just the trigger price). This has been resolved.

21st Jan 2020 version 1.1.56

  • Some big improvements to our stop order support. stopOrder(), trailingStop() and trailingTakeProfit() have all been updated with the following awesome:-
    • All 3 commands now support reduceOnly, so it is now possible to create stop orders that open positions as well as closing them.
    • They all also include support for a new argument. limitOffset. If you include limitOffset, then the stop order will be created using a stop limit order instead of a stop market order.
    • The docs for all 3 have been updated to include information about the new arguments.
    • It is supported on all exchanges.

19th Jan 2020 version 1.1.55

  • balance() now includes the key name in the response, so people tracking many accounts can work out which balance report is for which account.
  • aggressive() has been updated and refactored. Behaviour should be identical to before, only it now supports the background property. This allows you to either wait for the fill (default and previous behaviour), or allow the order to run in the background while the bot continues to process the commands that come after the aggressive() command.
  • Some improvements in logging - nothing exciting.

18th Jan 2020 version 1.1.54

  • Quick fix to add the new tagging system to stop market orders. 😊

18th Jan 2020 version 1.1.53

  • Upgraded the order tagging system. Tags are now long lived, and can be used between alerts and even between bot restarts. So now you can do something like this, for example...
    • open or add to a position
    • cancel existing stops and take profits using a tag (eg 'stops')
    • place new take profit and stop orders, giving them a tag ('stops' again). The new orders are placed relative to average entry and are sized to close the position in full
  • managed() max timeLimit has been increased from 1 day to 7 days.
  • More improvements to handling BitMEX overloads
  • Coinbase Pro and Bitfinex support improved to support the new internal tagging system
  • Deribit socket connection failures now report better information for diagnostics

11th Jan 2020 version 1.1.52

  • Percentage amounts now supported for ETHUSD on BitMEX

11th Jan 2020 version 1.1.51

  • managed orders timeLimit property was not being respected when using aggressive entry orders. It is now.
  • When the entry time limit has been reached, managed will still attempt to place a sl and tp if they were requested, to catch a partially filled entry.

2nd Jan 2020 version 1.1.50

  • Market maker order now support % sized bidAmount and askAmount.
  • Connections held open for slightly longer to prevent repeated reconnection attempts with stacked commands
  • Some updates to prepare for a cleaner event log in Alertatron.

31st Dec 2019 version 1.1.49

  • Updated FTX support to ignore attempts to use 'reduce only' orders on spot markets. The order is now submitted without the reduce only state enabled in this case.

30th Dec 2019 version 1.1.48

  • Couple of tweaks to BitMEX integration for better handling of position size information around startup and cancelling orders.
  • Minor improvements to the market maker order.

29th Dec 2019 version 1.1.47

  • BitMEX support now cleans up the orders table more often to reduce memory usage.
  • BitMEX cancelling orders is now faster
  • Trailing Take Profit orders now give out more consistent data to the log, making them a bit easier to track.
  • Managed order give clearer details on any failures
  • BitMEX support now enforces the exchange max stop order limit (10 stop orders). When you try and place the 11th stop order, it will fail.
  • Aggressive orders now handle price movements whilst trying to move an order better (especially on BitMEX, which just cancelled them before). This resolves an issue some customers were seeing when using managed() orders with an aggressive entry order.
  • Some behind-the-scenes updates to prepare for a new feature on the front-end (coming soon).

26th Dec 2019 version 1.1.46

  • BitMEX shutdown now waits for the socket connection to close.
  • Deribit rate limiting is looser on connection and tightens up with higher usage. Should result in faster performance when connecting for a few simple commands.
  • Aggressive orders now place their initial order a small distance away from the current price and move it up to the front of the book from there. This reduces the failure rate for placing the initial order during price action and leans on the more fault-tolerant 'move order' to adjust it into place.

24th Dec 2019 version 1.1.45

  • Ho ho ho edition
  • Big update to support the introduction of rate limits on the Deribit API. Alertatron now gracefully handles rate limit requests and imposes the required limits if you exceed your accounts rate limit. We use a smart rate limiting system that supports Deribits burst allowance, and only locks you down if you exceed the burst limits. We also auto reset the limits if your connection is idle for a while.

Full information about the limits can be see on Deribits site

23rd Dec 2019 version 1.1.44

  • Reduced min order size on BitMEX to $25
  • Rewrote the background processing system that manages background tasks. Previously this waiting for all commands in the block to execute, then ran background tasks until they all completed. Now the background processing starts as soon as the order is execute. The worst case scenario for the old solution was like so...
keys(symbol) {
    # Start a background order (like market maker or managed)

    # Wait a long time (any command that took a long time really)

    # Background tasks would not check their status until here

New Behaviour is like this...

keys(symbol) {
    # Start a background order (like market maker or managed)

    # Background task is now updating in the background from here

    # Wait a long time (any command that took a long time really)

    # Background tasks can keep going here, or they might have finished long ago

20th Dec 2019 version 1.1.43

  • Rewrote part of the order replacement strategy in the Market Maker order, so it can tolerate the wicks and post-only behaviour commonly seen on BitMEX.
  • A few minor adjustments to the BitMEX driver to help keep order information fresh, more of the time.

18th Dec 2019 version 1.1.42

  • Cancelling background orders now gives better information on what's happening
  • Updated the order in which orders are cancelled. Background orders are now cancelled right away, instead of being asked to cancel.
  • After using a cancel() command you can now be sure that all order will have finished cancelling before the next command starts, freeing up the relevant margin allocated to those orders. Previously, some orders were queued for deletion and that process had not completed by the time the next command started.
  • Version 42, which is the answer.

15th Dec 2019 version 1.1.41

  • Lots of minor improvements...
    • Deribit no longer attempts to cancel orders that were already cancelled
    • Track a little more about orders in sessions, for future features.
    • BitMEX now reports less pointless information into the log
    • A few logging messages tweaked for better clarity

15th Dec 2019 version 1.1.40

  • Added some more tests for trailing stops and take profits
  • Aggressive orders now handle some edge cases a little better
  • Bot is now capabale of telling Alertatron which version it is, making some planned features possible.

13th Dec 2019 version 1.1.39

  • Updated the ping pong order so it now works with % sized orders
  • Updated the aggressive entry order to function more reliably when used on multiple exchanges / markets at once.
  • Updated the logging of the aggressive entry order so it is clearer which messages are part of which order
  • Updated algorithic virtual order handling, also adding some clearer logging.

12th Dec 2019 version 1.1.38

  • Fixed an issue with placing market orders on FTX and updated some tests.

11th Dec 2019 version 1.1.37

  • Add support for balance() to FTX
  • Fixed a couple of potential issues on FTX if you have no open position

11th Dec 2019 version 1.1.36

  • Update to FTX to use the correct value for PnL and average entry prices.

11th Dec 2019 version 1.1.35

  • Beta of FTX support added
  • Updated the market market order to move orders in places when auto balancing, instead of using a cancel / place new order approach. Should be more efficient, esp on BitMEX.

9th Dec 2019 version 1.1.34

  • Fixed a bug in the market maker order that caused the autoBalanceEvery setting to be far far quicker than specified. Now 15m means 15 minutes and now a fraction of a second...

1st Dec 2019 version 1.1.33

  • Handle attempts to cancel orders that have already been cancelled better.
  • Updating order price will now validate the state of the order prior to attempting to change the price.
  • Both of these improvements are to help resolve some recent issues seen on BitMEX. If you use BitMEX, it is recommended that you restart your bot to get these changes as soon as possible.

1st Dec 2019 version 1.1.32

  • Updated the min order size for BitMEX XBTUSD to match their requirements and reduce the chance to people getting their BitMEX account banned for 'spam orders'. Min order size is now 20 contracts, with 1 contract increments.
  • Tweaked to the rate limiting on the BitMEX api. This should have no impact under normal conditions.

26th Nov 2019 version 1.1.31

  • Resolved an issue reported when running orders on multiple symbols simultaneously on the same exchange. BitMEX and Deribit that trade on more than one symbol / instrument, especially from the same alert are recommended to update to this release.

26th Nov 2019 version 1.1.30

  • Minor adjustments to logging wording for better clarity

25th Nov 2019 version 1.1.29

  • Reduced the amount of logging, especially during trailing stop orders.
  • Provided some details about cancellations, as BitMEX can report harmless errors in some conditions.

23rd Nov 2019 version 1.1.28

myApiKeys(XBTUSD) {
    managed(side=buy, amount=1000, entry=aggressive, stopLoss=1%, takeProfit=3%);

20th Nov 2019 version 1.1.27

  • Added a new command: exchangeSettings(). This allows exchange specific settings to be adjusted. At the moment there is only a single setting to change on BitMEX only, which is the ability to try and change the leverage setting to some target value, or to enable Cross Margin. Learn more here

18th Nov 2019 version 1.1.26

  • Fixed an issue that meant BitMEX always used the current price for offsets, even when requesting to use the average entry price.

17th Nov 2019 version 1.1.25

  • Resolved a race condition on starting up the Deribit connection, when multiple separate alerts, all wanting to execute commands on the same Deribit API keys, arrive at Alertatron simultaneously. Whoever gets in there first starts up the connection, with the other attempts waiting for the connection to be stable before proceeding.

17th Nov 2019 version 1.1.24

  • Added support for offsets relative to average entry price on Deribit and BitMEX (see below).
  • Updated the back-off strategy used on BitMEX during 'system overload'. This should enable the bot to make more attempts to push orders through, as well as making more over-all attempts before failing. Other exchanges are not affected by this issue.
  • Updated the managed() order. Previously, if using position=xxx for your entry, and your position size was already at the target level, the command would correctly determine that the entry order was of zero size. It would then abort the entire order. This update ensures that the order will keep running, even though no entry order was placed, to close the current position using a stop loss or take profit if they were defined.

Average Entry

Prior to this release you can specify various prices (such as limit order prices) relative to the current price, using an absolute offset, a percentage offset, or it was also possible to specific the exact price to use. These options were expressed like this...

Example Meaning (assuming asset priced in USD)
offset=50 offset $50 from the current price.
offset=1% offset is calculated as a percentage of the current price. If the price is $10,000, and offset is 1%, then 1% of 10,000 is 100. An offset of $100 will be used.
offset=@950 The @ at the start of the value indicates this should be treated as an absolute price of $950, regardless of what the current price is.

With the addition of support for Average Entry offsets, it is now also possible to specify your offsets relative to your open positions average entry price, instead of the being limited to the current price.

This is done by prefixing the offset value with an e (for entry).

So, in addition to all the options in the table above, you can now also use the following values...

Example Meaning (assuming asset priced in USD)
offset=e50 With an open position, offset will be $50 from your average entry. With no open position, offset will be $50 from the current price, as above.
offset=e1% With an open position, offset will be 1% away from your average entry price. With no open position, offset will be relative to current price, as above.

For spot exchanges that don't have a concept of an open position or average entry price, these new options will give results relative to the current price. This will also happen on BitMEX and Deribit in cases where you don't have an open position.

13th Nov 2019 version 1.1.23

  • Update to cancel() on BitMEX so it does not attempt to cancel orders that were already filled. This was harmless, but produces error messages in the logging terminal that were confusing.
  • The BitMEX API handler will now wait longer after submitting an order for BitMEX to update the accounts position size. This is only an issue during 'system overload' events and the longer wait should increase stability when using that exchange under those conditions. Other exchanges were not affected by this issue.

12th Nov 2019 version 1.1.22

  • MarketMaker() order is now a little stricter when reading some of its settings. The default values are also more useful.

Some images from Unsplash

About Alertatron.com

Your TradingView alerts, with charts, PM'd to you.

Get all your alerts from TradingView, sent to Telegram, Discord, Slack, Email or webhooks, with a chart snapshot attached.

Capture Charts

See a high quality chart with every alert, captured at the moment the alert was triggered. See exactly what the market was doing and make informed decisions.

Automate Trading

Trigger orders on popular cryptocurrency exchanges and trade 24/7. Access powerful algorithmic orders to maximise your profits.


Connect your alerts to Telegram (channels, groups and private chats), Discord, Slack, email or send push notifications to other services with webhooks.

Easy To Setup

Nothing to install and no browser extensions. Captures alerts 24/7, even with your computer switched off. Be up and running in seconds.