免责声明:本文基于个人使用体验,与任何厂商无商业关系。内容仅供技术交流参考,不构成投资建议。


一、前言

从写好均线策略到回测、再上实盘,流程清晰能少踩坑。做了多年期货量化,我习惯按固定步骤:回测验证 → 参数记录 → 实盘同一套代码。

今天分享 Python 期货均线策略从回测到实盘的完整流程,以天勤量化为例。


二、策略逻辑(示例)

# 双均线:短线上穿长线做多,下穿平多
# 参数:ma_short=5, ma_long=20

三、回测阶段

from tqsdk import TqApi, TqAuth, TqBacktest
from datetime import date
from tqsdk.ta import MA

api = TqApi(
    backtest=TqBacktest(start_dt=date(2024,1,1), end_dt=date(2024,12,31)),
    auth=TqAuth("账户", "密码")
)
klines = api.get_kline_serial("SHFE.rb2510", 300, 500)
position = api.get_position("SHFE.rb2510")
ma_short, ma_long = 5, 20

while True:
    api.wait_update()
    if api.is_changing(klines) and len(klines) >= ma_long:
        ma5 = MA(klines, ma_short).ma.iloc[-1]
        ma20 = MA(klines, ma_long).ma.iloc[-1]
        ma5_prev = MA(klines, ma_short).ma.iloc[-2]
        ma20_prev = MA(klines, ma_long).ma.iloc[-2]

        if ma5_prev <= ma20_prev and ma5 > ma20 and position.pos_long == 0:
            api.insert_order("SHFE.rb2510", "BUY", "OPEN", 1)
        elif ma5_prev >= ma20_prev and ma5 < ma20 and position.pos_long > 0:
            api.insert_order("SHFE.rb2510", "SELL", "CLOSE", position.pos_long)

api.close()

回测后记录:品种、周期、参数、回测区间、夏普/回撤等,便于与实盘对照。


四、实盘阶段(同一套逻辑)

from tqsdk import TqApi, TqAuth, TqAccount
from tqsdk.ta import MA

# 仅把 api 换成实盘
api = TqApi(
    TqAccount("期货公司", "账号", "密码"),
    auth=TqAuth("账户", "密码")
)
klines = api.get_kline_serial("SHFE.rb2510", 300, 500)
position = api.get_position("SHFE.rb2510")
ma_short, ma_long = 5, 20

# 下面循环与回测相同
while True:
    api.wait_update()
    if api.is_changing(klines) and len(klines) >= ma_long:
        ma5 = MA(klines, ma_short).ma.iloc[-1]
        ma20 = MA(klines, ma_long).ma.iloc[-1]
        ma5_prev = MA(klines, ma_short).ma.iloc[-2]
        ma20_prev = MA(klines, ma_long).ma.iloc[-2]
        if ma5_prev <= ma20_prev and ma5 > ma20 and position.pos_long == 0:
            api.insert_order("SHFE.rb2510", "BUY", "OPEN", 1)
        elif ma5_prev >= ma20_prev and ma5 < ma20 and position.pos_long > 0:
            api.insert_order("SHFE.rb2510", "SELL", "CLOSE", position.pos_long)

api.close()

五、流程小结

flow = [
    "1. 写好策略逻辑(参数、品种、周期)",
    "2. 用 TqBacktest 回测,看收益与回撤",
    "3. 记录参数与回测结果",
    "4. 实盘用同一套代码,只换 TqAccount",
    "5. 实盘监控、日志、异常处理"
]

六、总结

均线策略从回测到实盘,关键是同一套代码、同一套参数,只换 api。天勤量化回测与实盘接口一致,适合这种流程。我目前新策略都会先回测再小资金实盘验证。量化交易有风险,历史回测不代表未来表现。


声明:本文基于个人学习经验整理,仅供技术交流参考,不构成任何投资建议。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