roq-kucoin#
Purpose#
Maintain network connectivity with the KuCoin exchange
Route exchange updates to connected clients
Route client requests to the relevant exchange accounts
Stream all messages to an event-log
Overview#
Products
Spot |
✓ |
Futures |
|
Options |
Market Data
Reference Data |
✓ |
Market Status |
✓ |
Top of Book |
✓ |
Market by Price (L2) |
✓ |
Market by Order (L3) |
|
Trade Summary |
✓ |
Statistics |
✓ |
Order Management
Create |
✓ |
Modify |
|
Cancel |
✓ |
Cancel All |
✓ |
Auto Cancellation |
Account Management
Positions |
|
Funds |
✓ |
Data center located in … (to be confirmed)
No test environment
Conda#
$ conda install \
--channel https://roq-trading.com/conda/stable \
roq-kucoin
$ cp $CONDA_PREFIX/share/roq-kucoin/config.toml $CONFIG_FILE_PATH
# Then modify $CONFIG_FILE_PATH to match your specific configuration
$ roq-kucoin \
--name "kucoin" \
--config_file "$CONFIG_FILE_PATH" \
--client_listen_address "$UNIX_SOCKET_PATH" \
--metrics_listen_address "$TCP_LISTEN_PORT" \
--flagfile "$FLAG_FILE"
Config#
Environments#
# flagfile
--rest_uri=https://api.kucoin.com
# flagfile
--rest_uri=https://openapi-sandbox.kucoin.com
Note
The WebSocket URI will be discovered by querying the REST service. There are therefore no additional flags to specify network end-points.
Market Data#
Event |
Stream |
Messages |
Comments |
---|---|---|---|
MarketData |
/market/snapshot |
||
MarketData |
/market/ticker |
||
MarketData |
/market/level2 |
||
MarketData |
/market/match |
||
MarketData |
/market/snapshot |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
Rest |
/api/v1/symbols |
||
Rest |
/api/v1/symbols |
||
Rest |
/api/v3/market/orderbook/level2 |
||
Statistics#
Type |
Comments |
---|---|
|
(snapshot) |
|
(instrument) |
|
(instrument) |
|
(instrument) |
|
(instrument) |
Order Management#
Event |
Stream |
Messages |
Comments |
---|---|---|---|
DropCopy |
/spotMarket/tradeOrders |
||
Event |
Stream |
Messages |
Comments |
---|---|---|---|
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
POST /api/v1/orders |
||
OrderEntry |
DELETE /api/v1/orders/{order-id} |
||
OrderEntry |
DELETE /api/v1/orders |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
Order Types#
Type |
Comments |
---|---|
|
Mapped to |
|
Mapped to |
Time in Force#
Type |
Comments |
---|---|
|
Mapped to |
|
Mapped to |
|
Mapped to |
Position Effect#
Note
Not supported
Execution Instructions#
Type |
Comments |
---|---|
|
Mapped to |
Account Management#
Event |
Stream |
Messages |
Comments |
---|---|---|---|
DropCopy |
/account/balance |
Event |
Stream |
Messages |
Comments |
---|---|---|---|
OrderEntry |
GET /api/v1/accounts |
Streams#
Type |
Comments |
---|---|
REST |
Primary purpose
|
Type |
Comments |
---|---|
WebSocket |
Primary purpose
Each connection
|
Type |
Comments |
---|---|
REST |
Primary purpose
|
Type |
Comments |
---|---|
WebSocket |
Primary purpose
|
Constraints#
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
withroq::Error::UNKNOWN_EXTERNAL_ORDER_ID
is the response if aroq::CancelOrder
request is sent “too early”.There are no options to instruct the exchange to auto-cancel orders on disconnect.
Comments#
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.