Skip to content

Latest commit

 

History

History
519 lines (378 loc) · 26.3 KB

OrderApi.md

File metadata and controls

519 lines (378 loc) · 26.3 KB

BitMexApi.OrderApi

All URIs are relative to https://localhost/api/v1

Method HTTP request Description
orderAmend PUT /order Amend the quantity or price of an open order.
orderAmendBulk PUT /order/bulk Amend multiple orders.
orderCancel DELETE /order Cancel order(s). Send multiple order IDs to cancel in bulk.
orderCancelAll DELETE /order/all Cancels all of your orders.
orderCancelAllAfter POST /order/cancelAllAfter Automatically cancel all your orders after a specified timeout.
orderClosePosition POST /order/closePosition Close a position. [Deprecated, use POST /order with execInst: 'Close']
orderGetOrders GET /order Get your orders.
orderNew POST /order Create a new order.
orderNewBulk POST /order/bulk Create multiple new orders.

orderAmend

Order orderAmend(opts)

Amend the quantity or price of an open order.

Send an `orderID` or `origClOrdID` to identify the order you wish to amend. Both order quantity and price can be amended. Only one `qty` field can be used to amend. Use the `leavesQty` field to specify how much of the order you wish to remain open. This can be useful if you want to adjust your position's delta by a certain amount, regardless of how much of the order has already filled. Use the `simpleOrderQty` and `simpleLeavesQty` fields to specify order size in Bitcoin, rather than contracts. These fields will round up to the nearest contract. Like order placement, amending can be done in bulk. Simply send a request to `PUT /api/v1/order/bulk` with a JSON body of the shape: `{"orders": [{...}, {...}]}`, each object containing the fields used in this endpoint.

Example

var BitMexApi = require('bit_mex_api');

var apiInstance = new BitMexApi.OrderApi();

var opts = { 
  'orderID': "orderID_example", // String | Order ID
  'origClOrdID': "origClOrdID_example", // String | Client Order ID. See POST /order.
  'clOrdID': "clOrdID_example", // String | Optional new Client Order ID, requires `origClOrdID`.
  'simpleOrderQty': 1.2, // Number | Optional order quantity in units of the underlying instrument (i.e. Bitcoin).
  'orderQty': 3.4, // Number | Optional order quantity in units of the instrument (i.e. contracts).
  'simpleLeavesQty': 1.2, // Number | Optional leaves quantity in units of the underlying instrument (i.e. Bitcoin). Useful for amending partially filled orders.
  'leavesQty': 3.4, // Number | Optional leaves quantity in units of the instrument (i.e. contracts). Useful for amending partially filled orders.
  'price': 1.2, // Number | Optional limit price for 'Limit', 'StopLimit', and 'LimitIfTouched' orders.
  'stopPx': 1.2, // Number | Optional trigger price for 'Stop', 'StopLimit', 'MarketIfTouched', and 'LimitIfTouched' orders. Use a price below the current price for stop-sell orders and buy-if-touched orders.
  'pegOffsetValue': 1.2, // Number | Optional trailing offset from the current price for 'Stop', 'StopLimit', 'MarketIfTouched', and 'LimitIfTouched' orders; use a negative offset for stop-sell orders and buy-if-touched orders. Optional offset from the peg price for 'Pegged' orders.
  'text': "text_example" // String | Optional amend annotation. e.g. 'Adjust skew'.
};

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.orderAmend(opts, callback);

Parameters

Name Type Description Notes
orderID String Order ID [optional]
origClOrdID String Client Order ID. See POST /order. [optional]
clOrdID String Optional new Client Order ID, requires `origClOrdID`. [optional]
simpleOrderQty Number Optional order quantity in units of the underlying instrument (i.e. Bitcoin). [optional]
orderQty Number Optional order quantity in units of the instrument (i.e. contracts). [optional]
simpleLeavesQty Number Optional leaves quantity in units of the underlying instrument (i.e. Bitcoin). Useful for amending partially filled orders. [optional]
leavesQty Number Optional leaves quantity in units of the instrument (i.e. contracts). Useful for amending partially filled orders. [optional]
price Number Optional limit price for 'Limit', 'StopLimit', and 'LimitIfTouched' orders. [optional]
stopPx Number Optional trigger price for 'Stop', 'StopLimit', 'MarketIfTouched', and 'LimitIfTouched' orders. Use a price below the current price for stop-sell orders and buy-if-touched orders. [optional]
pegOffsetValue Number Optional trailing offset from the current price for 'Stop', 'StopLimit', 'MarketIfTouched', and 'LimitIfTouched' orders; use a negative offset for stop-sell orders and buy-if-touched orders. Optional offset from the peg price for 'Pegged' orders. [optional]
text String Optional amend annotation. e.g. 'Adjust skew'. [optional]

