4.64K 浏览
0

rb2005, 用DataDownloader下载的数据是有21:00:00的,但是回测的时候打印每个分钟k的datetime如下:

可以看到,是没有21:00:00这条k的(也就是日盘收盘)。我个人倾向于回测时少了一条数据。

=============================================

from datetime import date, datetime, timedelta
from contextlib import closing
from tqsdk import TqApi, TqSim, TqAccount, TqBacktest, TargetPosTask
import numpy as np
import pandas as pd
import math
import tqsdk
import time
 SYMBOL_A = "SHFE.rb2005"
 api = TqApi(TqSim(10000), backtest=TqBacktest(
    start_dt=datetime(2019, 12, 1, 8, 0, 0), end_dt=datetime(2020, 1, 11, 16, 0, 0)))
klines_a = api.get_kline_serial(SYMBOL_A, 60)
ticks_a = api.get_tick_serial(SYMBOL_A)
target_pos_a = TargetPosTask(api, SYMBOL_A)
  # 使用with closing机制确保回测完成后释放对应的资源
with closing(api):
     while True:
        api.wait_update()
        if api.is_changing(ticks_a):
            if api.is_changing(klines_a.iloc[-1], "datetime"):
                second_delta = klines_a['datetime'].iloc[-1]/1e9
                time_now = datetime.fromtimestamp(second_delta)
                print(time_now)

west 已回答的问题 2020年1月13日

同样的问题发生在9:00:00,10:30:00,13:30:00,21:00:00等时间

0

你好,请问能稳定重现吗,是否方便提供一下能重现回测这个问题的简短代码

lihan 发表新评论 2020年1月13日

已更新。发现还是同时订阅tick和分钟的缘故。我去掉tick的changing判断就正常了。

顺便说一下,换成DCE或者中金的品种,下面这个print根本不会触发,这个问题也请你们注意一下。

您正在查看2个答案中的1个,单击此处查看所有答案。