roq-kucoin

$ conda install \
      --channel https://roq-trading.com/conda/unstable \
      roq-kucoin
$ conda install \
      --channel https://roq-trading.com/conda/stable \
      roq-kucoin

Supports

Products

Spot

Futures

Swap

Option

Orders & Quotes
Account

Funds

Position

Note

✅ = Available.

❎ = Not implemented.

❌ = Unavailable.

❶ The exchange protocol does not support streaming updates for reference data and market status.

Using

$ roq-kucoin [FLAGS]

Flags

$ roq-kucoin --help
--exchange (kucoin)

Exchange identifier

--rest_uri (https://openapi-sandbox.kucoin.com)

Exchange end-point

--rest_proxy

Proxy end-point

--rest_ping_freq (5s)

Ping frequency

--rest_ping_path (/api/v1/status)

Ping path

--rest_request_timeout (30s)

Request timeout

--rest_download_delay (333ms)

Download throttling

--rest_download_orders_page_size (500)

Page size used when downloading orders

--rest_download_orders_begin (24h)

Download orders since (now - begin)

--rest_download_orders_inactive (false)

Download inactive 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_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 (0)

Request max retries

--mbp_allow_price_inversion (false)

Allow price inversion?

--request_limit (80)

Maximum number of requests per interval

--request_limit_interval (10s)

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

Environments

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

--rest_uri=https://api.kucoin.com
$ --flagfile $CONDA_PREFIX/share/roq-kucoin/flags/test/flags.cfg
# flagfile for the roq-kucoin gateway

--rest_uri=https://openapi-sandbox.kucoin.com

Configuration

$ --config_file $CONDA_PREFIX/share/roq-kucoin/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-kucoin gateway

symbols = [
  "^BTC-USD[A-Z]$"
  "^ETH-USD[A-Z]$",
]

[accounts]

  [accounts.A1]
  master = true
  login = "YOUR_KUCOIN_API_KEY_GOES_HERE"
  password = "YOUR_KUCOIN_PASSPHRASE_GOES_HERE"
  secret = "YOUR_KUCOIN_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

enableTrading

true

OPEN

false

CLOSE

Subject

Field

trade.snapshot

open

OPEN_PRICE

trade.snapshot

high

HIGHEST_TRADED_PRICE

trade.snapshot

low

LOWEST_TRADED_PRICE

trade.snapshot

close

CLOSE_PRICE

Order Management

Inbound

Enum

market

MARKET

limit

LIMIT

stop_limit

UNDEFINED

Enum

GTC

GTC

GTT

UNDEFINED

IOC

IOC

FOK

FOK

Enum

open

WORKING

match

WORKING

done

COMPLETED

Outbound

order_type

execution_instructions

price

stop_price

type

price

postOnly

MARKET

NaN

NaN

market

MARKET

NaN

LIMIT

NaN

limit

LIMIT

PARTICIPATE_DO_NOT_INITIATE

NaN

limit

true

LIMIT

TBD

TBD

TBD

Comments

  • The gateway requires a master account definition (API key) to be functional. The reason is that requesting L2 snapshots will require authentication.

  • The exchange API does not allow order cancelation prior to an ack or update being received by the client. (Other exchanges normally allow cancelation using a client order id.) An roq::OrderAck with roq::Error::UNKNOWN_EXTERNAL_ORDER_ID is the response if a roq::CancelOrder request is sent “too early”.

  • There are no options to instruct the exchange to auto-cancel orders on disconnect.

  • There is currently no implementation to refresh the token for the private connection. A received token should be valid for 24 hours and dialy restarts should therefore be planned.

  • The KuCoin sandbox environment does not work with IP restriction. This was confirmed by KuCoin support.

References

Common

Exchange