多合约期货策略目标持仓怎么更新不容易乱

前言

组合里同时交易螺纹、铁矿、豆粕时,最怕共用一个 target_pos 变量,或 A 合约还在调仓 B 合约已改信号。目标持仓应按 合约维度拆表,执行层一 symbol 一条线。

天勤 TargetPosTask 对同一账户同一合约保证单例(源码用 account_key#symbol 作 key)。下面讲数据结构、更新顺序和常见冲突。

一、per-symbol 状态表

python 复制代码
from tqsdk.lib import TargetPosTask

symbols = ["SHFE.rb2510", "DCE.i2509"]
tasks = {s: TargetPosTask(api, s) for s in symbols}
targets = {s: 0 for s in symbols}
klines = {s: api.get_kline_serial(s, 300, data_length=200) for s in symbols}

信号函数返回 {symbol: target_volume},禁止用全局 int 表示"做多做空"。

二、单例与构造参数

重复 TargetPosTask(api, s, price="ACTIVE") 参数一致则返回同一实例;offset_priorityprice 不一致会抛错。多品种若平今规则不同,应为不同 symbol 建不同 task(每个 symbol 本来就要独立实例)。

文档强调:set_target_volume 不立刻下单 ,在后续 wait_update 执行;多合约循环里 set 多个 symbol 后,必须继续 wait_update,不要在中途 sleep。

三、更新节奏

python 复制代码
while True:
    api.wait_update()
    for s in symbols:
        kl = klines[s]
        if not api.is_changing(kl.iloc[-1], "datetime"):
            continue
        t = calc_target(kl)  # 仅算该合约
        if t is None:
            continue
        targets[s] = t
        tasks[s].set_target_volume(t)

信号层只写 targets[s],不在 calc_targetinsert_order

四、价差腿成对更新

双腿价差:同一帧内算好两条腿目标,再依次 set_target_volume,缩短单腿裸露时间。组合合约(SP)则按一个 symbol 一个 task,勿与双腿混规则。

五、禁止混用 insert_order

同一合约上 TargetPosTaskinsert_order 并用会冲突(官方明确禁止)。多合约若部分手写报单,按 symbol 划清边界。

六、收盘核对

每个 symbol 打印:targetpos.pos、在途 ALIVE 委托数(status 以文档为准)。偏差先查部分成交与 set 后未 wait_update。

总结

多合约目标持仓:字典维护 targets 与 tasks,K 线 datetime 按合约分别触发,成对价差同帧更新。利用 TargetPosTask 单例,构造参数一次定终身,调仓只改 set_target_volume。

不与 insert_order 混用;按 symbol 日志与 position 核对。

FAQ

1)十个合约会很慢吗?

合约越多,每帧潜在 work 越大,可只订阅必要品种。

2)一个 task 管多合约?

不能,一 task 一 symbol。

3)targets 与 position 不一致?

以 get_position 为准,查成交与 wait_update 是否跟上。

4)多账户?

task 构造传 account=,各账户独立字典。

风险提示

本文讨论仓位管理技术,不构成投资建议。

相关推荐
荷蒲29 分钟前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
数据狐(Datafox)2 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机2 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
Metaphor6923 小时前
使用 Python 读取和删除 Excel 文件属性
python·excel
迷迭香yy4 小时前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
月光船幽幽4 小时前
真实即粗糙,光滑是伪造
人工智能·python
一次旅行4 小时前
Attention机制从数学到工程:拆解缩放点积+多头注意力|附可运行PyTorch实现与踩坑指南
人工智能·pytorch·python
泡干脆面就番茄4 小时前
NumPy 科学计算完全指南:从数组创建到广播机制
python·numpy
denggun123454 小时前
信号量(DispatchSemaphore vs AsyncSemaphore)、swift协作式线程池 and python信号量
开发语言·python·swift
起光4 小时前
Python类与对象(一)
python