2.77K 浏览
0

from tqsdk import TqApi, TqBacktest, TargetPosTask
from datetime import date
# 在创建 api 实例时传入 TqBacktest 就会进入回测模式,设置web_gui=True开启图形化界面
api = TqApi(backtest=TqBacktest(start_dt=date(2018, 5, 2), end_dt=date(2018, 6, 2)),web_gui=True)
# 获得 m1901 5分钟K线的引用
klines = api.get_kline_serial("KQ.m@CFFEX.IF", 5 * 60, data_length=15)
# 创建 m1901 的目标持仓 task,该 task 负责调整 m1901 的仓位到指定的目标仓位
target_pos = TargetPosTask(api, "KQ.m@CFFEX.IF")
while True:
    api.wait_update()
    if api.is_changing(klines):
        ma = sum(klines.close.iloc[-15:]) / 15
        print("最新价", klines.close.iloc[-1], "MA", ma)
        if klines.close.iloc[-1] > ma:
            print("最新价大于MA: 目标多头5手")
            # 设置目标持仓为多头5手
            target_pos.set_target_volume(5)
        elif klines.close.iloc[-1] < ma:
            print("最新价小于MA: 目标空仓")
            # 设置目标持仓为空仓
            target_pos.set_target_volume(0)

当用指数进行回测交易时,回测的结果是不计算的,是因为合约代码必须是交易代码吗?如此的话回测的图像显示是不是只能一段合约上测试呀

WARNING – 日期:2018-05-25,账户权益:10000000.00,可用资金:10000000.00,浮动盈亏:0.00,持仓盈亏:0.00,平仓盈亏:0.00,市值:0.00,保证金:0.00,手续费:0.00,风险度:0.00%
WARNING – 日期:2018-05-28,账户权益:10000000.00,可用资金:10000000.00,浮动盈亏:0.00,持仓盈亏:0.00,平仓盈亏:0.00,市值:0.00,保证金:0.00,手续费:0.00,风险度:0.00%
WARNING – 日期:2018-05-29,账户权益:10000000.00,可用资金:10000000.00,浮动盈亏:0.00,持仓盈亏:0.00,平仓盈亏:0.00,市值:0.00,保证金:0.00,手续费:0.00,风险度:0.00%
WARNING – 日期:2018-05-30,账户权益:10000000.00,可用资金:10000000.00,浮动盈亏:0.00,持仓盈亏:0.00,平仓盈亏:0.00,市值:0.00,保证金:0.00,手续费:0.00,风险度:0.00%
WARNING – 日期:2018-05-31,账户权益:10000000.00,可用资金:10000000.00,浮动盈亏:0.00,持仓盈亏:0.00,平仓盈亏:0.00,市值:0.00,保证金:0.00,手续费:0.00,风险度:0.00%
WARNING – 日期:2018-06-01,账户权益:10000000.00,可用资金:10000000.00,浮动盈亏:0.00,持仓盈亏:0.00,平仓盈亏:0.00,市值:0.00,保证金:0.00,手续费:0.00,风险度:0.00%
WARNING – 胜率:0.00%,盈亏额比例:inf,收益率:0.00%,年化收益率:0.00%,最大回撤:0.00%,年化夏普率:inf
WARNING – ———– Backtest finished, press [Ctrl + C] to exit. ———–

brucefrankwong 已回答的问题 2020年9月6日