query_quotes里未下市的判断采用的时间是行情推进所在的时间还是当前时间呢?
代码如下(其中pool=50)
symbols = boing_knife.query_quotes(ins_class='FUTURE', expired=False, has_night = None) from re import search for b in bans: ban_list=[sy for sy in symbols if search(b, sy)] for sy in ban_list: symbols.remove(sy) from random import sample symbols = sample(symbols,pool) try: boing_knife.get_quote_list(symbols=symbols) except Exception as error: print('ERROR: ', error) quotes = {} futures = {} longs = {} shorts = {} print('\n初始化完毕')
这是初始化代码,get_quote_list会报获取行情超时。
使用获取的get_quote逐个获取也会报超时
for sy in symbols: if not sy in quotes.keys(): try: quotes[sy] = boing_knife.get_quote(symbol=sy) now_f = int(1_000_000_000*datetime.strptime(quotes[sy].datetime.split('.')[0], '%Y-%m-%d %H:%M:%S').timestamp()) except Exception as error: print('ERROR: ', error) continue
李思恒 已回答的问题 2024年3月14日
应该不会跟着回测的时间走的,是跟着现在的时间来的,这个本来是给实盘用的函数
hentory 发表新评论 2024年3月14日
可是即使合约在两个时间都在市,仍然会有报错超时。难道回测行情生成必须要有成交量吗?
我看了下源码,里面用到个_get_current_datetime() 函数,它区分是否在回测模式下。那按说就应该是按回测所在时间获取的呀。所以这个bug有点莫名奇妙,老是获取行情超时,我把模拟盘的持仓填入合约列表去获取就正常。用query_quotes就获取不到,真搞不懂是为啥了?
而且我修改了几次,把回测时间改到非常临近当前时间。他逐条报错时,大部分合约代码在当前时间和回测开始时间(行情所在时间)都是未下市的。