583 浏览
0

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日

而且我修改了几次,把回测时间改到非常临近当前时间。他逐条报错时,大部分合约代码在当前时间和回测开始时间(行情所在时间)都是未下市的。

0

应该不会跟着回测的时间走的,是跟着现在的时间来的,这个本来是给实盘用的函数

hentory 发表新评论 2024年3月14日

可是即使合约在两个时间都在市,仍然会有报错超时。难道回测行情生成必须要有成交量吗?

我看了下源码,里面用到个_get_current_datetime() 函数,它区分是否在回测模式下。那按说就应该是按回测所在时间获取的呀。所以这个bug有点莫名奇妙,老是获取行情超时,我把模拟盘的持仓填入合约列表去获取就正常。用query_quotes就获取不到,真搞不懂是为啥了?