roq-crypto-futures

Supports

Products

Spot

Futures

Options

Combos

Market Data

Reference Data

Market Status

Top of Book

Market by Price

Market by Order

Trade Summary

Statistics

Order Management

Create

Modify

Cancel

Cancel All

Auto-Cancel

Account Management

Positions

Funds

Installing

$ mamba install \
      --channel https://roq-trading.com/conda/stable \
      roq-crypto-futures
$ mamba install \
      --channel https://roq-trading.com/conda/unstable \
      roq-crypto-futures

Using

$ roq-crypto-futures \
      --name "crypto-futures" \
      --config_file $CONFIG_FILE_PATH \
      --client_listen_address $UNIX_SOCKET_PATH \
      --flagfile $ENVIRONMENT_FLAGFILE

Flags

$ roq-crypto-futures --help
--exchange (crypto-futures)

Exchange identifier

--rest_uri (https://uat-deriv-api.3ona.co)

Exchange end-point

--rest_proxy

Proxy end-point

--rest_ping_freq (5s)

Ping frequency

--rest_ping_path (/api/spot/v1/public/time)

Ping path

--rest_request_timeout (30s)

Request timeout

--rest_download_orders_page_size (500)

Page size used when downloading orders

--rest_download_orders_begin (24h)

Download orders since (now - begin)

--rest_download_only_active_orders (false)

Download only active orders?

--rest_download_fills_page_size (500)

Page size used when downloading fills

--rest_download_fills_begin (24h)

Download fills since (now - begin)

--rest_token_refresh_freq (8h)

Token refresh frequency

--ws_market_uri (wss://uat-deriv-stream.3ona.co/v1/market)

Exchange end-point

--ws_user_uri (wss://uat-deriv-stream.3ona.co/v1/user)

Exchange end-point

--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_request_delay (500ms)

Request delay

--ws_mbp_request_max_retries (3)

Request max retries

--request_limit (80)

Request limit per interval

--request_limit_interval (10s)

Request limit monitor interval

--self_trade_prevention (CN)

Self-trade prevention: CN, CO, CB, DC

--encode_buffer_size (1048576)

Encode buffer size

--decode_buffer_size (10485760)

Decode buffer size

--mbp_allow_price_inversion (false)

Allow price inversion?

Environments

$ $CONDA_PREFIX/share/roq-crypto-futures/flags/prod/flags.cfg
# flagfile for the roq-crypto-futures gateway

--rest_uri=https://deriv-api.crypto.com
--ws_market_uri=wss://deriv-stream.crypto.com/v1/market
--ws_user_uri=wss://deriv-stream.crypto.com/v1/user
$ $CONDA_PREFIX/share/roq-crypto-futures/flags/test/flags.cfg
# flagfile for the roq-crypto-futures gateway

--rest_uri=https://uat-deriv-api.3ona.co
--ws_market_uri=wss://uat-deriv-stream.3ona.co/v1/market
--ws_user_uri=wss://uat-deriv-stream.3ona.co/v1/user

Configuration

$ $CONDA_PREFIX/share/roq-crypto-futures/config.toml

Important

The template will be replaced when the software is upgraded. Make a copy and modify to your needs.

symbols = "BTCUSD.*"

[accounts]

  [accounts.A1]
  master = true
  login = "YOUR_CRYPTO_FUTURES_API_KEY_GOES_HERE"
  secret = "YOUR_CRYPTO_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

Statistics

Type

Comments

TRADE_VOLUME

(spot.tickers) quote_volume

Order Management

Event

Stream

Messages

Comments

roq::OrderUpdate

roq::TradeUpdate

Event

Stream

Messages

Comments

roq::OrderUpdate

roq::TradeUpdate

Event

Stream

Messages

Comments

roq::OrderAck

Order Types

TBD

Time in Force

TBD

Position Effect

TBD

Execution Instructions

TBD

Account Management

Event

Stream

Messages

Comments

roq::PositionUpdate

roq::FundsUpdate

Event

Stream

Messages

Comments

roq::PositionUpdate

roq::FundsUpdate

Streams

Type

Comments

REST

Primary purpose

  • discover the full list of symbols

Type

Comments

WebSocket

Primary purpose

  • live market data

Each connection

  • supports a slice of the symbols

Constraints

Comments

  • All symbols having tradable != true are dropped.

  • The rate-limiter is quite strict

    • Currently getting DISCONNECTED when subscribing more channels…!?

    • Maybe need a queue for subscribtions…

    • Also, there’s a warning about not subscribing during the first second

  • Market data

    • Book is full snapshot on each update (must convert to incremental)

    • Need custom parser for book due to nested arrays