Skip to contents

Retrieves a paginated list of untriggered stop orders from the KuCoin Spot trading system asynchronously. This function constructs a GET request to the KuCoin API and returns a promise that resolves to a data.table containing details of stop orders, sorted by the latest update time in descending order.

Usage

get_stop_order_list_impl(
  keys = get_api_keys(),
  base_url = get_base_url(),
  query = list(),
  .__coro_env_parent__ = <environment>
)

Arguments

keys

List; API configuration parameters from get_api_keys(). Defaults to get_api_keys().

base_url

Character string; base URL for the KuCoin API. Defaults to get_base_url().

query

Named list; query parameters for filtering and pagination (e.g., list(symbol = "BTC-USDT", side = "buy", pageSize = 10)). Optional.

Value

Promise resolving to a data.table containing stop order details, with the following columns:

  • id (character): Unique order ID assigned by KuCoin.

  • symbol (character): Trading pair (e.g., "KCS-USDT").

  • userId (character): User ID associated with the order.

  • status (character): Order status (e.g., "NEW", "TRIGGERED").

  • type (character): Order type (e.g., "limit", "market").

  • side (character): Order side ("buy" or "sell").

  • price (character): Order price.

  • size (character): Order size.

  • funds (character or NA): Order funds (NULL for untriggered orders).

  • stp (character or NA): Self Trade Prevention strategy (e.g., "DC", "CO", "CN", "CB").

  • timeInForce (character): Time in force (e.g., "GTC", "GTT", "IOC", "FOK").

  • cancelAfter (integer): Seconds until cancellation for GTT (-1 if not applicable).

  • postOnly (logical): Whether the order is post-only.

  • hidden (logical): Whether the order is hidden.

  • iceberg (logical): Whether the order is an iceberg order.

  • visibleSize (character or NA): Visible size for iceberg orders.

  • channel (character): Order source (e.g., "API").

  • clientOid (character): Client-assigned order ID.

  • remark (character or NA): Order remarks.

  • tags (character or NA): Order tags.

  • orderTime (numeric): Order creation time in nanoseconds.

  • domainId (character): Domain ID (e.g., "kucoin").

  • tradeSource (character): Trade source (e.g., "USER").

  • tradeType (character): Trade type (e.g., "TRADE").

  • feeCurrency (character): Currency used for fees.

  • takerFeeRate (character): Taker fee rate.

  • makerFeeRate (character): Maker fee rate.

  • createdAt (integer): Creation timestamp in milliseconds.

  • stop (character): Stop order type (e.g., "loss", "entry").

  • stopTriggerTime (integer or NA): Trigger time in milliseconds (NULL if untriggered).

  • stopPrice (character): Stop price.

  • createdAtDatetime (POSIXct): Creation time in UTC (derived from createdAt).

  • orderTimeDatetime (POSIXct): Order placement time in UTC (derived from orderTime).

Details

Description

This endpoint fetches a list of stop orders that have not yet been triggered. Stop orders are conditional orders that become active when the market price reaches a specified stopPrice. The list is paginated and sorted to show the most recent orders first. Users can filter the results using various query parameters such as symbol, side, type, and time range.

Workflow

  1. Parameter Validation: Ensures that provided parameters are valid, such as symbol, side, type, and pagination settings.

  2. Request Construction: Builds the endpoint URL with query parameters for filtering and pagination.

  3. Authentication: Generates private API headers using build_headers() with the GET method and endpoint.

  4. API Request: Sends a GET request to the KuCoin API with a 3-second timeout.

  5. Response Processing: Parses the response, converts the items array to a data.table, and adds datetime columns for createdAt and orderTime.

API Details

  • Endpoint: GET https://api.kucoin.com/api/v1/stop-order

  • Domain: Spot

  • API Channel: Private

  • API Permission: General

  • Rate Limit Pool: Spot

  • Rate Limit Weight: 8

  • SDK Service: Spot

  • SDK Sub-Service: Order

  • SDK Method Name: getStopOrdersList

  • Official Documentation: KuCoin Get Stop Orders List

Request

