只会用 K 线算期货信号下一步怎么接到交易

前言

很多读者学期货量化 的路径是:先在 Excel 或 Python 里读历史 K 线 CSV,算出均线、突破、胜率,觉得"策略有了"。下一步想接到真实或模拟交易时,不知道程序还要接哪些环节------不是再写一个指标公式,而是:谁提供实时 K 线、什么时候算一次信号、怎么下单、怎么确认持仓真的变了。

本文面向只会用 K 线算信号、还没跑通自动下单 的国内期货 Python 学习者,用天勤 TqSdk 把"研究脚本"接到"模拟盘可交易"的最小路径写清楚。会解释 TqApiget_kline_serialwait_updatedatetimeTargetPosTask 各是什么角色,不默认你已开户或懂 CTP。

一、期货自动交易比"算信号"多哪几步

可以记成五条,缺一条就会出现"能打印价格但从不下单"或"乱下单":

  1. 账户与环境TqApi + 认证 + 模拟账户(如 TqSimTqKq)。
  2. 实时 K 线get_kline_serial(合约, 周期秒数, data_length=...)
  3. 事件循环while Trueapi.wait_update(),等待行情服务推送并更新内存表。
  4. 触发时机 :用 K 线表最后一行的 datetime 是否变化 判断新 bar(见专题),在 iloc[-2] 上算你原来的信号。
  5. 执行与核对TargetPosTask.set_target_volumeinsert_order,再用 get_position / get_trade 核对。

你原来的 ma5 > ma20 可以几乎原样搬进第 4 步,变的是数据来源和触发条件。

二、把 CSV 研究换成实时 K 线表

python 复制代码
from tqsdk import TqApi, TqAuth, TqSim, tafunc

api = TqApi(TqSim(), auth=TqAuth("快期账户", "密码"))
symbol = "SHFE.rb2510"  # 上期所螺纹钢,换成你可交易的合约
kl = api.get_kline_serial(symbol, 60, data_length=200)  # 60 秒=1 分钟线

kl 是一张随市场更新的表;datetime 列由行情服务写入 ,表示每根 K 线的时间。研究里 df.iloc[-1] 若在实盘里直接用于"收盘价突破",往往用的是未收盘 的最后一根,会导致一分钟内信号闪多次;实盘应改为在 iloc[-2] 上判断,并用下一节的 datetime 触发。

三、触发:何时算一次信号

python 复制代码
while True:
    api.wait_update()
    if not api.is_changing(kl.iloc[-1], "datetime"):
        continue
    ma5 = tafunc.ma(kl.close, 5)
    ma20 = tafunc.ma(kl.close, 20)
    long_sig = ma5.iloc[-2] > ma20.iloc[-2] and ma5.iloc[-3] <= ma20.iloc[-3]

含义:只有在新 1 分钟 K 线(此处 duration=60)开始时,才用刚收盘那根 的金叉逻辑。wait_update 必须放在循环里,否则表不更新。

四、执行:TargetPosTask 表达"目标几手"

国内期货程序化里,用 目标净持仓 比逐笔手写报单更不易乱(尤其有平今平昨时)。天勤 TargetPosTask 在后续 wait_update 里撤单、报单:

python 复制代码
from tqsdk.lib import TargetPosTask

task = TargetPosTask(api, symbol)
if long_sig:
    task.set_target_volume(1)
# 循环必须继续 wait_update,task 才会动作

文档要求:同一合约不要与 insert_order 混用。

五、核对:持仓是否真的变了

python 复制代码
pos = api.get_position(symbol)
if api.is_changing(pos, "pos_long") or api.is_changing(pos, "pos_short"):
    print(symbol, "净仓", pos.pos)

模拟阶段建议下一笔极小仓位,对照成交与持仓;团队模拟可用 TqKq() 在快期 APP 里看仓。

六、再往后:模拟与实盘

跑通 TqSim 后,通常只改 TqApi 构造(如 TqKq()TqAccount(期货公司,...)),信号函数一行不改 。退出时 api.close(),避免连接残留。

总结

只会 K 线算信号 的读者,接入国内期货交易的下一步是:用天勤订实时 serial、用 datetime 变化 控制算信号频率、用 [-2] 做收盘决策、用 TargetPosTask 表达目标手数、用 position/trade 核对。这五步与指标公式无关,却是从研究到程序化的分水岭。

建议先在模拟环境跑通一周日志,再考虑实盘小仓位;勿在未核对成交的情况下加大手数。

FAQ

1)想先理解每一笔报单?

可短期用 insert_order 学习,再加交易时段、资金检查,再切 task。

2)没有快期账户?

按天勤文档注册;模拟也需要 TqAuth

3)信号一天只有一次,循环会空转吗?

过滤后 CPU 很低,空转正常。

4)回测怎么接?

TqBacktest 参数,捕获 BacktestFinishedclose()

风险提示

本文用于技术入门,不构成投资建议。

相关推荐
荣码8 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
金銀銅鐵19 小时前
[Python] 基于欧几里得算法,实现分数约分计算器
python·数学
Lyn_Li20 小时前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现
python·kaggle·比赛复盘·金融预测
小九九的爸爸1 天前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
阿耶同学1 天前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员
花酒锄作田2 天前
Pydantic校验配置文件
python
hboot2 天前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络
ZhengEnCi2 天前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化
ZhengEnCi2 天前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
python·matlab
曲幽2 天前
你的REST接口还在“过度投喂”数据吗?——FastAPI + GraphQL实战避坑指南
python·fastapi·web·graphql·route·cors·rest·strawberry