1.04K 浏览
0

在做一个期权策略时,当处于回测模式下,买一卖一量一直都是1,但是非回测模式下,实时打印的买一卖一量又是正常的.

策略结构大致是这样的:

api = TqApi(acc,backtest=TqBacktest(start_dt=date(2022,7,2),end_dt=date(2022,7,31),),auth=TqAuth('账号', '密码'))
#第一步
#通过get_kline_serial获取标的指数前日日期及收盘价
klines = api.get_kline_serial(index_code, 86400)
date = klines['datetime'].tolist()[-1]/1e9
pre_close = klines['close'].tolist()[-1]
#第二步
#通过前日日期与收盘价获取对应price_level的看涨看跌期权代码
exercise_year, exercise_month = get_strike_date(date)
co_code = api.query_atm_options(index_code, pre_close, -price_level, "CALL", exercise_year=exercise_year,
                                exercise_month=exercise_month)
co_code = co_code[0]
po_code = api.query_atm_options(index_code, pre_close, price_level, "PUT", exercise_year=exercise_year,
                                exercise_month=exercise_month)
po_code = po_code[0]
#第三步
#根据代码获取行情数据
quote_co = api.get_quote(co_code)
quote_po = api.get_quote(po_code)
while True:
    api.wait_update()
    #根据即时行情获取当前日期
    curren_date=pd.to_datetime(quote_fu['datetime']).timestamp()
    if curren_date相对于前一时间戳跨日:
        重新调用第一、二、三步,对代码进行切换并重新获取行情数据
    print(quote_po)
    print(quote_co)
    trade(co_code, po_code, quote_po,quote_co,quote_fu)
最终打印出来的看跌、看涨期权行情数据中的ask_volume1、bid_volume1一直都是1(下图中对应的期权代码是IO2207-P-4500、IO2207-C-4500)
<img src="https://www.shinnytech.com/wp-content/uploads/anspress-temp/3e54b15dc16aea8d6e966d072692d5201a985b23_4879.png" />
但如果不是回测模式,捕获的实时打印数据又是正常的(下图中对应的期权代码是IO2209-P-4150、IO2209-C-4150)
<img src="https://www.shinnytech.com/wp-content/uploads/anspress-temp/6f6796bae2a2b188cf1defae872ec7cbd5875770_4879.png" />
李思恒 已回答的问题 2022年8月29日
0

回测的行情推进和实盘行情不一样的,具体可以看下这个。https://doc.shinnytech.com/tqsdk/latest/reference/tqsdk.backtest.html?highlight=%E5%9B%9E%E6%B5%8B

李思恒 已回答的问题 2022年8月29日
您正在查看1个答案中的1个,单击此处查看所有答案。