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

前言

组合里同时交易螺纹、铁矿、豆粕时,最怕共用一个 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_priority 或 price 不一致会抛错。多品种若平今规则不同,应为不同 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_target 里 insert_order。

四、价差腿成对更新

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

五、禁止混用 insert_order

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

六、收盘核对

每个 symbol 打印:target、pos.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=,各账户独立字典。

风险提示

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

相关推荐
代码山河2 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行2 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
梯度下降者2 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
“AI国潮设计-小江”4 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
benchmark_cc5 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读5 小时前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
外收内放5 小时前
Python基础语法练习题(73)
java·前端·python
锋行天下6 小时前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
时早玖沐6 小时前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
触底反弹6 小时前
🚀 FastAPI 五大重难点深度剖析:从 500 报错到彻底搞懂 Depends、Pydantic 与 SQLAlchemy
python·fastapi