Skip to content

Account history and futures reads

Nine versioned account reads require --enable-desktop-phase2-reads (default OFF), acc:read, and access to the selected real business account. Live verification is UNVERIFIED. These reads do not place orders or unlock trading.

API CLI REST POST MCP
GetOrderFillDetails get-order-fill-details /api/trd/order-fill-details futu_get_order_fill_details
GetOrderDates get-order-dates /api/trd/order-dates futu_get_order_dates
GetTodayFillStatistics get-today-fill-statistics /api/trd/today-fill-statistics futu_get_today_fill_statistics
GetFutureSubpositions get-future-subpositions /api/trd/future-subpositions futu_get_future_subpositions
GetSymbolHistoryOrders get-symbol-history-orders /api/trd/symbol-history-orders futu_get_symbol_history_orders
GetSymbolHistoryFills get-symbol-history-fills /api/trd/symbol-history-fills futu_get_symbol_history_fills
GetSubAccountFillQuantities get-sub-account-fill-quantities /api/trd/sub-account-fill-quantities futu_get_sub_account_fill_quantities
GetSymbolTradeCounts get-symbol-trade-counts /api/trd/symbol-trade-counts futu_get_symbol_trade_counts
GetFuturePositionBreakdown get-future-position-breakdown /api/trd/future-position-breakdown futu_get_future_position_breakdown

All requests require extension_version: 1 and header: {trd_env: 1, acc_id: <account-id>, trd_market: <market>}. Use an authorized business account from account discovery. Aggregate parent and simulated accounts are unsupported. REST takes the C2S object directly; CLI uses --c2s-json; MCP takes a JSON string in c2s_json. Gateway and gRPC expose the same contract.

API Required additional fields Optional fields
GetOrderFillDetails order_id, exchange
GetOrderDates year, month (1–12) stock_market, jp_acc_type
GetTodayFillStatistics currency stock_market, jp_acc_type
GetFutureSubpositions position_id
GetSymbolHistoryOrders security, time_begin_us, time_end_us page_size
GetSymbolHistoryFills security, time_begin_us, time_end_us page_size
GetSubAccountFillQuantities orders: [{order_id, security_type, exchange}]
GetSymbolTradeCounts security, time_begin_us, time_end_us, period (1/2/3)
GetFuturePositionBreakdown position_id, quote_options: {before, after, overnight}

security contains numeric market and string code; time ranges use Unix microseconds. All three quote flags must be explicit, including false. Select month/quarter/year with period ½/3. String order and position identifiers must come from actual query results. Order metadata is a query condition; it never grants access to another account.

Results and failure behavior

Order details preserve full fill records and a separate crypto fill list. Symbol history returns the resolved security alongside orders/fills; continuous futures resolve once per request. Counts return period/trade metadata and per-date counts. Order dates report the account timezone and asset category. Fill statistics distinguish requested/effective public currency from the original service denomination. Futures subpositions and the richer breakdown are separate explicit APIs; neither silently substitutes for the other.

Decimals remain strings; optional fields retain absence. Pagination is collected before success: a later error, malformed response or changed account session fails the entire request. The richer breakdown requires known overnight permission configuration. Missing prerequisites produce errors rather than fabricated values. Backend support and account eligibility require live verification.

currency uses the public trading currency enum. stock_market belongs to this extension's security-market namespace (for example HK 1, US 2, Japan 15), which differs from header.trd_market and security.market. Omission selects opened account markets; an ambiguous Japanese asset category requires an explicit market. jp_acc_type must belong to the account and must not conflict with the header selector.

For index and crypto symbols, counts return empty records with no period/trade metadata and no statistics request. Order dates may include days without fills. History ranges require a positive start earlier than the end; the call collects all pages before succeeding.

Eligibility, fees and prechecks