roq-bybit¶
$ conda install \
--channel https://roq-trading.com/conda/unstable \
roq-bybit
$ conda install \
--channel https://roq-trading.com/conda/stable \
roq-bybit
Supports¶
✅ |
||
✅ |
||
✅ |
||
✅ |
||
❌ |
||
✅ |
||
✅ |
||
✅ |
Note
✅ = Available.
❎ = Not implemented.
❌ = Unavailable.
❶ = The exchange protocol does not support streaming updates for reference data and market status.
Using¶
$ roq-bybit [FLAGS]
Flags¶
$ roq-bybit --help
--exchange(bybit)Exchange identifier
--api(spot)API (
spot,linear,inverseoroption)--ws_api(false)Use WebSocket API?
--rest_uri(https://api-testnet.bybit.com)Exchange end-point
--rest_hostHost (when URI is an IP address)
--rest_proxyProxy end-point
--rest_ping_freq(5s)Ping frequency
--rest_ping_path(/v5/market/time)Ping path
--rest_request_timeout(30s)Request timeout
--rest_recv_window(5s)Receive window (please refer to exchange documentation)
--rest_terminate_on_403(false)(TEST) Trigger program termination after receiving a 403 response code?
--rest_back_off_delay(30s)(TEST) Time to wait before retrying a rejected request
--ws_public_uri(wss://stream-testnet.bybit.com/v5/public)Exchange end-point
--ws_public_hostHost (when URI is an IP address)
--ws_private_uri(wss://stream-testnet.bybit.com/v5/private)Exchange end-point
--ws_private_hostHost (when URI is an IP address)
--ws_trade_uri(wss://stream-testnet.bybit.com/v5/trade)Exchange end-point
--ws_trade_hostHost (when URI is an IP address)
--ws_ping_freq(5s)Ping frequency
--ws_request_timeout(15s)Request timeout
--ws_max_subscriptions_per_stream(100)Maximum number of symbols per connection
--ws_mbp_depth(0)Maximum depth
--mbp_allow_price_inversion(false)Allow price inversion?
--request_limit(10)Maximum number of requests per interval
--request_limit_interval(1s)Monitor interval
--encode_buffer_size(1048576)Encode buffer size
--decode_buffer_size(10485760)Decode buffer size
Environments¶
$ --flagfile $CONDA_PREFIX/share/roq-bybit/flags/prod/flags.cfg
# flagfile for the roq-bybit gateway
# exchange servers are located in AWS, Singapore
--rest_uri=https://api.bybit.com
--ws_public_uri=wss://stream.bybit.com/v5/public
--ws_private_uri=wss://stream.bybit.com/v5/private
--ws_trade_uri=wss://stream.bybit.com/v5/trade
$ --flagfile $CONDA_PREFIX/share/roq-bybit/flags/test/flags.cfg
# flagfile for the roq-bybit gateway
# exchange servers are located in AWS, Singapore
--rest_uri=https://api-testnet.bybit.com
--ws_public_uri=wss://stream-testnet.bybit.com/v5/public
--ws_private_uri=wss://stream-testnet.bybit.com/v5/private
--ws_trade_uri=wss://stream-testnet.bybit.com/v5/trade
Configuration¶
$ --config_file $CONDA_PREFIX/share/roq-bybit/config.toml
Important
This template will be replaced when the software is upgraded. Make a copy and modify to your own needs.
# config template for the roq-bybit gateway
symbols = [
"^BTCUSD[A-Z]?$", # spot + linear + inverse
"^BTC-.*-.*-[PC]$" # options (e.g. "BTC-26SEP25-300000-P")
]
[accounts]
[accounts.A1]
master = true
login = "YOUR_BYBIT_API_KEY_GOES_HERE"
secret = "YOUR_BYBIT_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¶
Inbound¶
Event |
Field |
||
|---|---|---|---|
|
|
⇒ |
|
|
|
⇒ |
|
|
|
⇒ |
|
|
|
⇒ |
Order Management¶
Inbound¶
Outbound¶
|
|
|
|||||
|---|---|---|---|---|---|---|---|
|
|
⇒ |
|
|
|||
|
|
⇒ |
|
❌ |
|
||
✅ |
|
⇒ |
|
✅ |
|
||
✅ |
|
⇒ |
|
✅ |
|
TBD
TBD
TBD
Comments¶
The gateway can not simultaneously support all product categories due to overlapping symbol names, e.g. BTCUSDT being both spot and linear. For this reason, the
--apiflag controls the product category and, if necessary, the--nameor--exchangeflags must be configured to appropriately differentitate the sources.The
orderchannel doesn’t give us any information about last traded, only the aggregate fields (traded / remaining / average price) are available. The last trade price/quantity fields are therefore estimated.Note
The
executionchannel will independently report the fills.TopOfBookis based onorderbook.1for spot andtickersfor all other categories.