Return type

Order

Authorization

No authorization required

HTTP request headers

  • Content-Type: application/json, application/x-www-form-urlencoded
  • Accept: application/json, application/xml, text/xml, application/javascript, text/javascript

orderAmendBulk

[Order] orderAmendBulk(opts)

Amend multiple orders.

Similar to POST /amend, but with multiple orders. `application/json` only. Ratelimited at 50%.

Example

var BitMexApi = require('bit_mex_api');

var apiInstance = new BitMexApi.OrderApi();

var opts = { 
  'orders': "orders_example" // String | An array of orders.
};

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.orderAmendBulk(opts, callback);

Parameters

Name Type Description Notes
orders String An array of orders. [optional]

Return type

[Order]

Authorization

No authorization required

HTTP request headers

  • Content-Type: application/json, application/x-www-form-urlencoded
  • Accept: application/json, application/xml, text/xml, application/javascript, text/javascript

orderCancel

[Order] orderCancel(opts)

Cancel order(s). Send multiple order IDs to cancel in bulk.

Either an orderID or a clOrdID must be provided.

Example

var BitMexApi = require('bit_mex_api');

var apiInstance = new BitMexApi.OrderApi();

var opts = { 
  'orderID': "orderID_example", // String | Order ID(s).
  'clOrdID': "clOrdID_example", // String | Client Order ID(s). See POST /order.
  'text': "text_example" // String | Optional cancellation annotation. e.g. 'Spread Exceeded'.
};

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.orderCancel(opts, callback);

Parameters

Name Type Description Notes
orderID String Order ID(s). [optional]
clOrdID String Client Order ID(s). See POST /order. [optional]
text String Optional cancellation annotation. e.g. 'Spread Exceeded'. [optional]

Return type

[Order]

Authorization

No authorization required

HTTP request headers

  • Content-Type: application/json, application/x-www-form-urlencoded
  • Accept: application/json, application/xml, text/xml, application/javascript, text/javascript

orderCancelAll

Object orderCancelAll(opts)

Cancels all of your orders.

Example

var BitMexApi = require('bit_mex_api');

var apiInstance = new BitMexApi.OrderApi();

var opts = { 
  'symbol': "symbol_example", // String | Optional symbol. If provided, only cancels orders for that symbol.
  'filter': "filter_example", // String | Optional filter for cancellation. Use to only cancel some orders, e.g. `{\"side\": \"Buy\"}`.
  'text': "text_example" // String | Optional cancellation annotation. e.g. 'Spread Exceeded'
};

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.orderCancelAll(opts, callback);

Parameters

Name Type Description Notes
symbol String Optional symbol. If provided, only cancels orders for that symbol. [optional]
filter String Optional filter for cancellation. Use to only cancel some orders, e.g. `{"side": "Buy"}`. [optional]
text String Optional cancellation annotation. e.g. 'Spread Exceeded' [optional]

Return type

Object

Authorization

No authorization required

HTTP request headers

  • Content-Type: application/json, application/x-www-form-urlencoded
  • Accept: application/json, application/xml, text/xml, application/javascript, text/javascript

orderCancelAllAfter

Object orderCancelAllAfter(timeout)

Automatically cancel all your orders after a specified timeout.

Useful as a dead-man's switch to ensure your orders are canceled in case of an outage. If called repeatedly, the existing offset will be canceled and a new one will be inserted in its place. Example usage: call this route at 15s intervals with an offset of 60000 (60s). If this route is not called within 60 seconds, all your orders will be automatically canceled. This is also available via WebSocket.

Example

var BitMexApi = require('bit_mex_api');

var apiInstance = new BitMexApi.OrderApi();

var timeout = 1.2; // Number | Timeout in ms. Set to 0 to cancel this timer. 


var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.orderCancelAllAfter(timeout, callback);

Parameters

Name Type Description Notes
timeout Number Timeout in ms. Set to 0 to cancel this timer.

Return type

Object

Authorization

No authorization required

HTTP request headers

  • Content-Type: application/json, application/x-www-form-urlencoded
  • Accept: application/json, application/xml, text/xml, application/javascript, text/javascript

