roq-bitmex¶
Links¶
Supports¶
Spot |
✓ |
Futures |
✓ |
Options |
|
Combos |
Reference Data |
✓ |
Market Status |
✓ |
Top of Book |
✓ |
Market by Price |
✓ |
Market by Order |
|
Trade Summary |
✓ |
Statistics |
✓ |
Create |
✓ |
Modify |
✓ |
Cancel |
✓ |
Cancel All |
✓ |
Auto-Cancel |
Positions |
✓ |
Funds |
Installing¶
$ mamba install \
--channel https://roq-trading.com/conda/stable \
roq-bitmex
$ mamba install \
--channel https://roq-trading.com/conda/unstable \
roq-bitmex
Using¶
$ roq-bitmex \
--name "bitmex" \
--config_file $CONFIG_FILE_PATH \
--client_listen_address $UNIX_SOCKET_PATH \
--flagfile $ENVIRONMENT_FLAGFILE
Flags¶
$ roq-bitmex --help
--exchange
(bitmex
)Exchange identifier
--rest_uri
(https://testnet.bitmex.com
)Exchange end-point
--rest_proxy
Proxy end-point
--rest_ping_freq
(5s
)Ping frequency
--rest_ping_path
(/api/v1/announcement/urgent
)Ping path
--rest_request_timeout
(30s
)Request timeout
--rest_expires_timeout
(1s
)Expires time-out
--rest_allow_order_request_pipeline
(false
)Allow more than one in-flight order action?
--ws_uri
(wss://ws.testnet.bitmex.com/realtime
)Exchange end-point
--ws_ping_freq
(5s
)Ping frequency
--ws_request_timeout
(15s
)Request time-out
--ws_cancel_on_disconnect
(true
)Cancel orders on disconnect?
--ws_cancel_all_after
(15s
)Cancel all after, requires cancel-on-disconnect
--encode_buffer_size
(1048576
)Encode buffer size
--decode_buffer_size
(10485760
)Decode buffer size
--mbp_allow_price_inversion
(false
)Allow price inversion?
--oms_using_web_socket
(false
)Use web-socket for order management?
Environments¶
$ $CONDA_PREFIX/share/roq-bitmex/flags/prod/flags.cfg
# flagfile for the roq-bitmex gateway
--rest_uri=https://www.bitmex.com
--ws_uri=wss://ws.bitmex.com/realtime
$ $CONDA_PREFIX/share/roq-bitmex/flags/test/flags.cfg
# flagfile for the roq-bitmex gateway
--rest_uri=https://testnet.bitmex.com
--ws_uri=wss://ws.testnet.bitmex.com/realtime
Configuration¶
$ $CONDA_PREFIX/share/roq-bitmex/config.toml
Important
The template will be replaced when the software is upgraded. Make a copy and modify to your needs.
symbols = [
"^XBTUSD[A-Z]?([FGHJKMNQUVXZ][0-9]{2})?$",
"^ETHUSD[A-Z]?([FGHJKMNQUVXZ][0-9]{2})?$",
"^[.]XBTUSD[A-Z]?PI(8H)?$",
"^[.]ETHUSD[A-Z]?PI(8H)?$"
]
[accounts]
[accounts.A1]
master = true
login = "YOUR_BITMEX_API_KEY_GOES_HERE"
secret = "YOUR_BITMEX_SECRET_GOES_HERE"
symbols = [ ".*" ]
[users]
[users.test]
password = "1234"
symbols = ".*"
[users.trader]
password = "secret"
accounts = [ "A1" ]
symbols = [ ".*XBT.*", ".*ETH.*" ]
[rate_limits]
[rate_limits.global]
type = "ORDER_ACTION"
aggregate = true
request_limit = 100
monitor_period = "10s"
ban_period = "5m"
Market Data¶
Event |
Stream |
Messages |
Comments |
---|---|---|---|
MarketData |
instrument |
||
MarketData |
instrument |
||
MarketData |
quote |
||
MarketData |
orderBookL2 |
||
Unavailable |
|||
MarketData |
trade |
||
MarketData |
instrument |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
Statistics¶
Type |
Comments |
---|---|
|
(instrument) |
|
(instrument) |
|
(instrument) |
|
(instrument) |
|
(instrument) |
|
(instrument) |
|
(funding) |
|
(funding) |
Order Management¶
Event |
Stream |
Messages |
Comments |
---|---|---|---|
DropCopy |
execution |
||
DropCopy |
execution |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
GET /api/v1/order |
||
OrderEntry |
GET /api/v1/trade |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
POST /api/v1/order |
||
OrderEntry |
PUT /api/v1/order |
||
OrderEntry |
DELETE /api/v1/order |
||
OrderEntry |
DELETE /api/v1/order/all |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
/api/v1/order |
Errors, only |
Order Types¶
Type |
Comments |
---|---|
|
Mapped to |
|
Mapped to |
Time in Force¶
Type |
Comments |
---|---|
|
Mapped to |
Position Effect¶
Note
Not supported
Execution Instructions¶
Type |
Comments |
---|---|
|
Mapped to |
|
Mapped to |
Account Management¶
Event |
Stream |
Messages |
Comments |
---|---|---|---|
DropCopy |
position |
||
Unavailable |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
GET /api/v1/position |
||
Unavailable |
Streams¶
Type |
Comments |
---|---|
REST |
Primary purpose
Each connection
Rate-limit avoidance is implemented by
|
Type |
Comments |
---|---|
WebSocket |
Primary purpose
Each connection
|
Type |
Comments |
---|---|
WebSocket |
Primary purpose
A single connection |
Constraints¶
The field
clOrdID
is a string and can not exceed 36 characters
Comments¶
The exchange API’s do not appear particularly suitable for low latency trading:
Order action requests must be signed (which is expensive) and then sent over REST
REST response (order ack) could be lost possibly leaving the client in a situation where it must trigger timeout logic and/or issue operational alerts
Several WebSocket channels are used communicate order state possibly allowing for inconsistent order management by client