Query Parameters

  • symbol: String (optional) - Filter by trading pair (e.g., "BTC-USDT").

  • side: Enum (optional) - Filter by order side: "buy" or "sell".

  • type: Enum (optional) - Filter by order type: "limit", "market", "limit_stop", "market_stop".

  • tradeType: Enum (optional) - Filter by trade type: "TRADE", "MARGIN_TRADE", "MARGIN_ISOLATED_TRADE".

  • startAt: Integer (optional) - Start time in milliseconds.

  • endAt: Integer (optional) - End time in milliseconds.

  • currentPage: Integer (optional) - Current page number.

  • orderIds: String (optional) - Comma-separated list of order IDs.

  • pageSize: Integer (optional) - Number of orders per page.

  • stop: String (optional) - Filter by stop order type: "stop" or "oco".

Example Request

curl --location --request GET 'https://api.kucoin.com/api/v1/stop-order?symbol=BTC-USDT&side=buy&pageSize=10'

Response

HTTP Code: 200

  • Content Type: application/json

Data Schema

  • code: String (required) - Response code ("200000" indicates success).

  • data: Object (required) - Contains:

    • currentPage: Integer - Current page number.

    • pageSize: Integer - Number of orders per page.

    • totalNum: Integer - Total number of stop orders.

    • totalPage: Integer - Total number of pages.

    • items: Array of objects - List of stop orders, each with fields such as:

      • id: String - Order ID.

      • symbol: String - Trading pair.

      • userId: String - User ID.

      • status: String - Order status.

      • type: String - Order type.

      • side: String - Order side.

      • price: String - Order price.

      • size: String - Order size.

      • funds: String - Order funds.

      • stp: String - Self Trade Prevention.

      • timeInForce: String - Time in force.

      • cancelAfter: Integer - Cancel after n seconds.

      • postOnly: Boolean - Post-only flag.

      • hidden: Boolean - Hidden order flag.

      • iceberg: Boolean - Iceberg order flag.

      • visibleSize: String - Visible size for iceberg orders.

      • channel: String - Order channel.

      • clientOid: String - Client order ID.

      • remark: String - Order remarks.

      • tags: String - Order tags.

      • orderTime: Integer - Order time in nanoseconds.

      • domainId: String - Domain ID.

      • tradeSource: String - Trade source.

      • tradeType: String - Trade type.

      • feeCurrency: String - Fee currency.

      • takerFeeRate: String - Taker fee rate.

      • makerFeeRate: String - Maker fee rate.

      • createdAt: Integer - Creation timestamp in milliseconds.

      • stop: String - Stop order type.

      • stopTriggerTime: Integer - Stop trigger time.

      • stopPrice: String - Stop price.

JSON Response Example

{
  "code": "200000",
  "data": {
    "currentPage": 1,
    "pageSize": 50,
    "totalNum": 1,
    "totalPage": 1,
    "items": [
      {
        "id": "vs8hoo8kqjnklv4m0038lrfq",
        "symbol": "KCS-USDT",
        "userId": "60fe4956c43cbc0006562c2c",
        "status": "NEW",
        "type": "limit",
        "side": "buy",
        "price": "0.01000000000000000000",
        "size": "0.01000000000000000000",
        "funds": null,
        "stp": null,
        "timeInForce": "GTC",
        "cancelAfter": -1,
        "postOnly": false,
        "hidden": false,
        "iceberg": false,
        "visibleSize": null,
        "channel": "API",
        "clientOid": "404814a0fb4311eb9098acde48001122",
        "remark": null,
        "tags": null,
        "orderTime": 1628755183702150167,
        "domainId": "kucoin",
        "tradeSource": "USER",
        "tradeType": "TRADE",
        "feeCurrency": "USDT",
        "takerFeeRate": "0.00200000000000000000",
        "makerFeeRate": "0.00200000000000000000",
        "createdAt": 1628755183704,
        "stop": "loss",
        "stopTriggerTime": null,
        "stopPrice": "10.00000000000000000000"
      }
    ]
  }
}

Examples

if (FALSE) { # \dontrun{
library(coro)
library(data.table)

main_async <- coro::async(function() {
  # Retrieve stop orders list for BTC-USDT
  stop_orders <- await(get_stop_order_list_impl(
    query = list(symbol = "BTC-USDT", side = "buy", pageSize = 10)
  ))
  print(stop_orders)
})

# Run the async function
main_async()
while (!later::loop_empty()) later::run_now()
} # }