orderClosePosition

Order orderClosePosition(symbol, opts)

Close a position. [Deprecated, use POST /order with execInst: 'Close']

If no `price` is specified, a market order will be submitted to close the whole of your position. This will also close all other open orders in this symbol.

Example

var BitMexApi = require('bit_mex_api');

var apiInstance = new BitMexApi.OrderApi();

var symbol = "symbol_example"; // String | Symbol of position to close.

var opts = { 
  'price': 1.2 // Number | Optional limit price.
};

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.orderClosePosition(symbol, opts, callback);

Parameters

Name Type Description Notes
symbol String Symbol of position to close.
price Number Optional limit price. [optional]

Return type

Order

Authorization

No authorization required

HTTP request headers

  • Content-Type: application/json, application/x-www-form-urlencoded
  • Accept: application/json, application/xml, text/xml, application/javascript, text/javascript

orderGetOrders

[Order] orderGetOrders(opts)

Get your orders.

To get open orders only, send {&quot;open&quot;: true} in the filter param. See <a href=&quot;http://www.onixs.biz/fix-dictionary/5.0.SP2/msgType_D_68.html\&quot;&gt;the FIX Spec</a> for explanations of these fields.

Example

var BitMexApi = require('bit_mex_api');

var apiInstance = new BitMexApi.OrderApi();

var opts = { 
  'symbol': "symbol_example", // String | Instrument symbol. Send a bare series (e.g. XBU) to get data for the nearest expiring contract in that series.  You can also send a timeframe, e.g. `XBU:monthly`. Timeframes are `daily`, `weekly`, `monthly`, `quarterly`, and `biquarterly`.
  'filter': "filter_example", // String | Generic table filter. Send JSON key/value pairs, such as `{\"key\": \"value\"}`. You can key on individual fields, and do more advanced querying on timestamps. See the [Timestamp Docs](https://www.bitmex.com/app/restAPI#timestamp-filters) for more details.
  'columns': "columns_example", // String | Array of column names to fetch. If omitted, will return all columns.  Note that this method will always return item keys, even when not specified, so you may receive more columns that you expect.
  'count': 100, // Number | Number of results to fetch.
  'start': 0, // Number | Starting point for results.
  'reverse': false, // Boolean | If true, will sort results newest first.
  'startTime': new Date("2013-10-20"), // Date | Starting date filter for results.
  'endTime': new Date("2013-10-20") // Date | Ending date filter for results.
};

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.orderGetOrders(opts, callback);

Parameters

Name Type Description Notes
symbol String Instrument symbol. Send a bare series (e.g. XBU) to get data for the nearest expiring contract in that series. You can also send a timeframe, e.g. `XBU:monthly`. Timeframes are `daily`, `weekly`, `monthly`, `quarterly`, and `biquarterly`. [optional]
filter String Generic table filter. Send JSON key/value pairs, such as `{&quot;key&quot;: &quot;value&quot;}`. You can key on individual fields, and do more advanced querying on timestamps. See the Timestamp Docs for more details. [optional]
columns String Array of column names to fetch. If omitted, will return all columns. Note that this method will always return item keys, even when not specified, so you may receive more columns that you expect. [optional]
count Number Number of results to fetch. [optional] [default to 100]
start Number Starting point for results. [optional] [default to 0]
reverse Boolean If true, will sort results newest first. [optional] [default to false]
startTime Date Starting date filter for results. [optional]
endTime Date Ending date filter for results. [optional]

Return type

[Order]

Authorization

No authorization required

HTTP request headers

  • Content-Type: application/json, application/x-www-form-urlencoded
  • Accept: application/json, application/xml, text/xml, application/javascript, text/javascript

orderNew

Order orderNew(symbol, opts)

Create a new order.

