问答交流

回测框架里面的买入操作有部分股票未买入

由bqecjrmk创建,最终由bqecjrmk 被浏览 17 用户

代码如下:

def m_handle_data_bigquant_run(context, data):

# 每5个交易日调仓一次

if context.trading_day_index % context.holding_days != 0:

return

# 获取当前日期

current_date = data.current_dt.strftime("%Y-%m-%d")

print(f'日期:{current_date}')

# 获取当日数据

current_day_data = context.data[context.data["date"] == current_date]

#检测股票数量是否过少

if len(current_day_data)<20:

print(f'备选股票少于20支,日期{current_date}')

# 取前10只

current_day_data = current_day_data.iloc[context.cut_size:context.target_hold_count+context.cut_size]

# 获取当日目标持有股票

target_hold_instruments = set(current_day_data["instrument"])

print(f'目标股票:{target_hold_instruments}')

# 获取当前已持有股票

current_hold_instruments = set(context.get_account_positions().keys())

print(f'持仓股票:{current_hold_instruments}')

# 获取要卖的股票

sell_set = current_hold_instruments - target_hold_instruments

# 获取要买的股票

buy_set  = target_hold_instruments - current_hold_instruments

print(f'buy_set:{buy_set}')

print(f'sell_set:{sell_set}\n')

# 卖出不在目标持有列表中的股票

for instrument in sell_set:

context.order_target_percent(instrument, 0)

# 买入目标持有列表中的股票

for instrument in buy_set:

context.order_target_percent(instrument, context.target_percent_per_instrument)


问题如下:

上一轮的buy_set 里面有002336,那么下一周期的持仓股票里面应该就有002336,实际却没有

评论
  • 代码已经分享
  • 有很多原因。比如你设置了成交率限制,比如当天股票停牌,或者买入时是一字涨停卖出是一字跌停,你这样分享代码,我们不好排查,建议发下链接。
{link}