roq-kucoin#
Links#
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#
Spot |
✓ |
Futures |
|
Options |
Reference Data |
✓ |
Market Status |
✓ |
Top of Book |
✓ |
Market by Price (L2) |
✓ |
Market by Order (L3) |
|
Trade Summary |
✓ |
Statistics |
✓ |
Create |
✓ |
Modify |
|
Cancel |
✓ |
Cancel All |
✓ |
Auto Cancellation |
Positions |
|
Funds |
✓ |
Data center located in … (to be confirmed)
No test environment
Conda#
$ mamba 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" \
--service_listen_address "$TCP_LISTEN_PORT" \
--flagfile "$FLAG_FILE"
Config#
Flags#
$ roq-kucoin --help
|
Time between download requests. Default is 333ms due to an exchange constraint of 9 requests / 3 seconds. |
|
The exchange API for order download is paginated and this is the number of items per page. Download will be disabled when set to zero. |
|
When to include orders from. Default is 24 hours prior to “now”. |
|
Also include inactive orders? Default is to only include active orders. |
|
The exchange API for fills download is paginated and this is the number of items per page. Download will be disabled when set to zero. |
|
When to include orders from. Default is 24 hours prior to “now”. |
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.