This endpoint is used for placing orders. Valid order types are Market, Limit, Stop, StopLimit, MarketIfTouched, LimitIfTouched, MarketWithLeftOverAsLimit, and Pegged. If no order type is provided, BitMEX will assume 'Limit'. Be very careful with 'Market' and 'Stop' orders as you may be filled at an unfavourable price. You can submit bulk orders by POSTing an array of orders to `/api/v1/order/bulk`. Send a JSON payload with the shape: `{&quot;orders&quot;: [{...}, {...}]}`, with each inner object containing the same fields that would be sent to this endpoint. A note on API tools: if you want to keep track of order IDs yourself, set a unique clOrdID per order. This clOrdID will come back as a property on the order and any related executions (including on the WebSocket), and can be used to get or cancel the order. Max length is 36 characters. To generate a clOrdID, consider setting a prefix, and incrementing a counter or generating a UUID. Some UUIDs are longer than 36 characters, so use a url-safe base64 encoding. For example, the prefix `'bmex_mm_'` and the UUID `'7fbd6545-bb0c-11e4-a273-6003088a7c04'` creates `'bmex_mm_f71lRbsMEeSic2ADCIp8BA'`. See the BitMEX Reference Market Maker for an example of how to use and generate clOrdIDs.

Example

var BitMexApi = require('bit_mex_api');

var apiInstance = new BitMexApi.OrderApi();

var symbol = "symbol_example"; // String | Instrument symbol. e.g. 'XBT24H'.

var opts = { 
  'side': "side_example", // String | Order side. Valid options: Buy, Sell. Defaults to 'Buy' unless `orderQty` or `simpleOrderQty` is negative.
  'simpleOrderQty': 1.2, // Number | Order quantity in units of the underlying instrument (i.e. Bitcoin).
  'quantity': 3.4, // Number | Deprecated: use `orderQty`.
  'orderQty': 3.4, // Number | Order quantity in units of the instrument (i.e. contracts).
  'price': 1.2, // Number | Optional limit price for 'Limit', 'StopLimit', and 'LimitIfTouched' orders.
  'displayQty': 3.4, // Number | Optional quantity to display in the book. Use 0 for a hidden order.
  'stopPrice': 1.2, // Number | Deprecated: use `stopPx`.
  'stopPx': 1.2, // Number | Optional trigger price for 'Stop', 'StopLimit', 'MarketIfTouched', and 'LimitIfTouched' orders. Use a price below the current price for stop-sell orders and buy-if-touched orders. Use `execInst` of 'MarkPrice' or 'LastPrice' to define the current price used for triggering.
  'clOrdID': "clOrdID_example", // String | Optional Client Order ID. This clOrdID will come back on the order and any related executions.
  'clOrdLinkID': "clOrdLinkID_example", // String | Optional Client Order Link ID for contingent orders.
  'pegOffsetValue': 1.2, // Number | Optional trailing offset from the current price for 'Stop', 'StopLimit', 'MarketIfTouched', and 'LimitIfTouched' orders; use a negative offset for stop-sell orders and buy-if-touched orders. Optional offset from the peg price for 'Pegged' orders.
  'pegPriceType': "pegPriceType_example", // String | Optional peg price type. Valid options: LastPeg, MidPricePeg, MarketPeg, PrimaryPeg, TrailingStopPeg, TrailingStopPeg.
  'type': "type_example", // String | Deprecated: use `ordType`.
  'ordType': "Limit", // String | Order type. Valid options: Market, Limit, Stop, StopLimit, MarketIfTouched, LimitIfTouched, MarketWithLeftOverAsLimit, Pegged. Defaults to 'Limit' when `price` is specified. Defaults to 'Stop' when `stopPx` is specified. Defaults to 'StopLimit' when `price` and `stopPx` are specified.
  'timeInForce': "timeInForce_example", // String | Time in force. Valid options: Day, GoodTillCancel, ImmediateOrCancel, FillOrKill. Defaults to 'GoodTillCancel' for 'Limit', 'StopLimit', 'LimitIfTouched', and 'MarketWithLeftOverAsLimit' orders.
  'execInst': "execInst_example", // String | Optional execution instructions. Valid options: ParticipateDoNotInitiate, AllOrNone, MarkPrice, IndexPrice, LastPrice, Close, ReduceOnly, Fixed. 'AllOrNone' instruction requires `displayQty` to be 0. 'MarkPrice' or 'LastPrice' instruction valid for 'Stop', 'StopLimit', 'MarketIfTouched', and 'LimitIfTouched' orders.
  'contingencyType': "contingencyType_example", // String | Optional contingency type for use with `clOrdLinkID`. Valid options: OneCancelsTheOther, OneTriggersTheOther, OneUpdatesTheOtherAbsolute, OneUpdatesTheOtherProportional.
  'text': "text_example" // String | Optional order annotation. e.g. 'Take profit'.
};

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.orderNew(symbol, opts, callback);

Parameters

