321 views
0

复盘中,quote在更新,但是日内交易中里面quote.open, quote.pre_close等关键字没有更新,永远都是前一交易日的。tick serial经常不更新, kline serial完全没有更新,永远是前一交易日的kline。同样代码,在实盘中,更新都是对的。复盘功能等于废掉了么?

Answered question
0

quote.open 和 quote.pre_close 在一个交易日内是不变的,你这边能有复现的代码么?然后tqsdk版本是多少呢?

Posted new comment

from tqsdk import TqApi, TqAuth, TqReplay
from datetime import date, datetime
from tqsdk.tafunc import time_to_s_timestamp, time_to_datetime

replay = TqReplay(date(2020, 12, 21))
api = TqApi(backtest=replay, auth=TqAuth(‘信易账户’, ‘账户密码’), web_gui=True, debug=False)
symbol = ‘CFFEX.T2103’
quote = api.get_quote(symbol)
ticks = api.get_tick_serial(symbol, data_length=100)
kline5m = api.get_kline_serial(symbol, 5*60, data_length=200)
last_time = time_to_s_timestamp(datetime(year=2020, month=12, day=21, hour=9, minute=30, second=0))

while True:
api.wait_update()
if api.is_changing(quote):
if time_to_s_timestamp(quote.datetime) > last_time + 300: # 每隔5分钟以上运行一次
print(‘——————————————————–‘)
print(quote)
print(‘ticks.iloc[-1].datetime=’, time_to_datetime(ticks.iloc[-1].datetime))
print(‘ticks.iloc[-1].last_price=’, ticks.iloc[-1].last_price)
print(‘kline5m.iloc[-1].datetime=’, time_to_datetime(kline5m.iloc[-1].datetime))
print(kline5m.iloc[-1])
last_time = time_to_s_timestamp(quote.datetime)

代码如上,接口是2.2.2,最新的。运行后,输出的结果中,明显quote每5分钟更新,而kline5m压根不更新,一直是昨天的最后一根kline。