roq-binance-futures¶
$ mamba install \
--channel https://roq-trading.com/conda/stable \
roq-binance-futures
$ mamba install \
--channel https://roq-trading.com/conda/unstable \
roq-binance-futures
roq-binance-futures
¶
$ roq-binance-futures [FLAGS]
Description¶
roq-binance-futures
is a gateway
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 |
✓ |
Note
Modify and Auto-Cancel not possible with PAPI.
Flags¶
$ roq-binance-futures --help
--exchange
(binance-futures
)Exchange identifier
--api
(fapi
)API (
fapi
ordapi
)--ws_api
(false
)Use WebSocket API?
--rest_uri
(https://testnet.binancefuture.com
)Exchange end-point
--rest_host
Host (when URI is an IP address)
--rest_pm_uri
Exchange end-point (portfolio margin)
--rest_pm_host
Host (when URI is an IP address)
--rest_proxy
Proxy end-point
--rest_ping_freq
(5s
)Ping frequency
--rest_ping_path
(/v1/time
)Ping path
--rest_request_timeout
(30s
)Request timeout
--rest_listen_key_refresh
(1800s
)Listen key refresh period
--rest_order_recv_window
(5000ms
)Receive window (please refer to exchange documentation)
--rest_cancel_on_disconnect
(false
)Auto-cancel orders on disconnect?
--rest_order_countdown
(30s
)Auto-cancel countdown period
--rest_terminate_on_403
(false
)(TEST) Trigger program termination after receiving a 403 response code?
--rest_back_off_delay
(300s
)(TEST) Time to wait before retrying a rejected request
--ws_uri
(wss://stream.binancefuture.com
)Exchange end-point
--ws_host
Host (when URI is an IP address)
--ws_pm_uri
Exchange end-point (portfolio margin)
--ws_pm_host
Host (when URI is an IP address)
--ws_ping_freq
(5s
)Ping frequency
--ws_max_subscriptions_per_stream
(40
)Maximum number of symbols per connection
--ws_subscribe_depth_levels
(1000
)Depth levels to subscribe
--ws_subscribe_depth_freq
(100ms
)Depth update frequency
--ws_mbp_request_delay
(10s
)Delay before requesting depth snapshot
--ws_mbp_request_max_retries
(0
)Maximum number of retries before giving up
--ws_enable_secondary
(false
)Create secondary market data connection?
--ws_api_network_interfaces
Network interfaces
--ws_api_uri
(wss://ws-api.binance.com/ws-api/v3
)Exchange end-point
--ws_api_host
Host (when URI is an IP address)
--ws_api_ping_freq
(5s
)Ping frequency
--download_trades_lookback
(300s
)Lookback period when downloading trades (following a disconnect)
--download_trades_lookback_on_restart
Lookback period when downloading trades (initial download)
--download_trades_limit
(1000
)Maximum number of trades per response (exchange limit)
--download_symbols
Comma-separated list of symbols
--mbp_max_depth
Maximum depth
--mbp_sequencer_timeout
(120s
)Sequencer timeout
--mbp_allow_price_inversion
(false
)Allow price inversion?
--request_limit
(8
)Maximum number of requests per interval
--request_limit_interval
(5s
)Monitor interval
--encode_buffer_size
(1048576
)Encode buffer size
--decode_buffer_size
(10485760
)Decode buffer size
--continue_with_unknown_event_type
(false
)Continue when receiving updates for unexpected event-types?
Environments¶
$ $CONDA_PREFIX/share/roq-binance-futures/flags/prod/flags-fapi.cfg
# flagfile for the roq-binance-futures gateway
# exchange servers are located in AWS, Tokyo, Japan
--api=fapi
--rest_uri=https://fapi.binance.com
--ws_uri=wss://fstream.binance.com/ws
--rest_pm_uri=https://papi.binance.com
--ws_pm_uri=wss://fstream.binance.com/pm/ws
--ws_api_uri=wss://ws-fapi.binance.com/ws-fapi/v1
$ $CONDA_PREFIX/share/roq-binance-futures/flags/prod/flags-dapi.cfg
# flagfile for the roq-binance-futures gateway
# exchange servers are located in AWS, Tokyo, Japan
--api=dapi
--rest_uri=https://dapi.binance.com
--ws_uri=wss://dstream.binance.com/ws
--rest_pm_uri=https://papi.binance.com
--ws_pm_uri=wss://fstream.binance.com/pm/ws
$ $CONDA_PREFIX/share/roq-binance-futures/flags/test/flags-fapi.cfg
# flagfile for the roq-binance-futures gateway
# exchange servers are located in AWS, Tokyo, Japan
--api=fapi
--rest_uri=https://testnet.binancefuture.com
--ws_uri=wss://fstream.binancefuture.com
--ws_api_uri=wss://testnet.binancefuture.com/ws-fapi/v1
$ $CONDA_PREFIX/share/roq-binance-futures/flags/test/flags-dapi.cfg
# flagfile for the roq-binance-futures gateway
# exchange servers are located in AWS, Tokyo, Japan
--api=dapi
--rest_uri=https://testnet.binancefuture.com
--ws_uri=wss://dstream.binancefuture.com/ws
Configuration¶
$ $CONDA_PREFIX/share/roq-binance-futures/config.toml
Important
The template will be replaced when the software is upgraded. Make a copy and modify to your needs.
symbols = [
"^BTCUSD[A-Z]?(_[0-9]{6})?$",
"^ETHUSD[A-Z]?(_[0-9]{6})?$"
]
[accounts]
[accounts.A1]
master = true
login = "YOUR_BINANCE_FUTURES_API_KEY_GOES_HERE"
secret = "YOUR_BINANCE_FUTURES_SECRET_GOES_HERE"
symbols = [ ".*" ]
[users]
[users.test]
password = "1234"
symbols = ".*"
[users.trader]
password = "secret"
accounts = [ "A1" ]
symbols = [ ".*BTC.*", ".*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 |
---|---|---|---|
Unavailable |
|||
Unavailable |
|||
MarketData |
<symbol>@bookTicker |
||
MarketData |
<symbol>@depth@<freq> |
||
Unavailable |
|||
MarketData |
<symbol>@aggTrade |
||
MarketData |
<symbol>@miniTicker, <symbol>@markPrice |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
GET /fapi/v1/exchangeInfo |
There is no live feed |
|
OrderEntry |
GET /fapi/v1/exchangeInfo |
There is no live feed |
|
OrderEntry |
GET /fapi/v1/depth |
See Flags |
|
Statistics¶
Type |
Comments |
---|---|
|
(miniTicker) |
|
(miniTicker) |
|
(miniTicker) |
|
(miniTicker) |
|
(markPrice) |
|
(markPrice) |
|
(markPrice) |
|
(markPrice) |
Order Management¶
Event |
Stream |
Messages |
Comments |
---|---|---|---|
DropCopy |
ORDER_TRADE_UPDATE |
||
DropCopy |
ORDER_TRADE_UPDATE |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
GET /fapi/v1/openOrders |
It is only possible to download open orders |
|
OrderEntry |
GET /fapi/v1/userTrades |
There is a limit of 1000 trades |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
POST /fapi/v1/order |
||
Unavailable |
|||
OrderEntry |
DELETE /fapi/v1/order |
||
OrderEntry |
DELETE /fapi/v1/allOpenOrders |
This request is per-symbol! Only executed for those symbols where the gateway has seen order actions or download. |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
/fapi/v1/order |
Order Types¶
Type |
Comments |
---|---|
|
Mapped to |
|
Mapped to |
Time in Force¶
Type |
Comments |
---|---|
|
Mapped to |
|
Mapped to |
|
Mapped to |
|
Mapped to |
Position Effect¶
Note
Not supported
Execution Instructions¶
TBD
Account Management¶
Event |
Stream |
Messages |
Comments |
---|---|---|---|
DropCopy |
ACCOUNT_UPDATE |
||
DropCopy |
ACCOUNT_UPDATE |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
GET /fapi/v2/account |
||
OrderEntry |
GET /fapi/v2/balance |
Streams¶
Type |
Comments |
---|---|
REST |
Primary purpose
Each connection
|
Type |
Comments |
---|---|
WebSocket |
Primary purpose
Each connection
|
Type |
Comments |
---|---|
WebSocket |
Primary purpose
Each connection
|
Type |
Comments |
---|---|
REST |
Primary purpose
One connection |
Constraints¶
It is only possible to download current order status for open orders. The implication is that backup procedures must be implemented to reoncile positions in the scenario where orders are completely filled during a disconnect.
The
newClientOrderId
field (used byCreateOrder
) must conform to the^[.A-Z:/a-z0-9_-]{1,36}$
regular expression (ECMAScript). This restricts length and character used when supplying therouting_id
field.The exchange will monitor rate-limit usage per IP address.
Rate-limit usage is quite strict when downloading full order books. Due to this constraint, it may take a very long time to initialize all symbols. It is therefore STRONGLY recommended to reduce the configured number of symbols, e.g.
symbols=".*BTC.*"
, or even more specific by using lists.
Comments¶
External trades can optionally be captured into the event log.
Note
These messages will not be routed to any client.
Trades can optionally be downloaded. This is a very expensive operation and the list of symbols to download must therefore be explicitly controlled by the
--download_symbols
flag.There are different end-points depending on the margin-mode.
If nothing is specified, the classic margin-mode is selected. The end-points are then taken from
--rest_uri
and--ws_uri
.The new end-points are selected if the toml config has
margin_mode = "portfolio"
. The end-points are then taken from--rest_pm_uri
and--ws_pm_uri
.WSAPI is WORK-IN-PROGRESS
Some exchange features are missing (they are available from spot WSAPI):
Download working orders
Download trade history
Cancel all working orders