Name Type Description Notes
symbol String Instrument symbol. e.g. 'XBT24H'.
side String Order side. Valid options: Buy, Sell. Defaults to 'Buy' unless `orderQty` or `simpleOrderQty` is negative. [optional]
simpleOrderQty Number Order quantity in units of the underlying instrument (i.e. Bitcoin). [optional]
quantity Number Deprecated: use `orderQty`. [optional]
orderQty Number Order quantity in units of the instrument (i.e. contracts). [optional]
price Number Optional limit price for 'Limit', 'StopLimit', and 'LimitIfTouched' orders. [optional]
displayQty Number Optional quantity to display in the book. Use 0 for a hidden order. [optional]
stopPrice Number Deprecated: use `stopPx`. [optional]
stopPx Number Optional trigger price for 'Stop', 'StopLimit', 'MarketIfTouched', and 'LimitIfTouched' orders. Use a price below the current price for stop-sell orders and buy-if-touched orders. Use `execInst` of 'MarkPrice' or 'LastPrice' to define the current price used for triggering. [optional]
clOrdID String Optional Client Order ID. This clOrdID will come back on the order and any related executions. [optional]
clOrdLinkID String Optional Client Order Link ID for contingent orders. [optional]
pegOffsetValue Number Optional trailing offset from the current price for 'Stop', 'StopLimit', 'MarketIfTouched', and 'LimitIfTouched' orders; use a negative offset for stop-sell orders and buy-if-touched orders. Optional offset from the peg price for 'Pegged' orders. [optional]
pegPriceType String Optional peg price type. Valid options: LastPeg, MidPricePeg, MarketPeg, PrimaryPeg, TrailingStopPeg, TrailingStopPeg. [optional]
type String Deprecated: use `ordType`. [optional]
ordType String Order type. Valid options: Market, Limit, Stop, StopLimit, MarketIfTouched, LimitIfTouched, MarketWithLeftOverAsLimit, Pegged. Defaults to 'Limit' when `price` is specified. Defaults to 'Stop' when `stopPx` is specified. Defaults to 'StopLimit' when `price` and `stopPx` are specified. [optional] [default to Limit]
timeInForce String Time in force. Valid options: Day, GoodTillCancel, ImmediateOrCancel, FillOrKill. Defaults to 'GoodTillCancel' for 'Limit', 'StopLimit', 'LimitIfTouched', and 'MarketWithLeftOverAsLimit' orders. [optional]
execInst String Optional execution instructions. Valid options: ParticipateDoNotInitiate, AllOrNone, MarkPrice, IndexPrice, LastPrice, Close, ReduceOnly, Fixed. 'AllOrNone' instruction requires `displayQty` to be 0. 'MarkPrice' or 'LastPrice' instruction valid for 'Stop', 'StopLimit', 'MarketIfTouched', and 'LimitIfTouched' orders. [optional]
contingencyType String Optional contingency type for use with `clOrdLinkID`. Valid options: OneCancelsTheOther, OneTriggersTheOther, OneUpdatesTheOtherAbsolute, OneUpdatesTheOtherProportional. [optional]
text String Optional order annotation. e.g. 'Take profit'. [optional]

Return type

Order

Authorization

No authorization required

HTTP request headers

  • Content-Type: application/json, application/x-www-form-urlencoded
  • Accept: application/json, application/xml, text/xml, application/javascript, text/javascript

orderNewBulk

[Order] orderNewBulk(opts)

Create multiple new orders.

This endpoint is used for placing bulk orders. Valid order types are Market, Limit, Stop, StopLimit, MarketIfTouched, LimitIfTouched, MarketWithLeftOverAsLimit, and Pegged. Each individual order object in the array should have the same properties as an individual POST /order call. This endpoint is much faster for getting many orders into the book at once. Because it reduces load on BitMEX systems, this endpoint is ratelimited at `ceil(0.5 * orders)`. Submitting 10 orders via a bulk order call will only count as 5 requests. For now, only `application/json` is supported on this endpoint.

Example

var BitMexApi = require('bit_mex_api');

var apiInstance = new BitMexApi.OrderApi();

var opts = { 
  'orders': "orders_example" // String | An array of orders.
};

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.orderNewBulk(opts, callback);

Parameters

Name Type Description Notes
orders String An array of orders. [optional]

Return type

[Order]

Authorization

No authorization required

HTTP request headers

  • Content-Type: application/json, application/x-www-form-urlencoded
  • Accept: application/json, application/xml, text/xml, application/javascript, text/javascript