Longbridge Developers
立即開始

歷史訂單

該接口用於獲取歷史訂單。

>_ CLI
longbridge order --history

Request

HTTP MethodGET
HTTP URL/v1/trade/order/history

Parameters

Content-Type: application/json; charset=utf-8

NameTypeRequiredDescription
symbolstringNO股票代碼,使用 ticker.region 格式,例如:AAPL.US
statusstring[]NO訂單狀態

例如:status=FilledStatus&status=NewStatus
sidestringNO買賣方向

可選值:
Buy - 買入
Sell - 賣出
marketstringNO市場

可選值:
US - 美股
HK - 港股
start_atstringNO開始時間,格式為時間戳 (秒),例如:1650410999。

開始時間為空時,默認為結束時間或當前時間前九十天。
end_atstringNO結束時間,格式為時間戳 (秒),例如:1650410999。

結束時間為空時,默認為開始時間後九十天或當前時間。

Request Example

from datetime import datetime
from longbridge.openapi import TradeContext, Config, OrderStatus, OrderSide, Market, OAuthBuilder

oauth = OAuthBuilder("your-client-id").build(lambda url: print("Visit:", url))
config = Config.from_oauth(oauth)
ctx = TradeContext(config)

resp = ctx.history_orders(
    symbol = "700.HK",
    status = [OrderStatus.Filled, OrderStatus.New],
    side = OrderSide.Buy,
    market = Market.HK,
    start_at = datetime(2022, 5, 9),
    end_at = datetime(2022, 5, 12),
)
print(resp)
import asyncio
from datetime import datetime
from longbridge.openapi import AsyncTradeContext, Config, OrderStatus, OrderSide, Market, OAuthBuilder

async def main() -> None:
    oauth = await OAuthBuilder("your-client-id").build_async(lambda url: print("Visit:", url))
    config = Config.from_oauth(oauth)
    ctx = AsyncTradeContext.create(config)

    resp = await ctx.history_orders(
        symbol = "700.HK",
        status = [OrderStatus.Filled, OrderStatus.New],
        side = OrderSide.Buy,
        market = Market.HK,
        start_at = datetime(2022, 5, 9),
        end_at = datetime(2022, 5, 12),
    )
    print(resp)

if __name__ == "__main__":
    asyncio.run(main())
const { Config, TradeContext, OAuth } = require('longbridge')

async function main() {
  const oauth = await OAuth.build("your-client-id", (_, url) => { console.log("Open this URL to authorize: " + url) })
  const config = Config.fromOAuth(oauth)
  const ctx = TradeContext.new(config)
  const resp = await ctx.historyOrders({})
  console.log(resp)
}
main().catch(console.error)
import com.longbridge.*;
import com.longbridge.trade.*;

class Main {
    public static void main(String[] args) throws Exception {
        try (OAuth oauth = new OAuthBuilder("your-client-id").build(url -> System.out.println("Open to authorize: " + url)).get();
             Config config = Config.fromOAuth(oauth);
             TradeContext ctx = TradeContext.create(config)) {
            Order[] resp = ctx.getHistoryOrders(null).get();
            for (Order o : resp) System.out.println(o);
        }
    }
}
use std::sync::Arc;
use longbridge::{oauth::OAuthBuilder, trade::TradeContext, Config};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let oauth = OAuthBuilder::new("your-client-id").build(|url| println!("Open this URL to authorize: {url}")).await?;
    let config = Arc::new(Config::from_oauth(oauth));
    let (ctx, _) = TradeContext::new(config);
    let resp = ctx.history_orders(None).await?;
    println!("{:?}", resp);
    Ok(())
}
#include &lt;iostream&gt;
#include <longbridge.hpp>

#ifdef WIN32
#include <windows.h>
#endif

using namespace longbridge;
using namespace longbridge::trade;

static void
run(const OAuth& oauth)
{
    Config config = Config::from_oauth(oauth);
    TradeContext ctx = TradeContext::create(config);

    ctx.history_orders(std::nullopt, [](auto res) {
        if (!res) { std::cout << "failed" << std::endl; return; }
        for (const auto& o : *res) std::cout << o.order_id << std::endl;
    });
}

int main(int argc, char const* argv[]) {
#ifdef WIN32
    SetConsoleOutputCP(CP_UTF8);
#endif

    const std::string client_id = "your-client-id";
    OAuthBuilder(client_id).build(
    [](const std::string& url) {
        std::cout << "Open this URL to authorize: " << url << std::endl;
    },
    [](auto res) {
        if (!res) {
            std::cout << "authorization failed: " << *res.status().message() << std::endl;
            return;
        }
        run(*res);
    });

    std::cin.get();
    return 0;
}
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/longbridge/openapi-go/config"
	"github.com/longbridge/openapi-go/oauth"
	"github.com/longbridge/openapi-go/trade"
)

