下單
POST/api/v1.0/accounts/{acc_id}/orders提交新的交易訂單。
下單結果怎麼看
- 本接口需要 OAuth
trade:write。若返回權限不足,請確認 Token 的scope已包含該項,見 快速開始 · 權限範圍。 s為ok:已受理,訂單號在d.order_id。s為error且need_order_confirm為true:還需確認(不是最終失敗),用頂層confirm_id調用二次確認。- 有
jump_url:請在瀏覽器打開該連結繼續。 - 其他錯誤:按
errcode/errmsg處理。
need_order_confirm、confirm_id、jump_url 在響應頂層,不在 d 裡。詳見二次確認。
路徑參數
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
acc_id | string | 是 | 業務賬戶 ID。 |
請求參數
| 參數 | 類型 | 位置 | 必填 | 說明 |
|---|---|---|---|---|
code | string | 請求體 | 條件必填 | 可交易標的代碼。格式:market.symbol,例如 US.AAPL,US.AAPL250926C235000。普通訂單必填;order_class 為 MLEG 時可不填,由 multi_leg_info.leg_infos 合成。 |
qty | string | 請求體 | 是 | 訂單數量。期權和期貨的單位為"合約"。 |
price | string | 請求體 | 否 | 訂單價格。期貨賬戶精確到 9 位小數,外匯賬戶精確到 5 位小數,證券賬戶精確到 4 位小數,超出部分四捨五入。 |
side | trd_side | 請求體 | 是 | 交易方向 |
order_type | order_type | 請求體 | 是 | 訂單類型 |
time_in_force | time_in_force | 請求體 | 是 | 有效期 |
expire_time | uint64 | 請求體 | 條件必填 | 微秒級 Unix 時間戳。當 time_in_force 為 GTD 時必填。 |
session | trading_session | 請求體 | 否 | 交易時段(僅適用於美股)。市價單僅支持 RTH。 |
aux_price | string | 請求體 | 否 | 觸發價格。當訂單類型為 STOP、STOP_LIMIT、MARKET_IF_TOUCHED、LIMIT_IF_TOUCHED 時必填。期貨賬戶精確到 9 位小數,外匯賬戶精確到 5 位小數,證券賬戶精確到 3 位小數,超出部分四捨五入。 |
trail_type | trail_type | 請求體 | 否 | 跟蹤止損類型。僅跟蹤止損單(TRAILING_STOP、TRAILING_STOP_LIMIT)可用。 |
trail_value | string | 請求體 | 否 | 跟蹤金額或比例。僅跟蹤止損單可用。 |
trail_spread | string | 請求體 | 否 | 指定價差。僅 TRAILING_STOP_LIMIT 可用。 |
lot_type | lot_type | 請求體 | 否 | 手數類型,默認整手。適用於港股 / 日股交易。 |
remark | string | 請求體 | 否 | 備註,UTF-8 編碼後最大長度 64 字節。 |
order_class | order_class | 請求體 | 否 | 訂單類別。多腿訂單需指定為 MLEG。日本券商不支持組合期權。 |
multi_leg_info | multi_leg_info | 請求體 | 否 | 多腿訂單信息,下多腿訂單時必填。 |
sub_acc_id | string | 請求體 | 條件必填 | 日本賬戶必填。子賬戶 ID,由客戶端從該賬戶的 sub_accounts[] 中選取(由「獲取授權交易賬戶」接口返回)。非日本券商忽略。 |
position_id | string | 請求體 | 條件必填 | 外匯平倉(SELL / BUY_BACK)必填。其他市場可選:傳入則平指定持倉,不傳則按同標的持倉自動分配。 |
position_open_type | position_open_type | 請求體 | 否 | 開倉類型,僅跟蹤止損單(TRAILING_STOP、TRAILING_STOP_LIMIT)可用,控制是否允許開新倉 |
algo_info | algo_info | 請求體 | 否 | 算法單參數,當 order_type 為算法單類型時必填。結構同響應 algo_info,其中 twap/vwap/pov/slicer/peg/iceberg 子結構的字段為各算法類型專屬必填項,參見 命名词典 |
支持的訂單類型
本接口 order_type 以下列分類為準(完整取值見 命名詞典 · order_type)。是否可下還取決於賬戶所屬市場、標的和交易權限;不支持時接口會返回錯誤。
多腿組合期權用 order_class=MLEG + multi_leg_info 表達,不是新的 order_type。日本券商不支持組合期權。
常規
order_type | 含義 | 關鍵附加字段 |
|---|---|---|
LIMIT | 限價單 | 通常傳 price |
MARKET | 市價單 | 一般不傳 price;美股 session 僅支持 RTH |
AUCTION | 競價市價單 | 多為港股競價場景 |
AUCTION_LIMIT | 競價限價單 | 同上,通常還傳 price |
止損 / 觸及
order_type | 含義 | 關鍵附加字段 |
|---|---|---|
STOP | 止損市價單 | 必填 aux_price |
STOP_LIMIT | 止損限價單 | 必填 aux_price,通常還有 price |
MARKET_IF_TOUCHED | 觸及市價單 | 必填 aux_price |
LIMIT_IF_TOUCHED | 觸及限價單 | 必填 aux_price,通常還有 price |
跟蹤止損
order_type | 含義 | 關鍵附加字段 |
|---|---|---|
TRAILING_STOP | 跟蹤止損市價單 | 必填 trail_type、trail_value;可選 position_open_type |
TRAILING_STOP_LIMIT | 跟蹤止損限價單 | 上項 + 必填 trail_spread |
算法單
算法類 order_type 必須傳 algo_info。各類型專屬子結構見 命名詞典 · algo_info。
order_type | 含義 | 專屬約束(摘要) |
|---|---|---|
TWAP / TWAP_LIMIT | TWAP 市價 / 限價 | algo_info.twap.participation_rate |
VWAP / VWAP_LIMIT | VWAP 市價 / 限價 | algo_info.vwap.participation_rate |
POV / POV_LIMIT | POV 市價 / 限價(成交量佔比) | algo_info.pov.participation_rate |
SLICER / SLICER_LIMIT | Slicer 市價 / 限價(切片) | algo_info.slicer;slice_interval 與 display_qty 至少其一 |
PEG / PEG_LIMIT | PEG 市價 / 限價 | display_qty、peg_offset |
ICEBERG_LIMIT | 冰山限價 | algo_info.iceberg.display_qty;非美股還需 start_time / end_time,美股可豁免 |
請求示例
限價買入。以 150 美元買入 100 股 US.AAPL,當日有效。
curl -X POST 'https://webapi.moomoo.com/api/v1.0/accounts/{acc_id}/orders' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <AccessToken>' \
-d '{
"code": "US.AAPL",
"qty": "100",
"price": "150.00",
"side": "BUY",
"order_type": "LIMIT",
"time_in_force": "DAY"
}' | jq市價賣出。賣出 100 股 HK.00700,當日有效。市價單不傳 price。
curl -X POST 'https://webapi.moomoo.com/api/v1.0/accounts/{acc_id}/orders' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <AccessToken>' \
-d '{
"code": "HK.00700",
"qty": "100",
"side": "SELL",
"order_type": "MARKET",
"time_in_force": "DAY"
}' | jq止損限價。STOP_LIMIT 必須帶觸發價 aux_price,同時帶上限價 price。GTC 表示撤單前有效。
curl -X POST 'https://webapi.moomoo.com/api/v1.0/accounts/{acc_id}/orders' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <AccessToken>' \
-d '{
"code": "US.NVDA",
"qty": "100",
"price": "999.00",
"aux_price": "1000.00",
"side": "SELL",
"order_type": "STOP_LIMIT",
"time_in_force": "GTC"
}' | jq跟蹤止損限價。TRAILING_STOP_LIMIT 必須帶 trail_type、trail_value 和 trail_spread。GTD 必須帶晚於當前時間的微秒 expire_time。RATIO 時 trail_value 填 0.5 表示 0.5%。
curl -X POST 'https://webapi.moomoo.com/api/v1.0/accounts/{acc_id}/orders' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <AccessToken>' \
-d '{
"code": "US.NVDA",
"qty": "100",
"side": "SELL",
"order_type": "TRAILING_STOP_LIMIT",
"time_in_force": "GTD",
"expire_time": 1814313600000000,
"trail_type": "RATIO",
"trail_value": "0.5",
"trail_spread": "1.2"
}' | jqTWAP 限價算法單。必須帶 algo_info,其中 start_time、end_time 必填且結束晚於開始,並帶 twap.participation_rate。限價類同時帶 price。
curl -X POST 'https://webapi.moomoo.com/api/v1.0/accounts/{acc_id}/orders' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <AccessToken>' \
-d '{
"code": "US.AAPL",
"qty": "100",
"side": "BUY",
"order_type": "TWAP_LIMIT",
"time_in_force": "DAY",
"price": "150.00",
"algo_info": {
"start_time": 1798761600000000,
"end_time": 1798765200000000,
"pricing_strategy": "ADAPTIVE",
"layering": "AUTO",
"twap": {
"participation_rate": "20"
}
}
}' | jq響應參數
| 字段 | 類型 | 說明 |
|---|---|---|
order_id | string | 新建訂單的訂單 ID。 |
響應頂層還可能返回
need_order_confirm、confirm_id、jump_url,含義見下方示例與提示。
響應示例
{
"s": "ok",
"d": {
"order_id": "FH1D5B797DAC864000"
}
}失敗響應:
業務錯誤:
{
"s": "error",
"errcode": 344,
"errmsg": "Trading for this market not activated.",
"need_order_confirm": false
}需要二次確認:
{
"s": "error",
"errcode": 108330261,
"errmsg": "Due to liquidity and market conditions, you may be unable to open or close positions for this security. Do you want to continue?",
"need_order_confirm": true,
"confirm_id": "0a1984f400616ae1b2100008eb430000"
}鑑權失敗。Access Token 無效時各接口都返回這段,字段是 code 和 trace_id,不是 s / errcode:
{
"code": -12006,
"trace_id": "385e116c10c8d386334acfc839f63251"
}