Automated Trading Limit Order


side, amount, offset, postOnly, reduceOnly, position, tag

Places a standard limit order. The command will finish as soon as the limit order has been placed on the exchange. It will not wait for the order to be filled.

side required text, one of buy, sell. defaults to buy

Is this a buy or sell order.
Required if you don't use position.

amount required number, defaults to 0

The size of the order. The units depend on the symbol and exchange. Can be given as an absolute amount, percentage of your balance or percentage of your available balance.

Example Meaning (if on BitMEX XBTUSD)
amount=1000 Uses an amount of 1000 contracts
amount=50% Will calculate the amount as a percentage of your balance/equity. For example, if your balance is 1 BTC and the current price is $10,000, 50% of 1 btc is 0.5 btc. 0.5 btc is worth $5,000. At $1 per contract, the order will be for 5,000 contracts.
amount=50%% Similar to above, only will use 50% of your available balance/equity. Equity already locked up in positions and pending orders will not be considered.
amount=50%p Will work out 50% of your position size and use that as the amount. The p stands for Position Size. This calculation rounds up to the nearest order size step.
amount=50%b Same as 50% - the b stands for Balance
amount=50%a Same as 50%% - the a stands for Available Balance

Percentage amounts are supported on all exchanges. On BitMEX they are supported on most (but not all) symbols. XBTUSD is supported and all symbols against XBT (eg ETHXBT), but not on symbols backed against other currencies (eg ETHUSD, XBTJPY etc can not use % amounts and must use fixed amounts - this is because we need live price information for additional symbols to complete the calculation, which are not tracked to by default).

Required if you don't use position.

offset required number, defaults to 1%

Calculates the price as an offset from the current price, or average entry price. Positive values always go in the most logical direction... For a buy order or stop sell order, +offsets are to lower prices. For a sell or stop buy, +offsets are to higher prices. Negative offsets are permitted, but may often result in the exchange rejecting the orders - be aware of how the order book on an exchange works. For an asset quoted in USD (eg BTCUSD), offset can be given in the following ways:-

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=e50 With an open position, offset will be $50 relative to the average entry price. With no open position, offset will be relative to current price
offset=e1% With an open position, offset will be 1% relative to the average entry price. With no open position, offset will be relative to current price
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.
postOnly optional boolean, one of true, false. defaults to true

Attempt to submit the order as a post-only order. Post only orders behave differently between exchanges...

Exchange Behaviour
BitMEX Orders place on the wrong side of the book are rejected. Without PostOnly, these orders would be executed as market orders.
Deribit Orders placed on the wrong side of the book have their price changed to the closest valid price.
reduceOnly optional boolean, one of true, false. defaults to false

Attempt to submit the order as a reduce-only order. This is ignored in any spot markets / exchanges, as there is no concept of an open position there.

position optional number,

An alternative way to calculate the side and amount for the order.

The amount traded will be the difference between your current open position and the target position size. For example, if your current position is 100 contracts long, and you request a target position of 300, then an order will be placed to buy 200 contracts (the difference between your current position and target position). In fact, regardless of your current position (long, short, nothing), the order will be whatever size it needs to be to ensure you finish with an open position of the target size. Some more examples...

Example What happens, if you current position is 500 contracts
position=1000 Buy 500 contracts, resulting in a position size of 1000
position=200 Sell 300 contracts, leaving you with 200.
position=0 Sell 500 contracts. This will effectively close your position, regardless of it's current size.
position=-500 Sell 1000 contracts, taking you from 500 contracts long to 500 contracts short.
position=50% Target position size will be 50% of your current balance size
position=50%% Target position size will be 50% of your available balance size
position=50%p Target position size will be 50% of your current position size
position=50%b Same as 50% - the b stands for Balance
position=50%a Same as 50%% - the a stands for Available Balance

On spot exchanges, like Bitfinex, the target amount represents the amount of the asset you'd like to end up with. For example, on the BTCUSD pair, position would represent the amount of BTC you'd like to own after the order completes.

Required if you don't use side and amount.

tag optional string, defaults to varies by order type

Applies a tag to an order that can later be used to cancel this order, even from a different session. Many orders can be given the same tag, making it possible to cancel them all as a group at a later date. These tags can be referenced by the cancel() command to cancel specific named orders. See cancel() with which=taggedfor more details.

Example: Place an order to buy 1000 contracts

myApiKeys(XBTUSD) {
    limit(side=buy, amount=1000, offset=10);

Places a single order to buy 1000 contracts of XBTUSD (assumes myApiKeys are keys for BitMEX). The order will be placed $10 below the current live price, due to the offset=10 argument. As soon as the order has been submitted, the bot will disconnect without waiting for it to be filled.

Example: Change my open position size to -500 contracts

myApiKeys(XBTUSD) {
    limit(position=-500, offset=10);

This time the order is using position. The bot will calculate the size of order needed to change your open position from it's current size (long or short), to -500 contracts (or 500 contracts short). Once the required size has been calculated, the order is placed $10 away from the current price and left for the market to fill.

Example: Take profit if price rises 3% from here

myApiKeys(XBTUSD) {
    limit(side=sell, amount=1000, offset=3%, reduceOnly=true);

Places a limit order to sell 1000 contracts 3% above the current price. The order will be set to 'reduce only', so it will only make your position smaller.

Some images from Unsplash


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.