func main() {
	o := oauth.New("your-client-id").
		OnOpenURL(func(url string) { fmt.Println("Open this URL to authorize:", url) })
	if err := o.Build(context.Background()); err != nil {
		log.Fatal(err)
	}
	conf, err := config.New(config.WithOAuthClient(o))
	if err != nil {
		log.Fatal(err)
	}
	tctx, err := trade.NewFromCfg(conf)
	if err != nil {
		log.Fatal(err)
	}
	defer tctx.Close()
	orders, hasMore, err := tctx.HistoryOrders(context.Background(), &trade.GetHistoryOrders{})
	if err != nil {
		log.Fatal(err)
	}
	for _, o := range orders {
		fmt.Println(o.OrderId)
	}
	_ = hasMore
}

Response

Response Headers

  • Content-Type: application/json

Response Example

{
  "code": 0,
  "message": "success",
  "data": {
    "orders": [
      {
        "currency": "HKD",
        "executed_price": "0.000",
        "executed_quantity": "0",
        "expire_date": "",
        "last_done": "",
        "limit_offset": "",
        "msg": "",
        "order_id": "706388312699592704",
        "order_type": "ELO",
        "outside_rth": "UnknownOutsideRth",
        "price": "11.900",
        "quantity": "200",
        "side": "Buy",
        "status": "RejectedStatus",
        "stock_name": "東亞銀行",
        "submitted_at": "1651644897",
        "symbol": "23.HK",
        "tag": "Normal",
        "time_in_force": "Day",
        "trailing_amount": "",
        "trailing_percent": "",
        "trigger_at": "0",
        "trigger_price": "",
        "trigger_status": "NOT_USED",
        "updated_at": "1651644898",
        "remark": "",
        "limit_depth_level": 0,
        "monitor_price": "",
        "trigger_count": 1,
        "attached_orders": [
          {
            "order_id": "706388312699592705",
            "attached_type_display": 2,
            "trigger_price": "10.500",
            "quantity": "200",
            "executed_qty": "0",
            "status": "NewStatus",
            "updated_at": "1651644898",
            "withdrawn": false,
            "gtd": "",
            "time_in_force": "Day",
            "counter_id": "",
            "trigger_status": 0,
            "executed_amount": "0",
            "tag": 0,
            "submitted_at": "1651644897",
            "executed_price": "0.000",
            "force_only_rth": "RTH_ONLY",
            "reviewed": false,
            "activate_order_type": "MIT",
            "activate_rth": "RTH_ONLY",
            "submit_price": ""
          }
        ],
        "multi_leg": {
          "strategy": "2",
          "strategy_name": "跨價期權",
          "multileg_id": "Spread_QQQ20260731C764/767",
          "code": "QQQ 260731 764/767 跨價期權",
          "legs": [
            {
              "symbol": "QQQ260731C764000.US",
              "side": "Buy",
              "position": "LONG",
              "ratio_quantity": "1",
              "strike_price": "764",
              "expire_date": "20260731",
              "contract_direction": "C"
            },
            {
              "symbol": "QQQ260731C767000.US",
              "side": "Sell",
              "position": "SHORT",
              "ratio_quantity": "1",
              "strike_price": "767",
              "expire_date": "20260731",
              "contract_direction": "C"
            }
          ]
        }
      }
    ]
  }
}

Response Status

StatusDescriptionSchema
200歷史訂單查詢成功history_orders_rsp
400查詢失敗,請求參數錯誤。None

Schemas

history_orders_rsp

NameTypeRequiredDescription
has_morebooleantrue是否還有更多數據。

每次查詢最大訂單數量為 1000,如果查詢結果數量超過 1000,那麽 has_more 就會為 true
ordersobject[]false訂單信息
∟ order_idstringtrue訂單 ID
∟ statusstringtrue訂單狀態
∟ stock_namestringtrue股票名稱
∟ quantitystringtrue下單數量
∟ executed_quantitystringtrue成交數量。

當訂單未成交時為 0
∟ pricestringtrue下單價格。

當市價條件單未觸發時為空字符串
∟ executed_pricestringtrue成交價。

當訂單未成交時為 0
∟ submitted_atstringtrue下單時間
∟ sidestringtrue買賣方向

可選值:
Buy - 買入
Sell - 賣出
∟ symbolstringtrue股票代碼,使用 ticker.region 格式,例如:AAPL.US
∟ order_typestringtrue訂單類型
∟ last_donestringtrue最近成交價格。

當訂單未成交時為空字符串
∟ trigger_pricestringtrueLIT / MIT 訂單觸發價格。

當訂單不是 LIT / MIT 訂單為空字符串
∟ msgstringtrue拒絕信息或備註,默認為空字符串。
∟ tagstringtrue訂單標記

