# 下單

place_order(price, qty, code, trd_side, order_type=OrderType.NORMAL, adjust_limit=0, trd_env=TrdEnv.REAL, acc_id=0, acc_index=0, remark=None, time_in_force=TimeInForce.DAY, fill_outside_rth=False, aux_price=None, trail_type=None, trail_value=None, trail_spread=None, session=Session.NONE, jp_acc_type=SubAccType.JP_GENERAL, position_id=NONE)

  • 介紹

    下單

    提示

    Python API 是同步的,但網絡收發是非同步的。當 place_order 對應的應答數據包與 響應成交推送回呼響應訂單推送回呼 間隔很短時,就可能出現 place_order 的數據包先返回,但回呼函數先被執行的情況。例如:可能先執行了 響應訂單推送回呼,然後 place_order 這個介面才返回。

  • 參數

    參數 類型 說明
    price float 訂單價格
    qty float 訂單數量
    code str 標的代碼
    trd_side TrdSide 交易方向
    order_type OrderType 訂單類型
    adjust_limit float 價格微調幅度
    trd_env TrdEnv 交易環境
    acc_id int 交易業務賬户 ID
    acc_index int 交易業務賬户列表中的賬户序號
    remark str 備註
    time_in_force TimeInForce 有效期限
    fill_outside_rth bool 是否允許盤前盤後
    aux_price float 觸發價格
    trail_type TrailType 跟蹤類型
    trail_value float 跟蹤金額/百分比
    trail_spread float 指定價差
    session Session 美股交易時段
    jp_acc_type SubAccType 日本賬户類型
    position_id int 持倉ID
  • 返回

    參數 類型 說明
    ret RET_CODE 介面執行結果
    data pd.DataFrame 當 ret == RET_OK 時,返回訂單列表
    str 當 ret != RET_OK 時,返回錯誤描述
    • 訂單列表格式如下:
      欄位 類型 說明
      trd_side TrdSide 交易方向
      order_type OrderType 訂單類型
      order_status OrderStatus 訂單狀態
      order_id str 訂單號
      code str 股票代碼
      stock_name str 股票名稱
      qty float 訂單數量
      price float 訂單價格
      create_time str 創建時間
      updated_time str 最後更新時間
      dealt_qty float 成交數量
      dealt_avg_price float 成交均價
      last_err_msg str 最後的錯誤描述
      remark str 下單時備註的標記
      time_in_force TimeInForce 有效期限
      fill_outside_rth bool 是否允許盤前盤後(用於港股盤前競價與美股盤前盤後)
      session Session 交易訂單時段(僅用於美股)
      aux_price float 觸發價格
      trail_type TrailType 跟蹤類型
      trail_value float 跟蹤金額/百分比
      trail_spread float 指定價差
  • Example

from futu import *
pwd_unlock = '123456'
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, security_firm=SecurityFirm.FUTUSECURITIES)
ret, data = trd_ctx.unlock_trade(pwd_unlock)  # 若使用真實賬户下單,需先對賬户進行解鎖。此處示例為模擬賬户下單,也可省略解鎖。
if ret == RET_OK:
    ret, data = trd_ctx.place_order(price=510.0, qty=100, code="HK.00700", trd_side=TrdSide.BUY, trd_env=TrdEnv.SIMULATE, session=Session.NONE)
    if ret == RET_OK:
        print(data)
        print(data['order_id'][0])  # 獲取下單的訂單號
        print(data['order_id'].values.tolist())  # 轉為 list
    else:
        print('place_order error: ', data)
else:
    print('unlock_trade failed: ', data)
trd_ctx.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  • Output

       code stock_name trd_side order_type order_status           order_id    qty  price          create_time         updated_time  dealt_qty  dealt_avg_price last_err_msg remark time_in_force fill_outside_rth session aux_price trail_type trail_value trail_spread currency
0  HK.00700       騰訊控股      BUY     NORMAL   SUBMITTING  38196006548709500  100.0  420.0  2021-11-04 11:38:19  2021-11-04 11:38:19        0.0              0.0                               DAY              N/A       N/A    N/A      N/A         N/A          N/A      HKD
38196006548709500
['38196006548709500']
1
2
3
4
5

介面限制

  • 同一賬户ID(acc_id) 每 30 秒內最多請求 15 次下單介面,且連續兩次請求的間隔不可小於 0.02 秒。
  • 真實賬户執行下單介面前,需要先進行 解鎖;模擬賬户無需解鎖。

提示

  • 各訂單類型對應的必傳遞參數數:點擊這裏 瞭解更多
  • 各券商針對不同交易品種,對單筆訂單股數有所限制,超出限制會導致下單失敗:點擊這裏 瞭解更多
  • 對於 可做空標的,暫不支援鎖倉功能,故無法同時持有相同產品的多頭頭寸和空頭頭寸。
  • 如果希望對 可做空標的 進行 平倉 操作,需要自行判斷持倉頭寸的方向,然後提交一筆反向的相同數量的訂單完成平倉操作。
  • 如果希望對 可做空標的 進行 反手 操作,需要兩步:1. 先判斷持倉頭寸的方向,並提交一筆反向的相同數量的訂單完成平倉操作;2. 提交一筆反向的訂單,完成反向訂單的提交。
    舉例:A 當前持有 1 手 HK.HSI2012 期貨合約的多單,如果希望反手,必須先 賣出 1 手 HK.HSI2012 完成平倉,再賣出 1 手 HK.HSI2012 完成空單的建立。
  • 美股全時段交易,僅支援限價單,訂單期限可以選擇當日有效或撤單前有效。選擇全時段,交易者可以一次掛單參與多個時段(夜盤、盤前、盤中、盤後時段)的交易,全時段交易時間是星期日到星期四 20:00 - 次日20:00(美東時間)
  • 美股模擬交易不支援盤前盤後與夜盤