from tqsdk import TqApi, TqAuth, TqBacktest, TargetPosTask from datetime import datetime # 设置回测时间 start_date = datetime(2025, 4, 1) end_date = datetime(2025, 4, 13) # 初始化天勤API api = TqApi(backtest=TqBacktest(start_dt=start_date, end_dt=end_date), auth=TqAuth("W", "lxh")) # 获取合约和K线数据 symbol = "SHFE.au2206" klines = api.get_kline_serial(symbol, 60) # 60秒周期 # 初始化持仓和均线 position = api.get_position(symbol) target_pos = TargetPosTask(api, symbol) # 计算均线 klines["ma5"] = klines.close.rolling(5).mean() klines["ma20"] = klines.close.rolling(20).mean() # 主循环 while True: api.wait_update() # 检查是否有新K线生成 if api.is_changing(klines.iloc[-1], "datetime"): # 获取当前持仓 current_pos = position.pos # 检查均线交叉条件 if klines["ma5"].iloc[-2] < klines["ma20"].iloc[-2] and klines["ma5"].iloc[-1] > klines["ma20"].iloc[-1]: # 5日均线上穿20日均线 if current_pos == 0: target_pos.set_target_volume(1) # 买开仓 elif current_pos > 0: target_pos.set_target_volume(-1) # 反手卖开仓 elif klines["ma5"].iloc[-2] > klines["ma20"].iloc[-2] and klines["ma5"].iloc[-1] < klines["ma20"].iloc[-1]: # 5日均线下穿20日均线 if current_pos == 0: target_pos.set_target_volume(-1) # 卖开仓 elif current_pos > 0: target_pos.set_target_volume(1) # 反手买开仓
代码说明
- 回测设置:
- 使用
TqBacktest
设置回测时间为2025年4月1日
至2025年4月13日
。 - 合约选择
沪金2206
(代码为SHFE.au2206
)。
- 使用
- 均线计算:
- 计算 5 日均线(
ma5
)和 20 日均线(ma20
)。
- 计算 5 日均线(
- 交易逻辑:
- 当持仓为 0 时:
- 5 日均线上穿 20 日均线时,买开仓。
- 5 日均线下穿 20 日均线时,卖开仓。
- 当持仓大于 0 时:
- 5 日均线上穿 20 日均线时,反手卖开仓。
- 5 日均线下穿 20 日均线时,反手买开仓。
- 当持仓为 0 时:
- 运行与监控:
- 使用
api.wait_update()
等待数据更新。 - 通过
api.is_changing()
检查是否有新 K 线生成。 - C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python.exe C:/Users/Administrator/tq.py
在使用天勤量化之前,默认您已经知晓并同意以下免责条款,如果不同意请立即停止使用:https://www.shinnytech.com/blog/disclaimer/
INFO – TqSdk trial 版剩余 13 天到期,如需续费或升级请访问 https://account.shinnytech.com/ 或联系相关工作人员。
INFO – 回测结束
INFO – 模拟交易成交记录, 账户: TQSIM
INFO – 模拟交易账户资金, 账户: TQSIM
INFO – 日期: 2025-04-01, 账户权益: 10000000.00, 可用资金: 10000000.00, 浮动盈亏: 0.00, 持仓盈亏: 0.00, 平仓盈亏: 0.00, 市值: 0.00, 保证金: 0.00, 手续费: 0.00, 风险度: 0.00%
INFO – 胜率: 0.00%, 盈亏额比例: inf, 收益率: 0.00%, 年化收益率: 0.00%, 最大回撤: 0.00%, 年化夏普率: inf,年化索提诺比率: -15.8114
- 使用
chaos 已回答的问题 2025年4月14日