可選值:
Normal - 普通訂單
Gtc - 長期單
Grey - 暗盤單
∟ time_in_forcestringtrue訂單有效期類型

可選值:
Day - 當日有效
GTC - 撤單前有效
GTD - 到期前有效
∟ expire_datestringtrue長期單過期時間,格式為 YYYY-MM-DD, 例如:2022-12-05。<br/><br/>不是長期單時,默認為空字符串。
∟ updated_atstringtrue最近更新時間,格式為時間戳 (秒),默認為 0。
∟ trigger_atstringtrue條件單觸發時間,格式為時間戳 (秒),默認為 0。
∟ trailing_amountstringtrueTSLPAMT 訂單跟蹤金額。

當訂單不是 TSLPAMT 訂單時為空字符串。
∟ trailing_percentstringtrueTSLPPCT 訂單跟蹤漲跌幅。

當訂單不是 TSLPPCT 訂單時為空字符串。
∟ limit_offsetstringtrueTSLPAMT / TSLPPCT 訂單指定價差。

當訂單不是 TSLPAMT / TSLPPCT 訂單時為空字符串。
∟ trigger_statusstringtrue條件單觸發狀態
當訂單不是條件單或條件單未觸發時,觸發狀態為 NOT_USED

可選值:
NOT_USED - 未激活 DEACTIVE - 已失效 ACTIVE - 已激活 RELEASED - 已觸發
∟ currencystringtrue結算貨幣
∟ outside_rthstringtrue是否允許盤前盤後
當訂單不是美股時,默認為 UnknownOutsideRth

可選值:
RTH_ONLY - 不允許盤前盤後
ANY_TIME - 允許盤前盤後
OVERNIGHT - 夜盤
∟ remarkstringtrue備註
∟ limit_depth_levelint32true指定買賣檔位
∟ monitor_pricestringtrue監控價格
∟ trigger_countint32true觸發次數
∟ attached_ordersobject[]false附加訂單詳情列表
∟∟ order_idstringtrue附加訂單 ID
∟∟ attached_type_displayint32true附加訂單類型。可選值: 1 - 止盈 2 - 止損
∟∟ trigger_pricestringtrue觸發價格
∟∟ quantitystringtrue下單數量
∟∟ executed_qtystringtrue成交數量
∟∟ statusstringtrue訂單狀態
∟∟ updated_atstringtrue最近更新時間,格式為時間戳 (秒)
∟∟ withdrawnbooleantrue是否已撤銷
∟∟ gtdstringtrueGTD 到期日期,格式為 YYYY-MM-DD
∟∟ time_in_forcestringtrue訂單有效期類型

可選值:
Day - 當日有效
GTC - 撤單前有效
GTD - 到期前有效
∟∟ counter_idstringtrue對應單 ID
∟∟ trigger_statusint32true附加單激活後的條件單觸發狀態。
0 - 未激活
1 - 監控中
2 - 已撤單
4 - 已觸發
∟∟ executed_amountstringtrue成交金額
∟∟ tagint32true訂單標記
∟∟ submitted_atstringtrue下單時間,格式為時間戳 (秒)
∟∟ executed_pricestringtrue成交價格
∟∟ force_only_rthstringtrue是否僅正常交易時段執行。
∟∟ reviewedbooleantrue是否已審核
∟∟ activate_order_typestringtrue觸發後提交的訂單類型,例如 LIT(限價單)或 MIT(市價單)
∟∟ activate_rthstringtrue觸發後提交訂單是否允許盤前盤後。
∟∟ submit_pricestringtrue委託價格
∟ multi_legobjectfalse多腿策略信息,僅多腿期權組合訂單返回,非組合訂單不返回。
∟∟ strategystringfalse多腿策略

可選值:
0 - CoveredCall(股票擔保)
1 - CoveredPut(股票擔保)
2 - VerticalCallSpread(跨價期權)
3 - VerticalPutSpread(跨價期權)
4 - Collar(領式策略)
5 - Straddle(馬鞍式策略)
6 - Strangle(勒束式策略)
∟∟ strategy_namestringfalse策略名稱
∟∟ multileg_idstringfalse多腿組合 ID
∟∟ codestringfalse多腿組合代碼
∟∟ legsobject[]false組合訂單的各腿
∟∟∟ symbolstringfalse期權 symbol,使用 ticker.region 格式,例如:QQQ260731C764000.US
∟∟∟ sidestringfalse買賣方向

可選值:
Buy
Sell
∟∟∟ positionstringfalse持倉方向

可選值:
LONG
SHORT
∟∟∟ ratio_quantitystringfalse該腿比例數量
∟∟∟ strike_pricestringfalse行權價
∟∟∟ expire_datestringfalse期權到期日,格式:YYYYMMDD
∟∟∟ contract_directionstringfalse合約類型

可選值:
C - 看漲(Call)
P - 看跌(Put)