[模擬環境] 期貨 2 口 MKP/IOC 的 FDEAL 成交價超出當下行情高低範圍
主要問題
在 Shioaji 模擬環境送出微型臺指期貨 2 口市價範圍單(MKP + IOC)時,兩筆委託收到的 FDEAL 成交價都高於當時該根 K 棒的最高價,而且差距明顯。
TradingView 使用 TMF1!,當時對應 TMFQ2026;Shioaji 下單合約為 TMFH6(delivery month 202608),兩邊都是 2026 年 8 月的微型臺指期貨。
| 臺北時間 |
方向/用途 |
當時 K 棒高低 |
FDEAL 回傳成交價 |
與最高價的差距 |
| 2026-07-16 13:35:39~13:35:40 |
Sell 2,出場 |
高 45854/低 45644 |
45902、45965 |
+48、+111 點 |
| 2026-07-16 13:40:07~13:40:08 |
Buy 2,進場 |
高 45755/低 45672 |
45945、45924 |
+190、+169 點 |
想請協助確認:
- 模擬環境的期貨撮合價格是否可能與當時行情脫鉤?
FDEAL callback 的 price 欄位,在 2 口 MKP + IOC 委託時是否可能解析錯誤?
- 這是否為 Shioaji 1.5.5 已知問題,或有建議升級的版本?
執行環境
- Shioaji:1.5.5
- Python:3.12
- 作業系統:Ubuntu Linux(VPS)
- API:
sj.Shioaji(simulation=True)
- 時區:Asia/Taipei
- 合約:
TMFH6,delivery month 202608
異常資料一:13:35 出場委託
當時該根 K 棒:
![2026-07-16 13:35 出場時的 1 分 K]
委託資料:
seqno / id:101E92
ordno:001EA1
action:Sell
quantity:2
price:0
price_type:MKP
order_type:IOC
octype:Cover
收到兩筆 FDEAL:
| callback 時間(Asia/Taipei) |
exchange_seq |
quantity |
price |
| 2026-07-16 13:35:39.728595 |
000001 |
1 |
45902 |
| 2026-07-16 13:35:40.339097 |
000002 |
1 |
45965 |
原始 callback 重要欄位(帳號資料已遮蔽):
FORDER
{
"id": "101E92",
"seqno": "101E92",
"ordno": "001EA1",
"action": "Sell",
"price": 0.0,
"quantity": 2,
"order_type": "IOC",
"price_type": "MKP",
"market_type": "Day",
"oc_type": "Cover",
"contract": {
"exchange": "TAIFEX",
"code": "TMFH6"
},
"status": {
"exchange_ts": 1784180139.528527
}
}
FDEAL
{
"trade_id": "101E92",
"seqno": "101E92",
"ordno": "001EA1",
"exchange_seq": "000001",
"action": "Sell",
"code": "TMFH6",
"price": 45902.0,
"quantity": 1,
"ts": 1784180139.728595
}
FDEAL
{
"trade_id": "101E92",
"seqno": "101E92",
"ordno": "001EA1",
"exchange_seq": "000002",
"action": "Sell",
"code": "TMFH6",
"price": 45965.0,
"quantity": 1,
"ts": 1784180140.339097
}
異常資料二:13:40 進場委託
當時該根 K 棒:
![2026-07-16 13:40 進場時的 1 分 K]
委託資料:
seqno / id:101EB0
ordno:001EBF
action:Buy
quantity:2
price:0
price_type:MKP
order_type:IOC
octype:Auto
收到兩筆 FDEAL:
| callback 時間(Asia/Taipei) |
exchange_seq |
quantity |
price |
| 2026-07-16 13:40:07.414121 |
000001 |
1 |
45945 |
| 2026-07-16 13:40:08.071163 |
000002 |
1 |
45924 |
原始 callback 重要欄位(帳號資料已遮蔽):
FORDER
{
"id": "101EB0",
"seqno": "101EB0",
"ordno": "001EBF",
"action": "Buy",
"price": 0.0,
"quantity": 2,
"order_type": "IOC",
"price_type": "MKP",
"market_type": "Day",
"oc_type": "Auto",
"contract": {
"exchange": "TAIFEX",
"code": "TMFH6"
},
"status": {
"exchange_ts": 1784180401.053725
}
}
FDEAL
{
"trade_id": "101EB0",
"seqno": "101EB0",
"ordno": "001EBF",
"exchange_seq": "000001",
"action": "Buy",
"code": "TMFH6",
"price": 45945.0,
"quantity": 1,
"ts": 1784180407.414121
}
FDEAL
{
"trade_id": "101EB0",
"seqno": "101EB0",
"ordno": "001EBF",
"exchange_seq": "000002",
"action": "Buy",
"code": "TMFH6",
"price": 45924.0,
"quantity": 1,
"ts": 1784180408.071163
}
預期結果
FDEAL callback 回傳的成交價應能對應當時同一合約的合理市場價格;若模擬環境採用不同的撮合規則,也希望能確認價格來源與規則。
下單與 callback 程式碼
以下是實際使用的 callback 設定方式與兩筆委託的建立方式。API key、secret key 與期貨帳號均已省略。
import shioaji as sj
api = sj.Shioaji(simulation=True)
api.login(
api_key=API_KEY,
secret_key=SECRET_KEY,
subscribe_trade=True,
)
account = SELECTED_FUTURES_ACCOUNT
contract = api.Contracts.Futures["TMFH6"]
def order_callback(stat, msg):
print(stat, msg)
api.set_order_callback(order_callback)
# 2026-07-16 13:35 的出場委託
exit_order = sj.FuturesOrder(
price=0,
quantity=2,
action=sj.Action.Sell,
price_type=sj.FuturesPriceType.MKP,
order_type=sj.OrderType.IOC,
octype=sj.FuturesOCType.Cover,
account=account,
)
api.place_order(contract, exit_order)
# 2026-07-16 13:40 的進場委託
entry_order = sj.FuturesOrder(
price=0,
quantity=2,
action=sj.Action.Buy,
price_type=sj.FuturesPriceType.MKP,
order_type=sj.OrderType.IOC,
octype=sj.FuturesOCType.Auto,
account=account,
)
api.place_order(contract, entry_order)
[模擬環境] 期貨 2 口 MKP/IOC 的 FDEAL 成交價超出當下行情高低範圍
主要問題
在 Shioaji 模擬環境送出微型臺指期貨 2 口市價範圍單(
MKP + IOC)時,兩筆委託收到的FDEAL成交價都高於當時該根 K 棒的最高價,而且差距明顯。TradingView 使用
TMF1!,當時對應TMFQ2026;Shioaji 下單合約為TMFH6(delivery month202608),兩邊都是 2026 年 8 月的微型臺指期貨。想請協助確認:
FDEALcallback 的price欄位,在 2 口MKP + IOC委託時是否可能解析錯誤?執行環境
sj.Shioaji(simulation=True)TMFH6,delivery month202608異常資料一:13:35 出場委託
當時該根 K 棒:
![2026-07-16 13:35 出場時的 1 分 K]
委託資料:
seqno / id:101E92ordno:001EA1action:Sellquantity:2price:0price_type:MKPorder_type:IOCoctype:Cover收到兩筆
FDEAL:原始 callback 重要欄位(帳號資料已遮蔽):
異常資料二:13:40 進場委託
當時該根 K 棒:
![2026-07-16 13:40 進場時的 1 分 K]
委託資料:
seqno / id:101EB0ordno:001EBFaction:Buyquantity:2price:0price_type:MKPorder_type:IOCoctype:Auto收到兩筆
FDEAL:原始 callback 重要欄位(帳號資料已遮蔽):
預期結果
FDEALcallback 回傳的成交價應能對應當時同一合約的合理市場價格;若模擬環境採用不同的撮合規則,也希望能確認價格來源與規則。下單與 callback 程式碼
以下是實際使用的 callback 設定方式與兩筆委託的建立方式。API key、secret key 與期貨帳號均已省略。