源码发布的比较仓促,没测试完整,后来发现有些股票买入后遇到停牌,第二天想卖出却被过滤器过滤了,产生了异常,于是导致了回测中断的bug,我现在把它修改优化了一下。
这里直接把修改的地方发出来,就不浪费已经下载过的聚友的积分了。
就是这里替换成:
# 在每分钟的第一秒运行, data 是上一分钟的切片数据
def handle_data(context, data):
#-----------记录时间
global time_counter
time_counter += 1
#------------------处理卖出-------------------
for security in context.portfolio.positions:
#if(context.portfolio.positions[security].init_time == context.current_dt.date()):
# return
try:
if(time_counter>=230 and data[security].close< g.x1[security][0]):#尾盘未涨停
# 卖出
order_target(security, 0)
# 记录这次卖出
log.info("Selling %s" % (security))
except:
continue
#------------------------------------------
# 每天只买这么多个
if(len(g.today_bought_stocks) >= g.daily_buy_count):
return
#-----------------------买入------------------------
if (time_counter< 230 ):#冲天炮龙头
for security in g.longtou_stock:
if((security in context.portfolio.positions)==0):#排除重复买
# 得到当前资金余额
cash = context.portfolio.available_cash
# 计算今天还需要买入的股票数量
#need_count = g.daily_buy_count - len(g.today_bought_stocks)
#每笔买入现金1/2仓位
buy_cash = context.portfolio.available_cash / 2
# 买入这么多现金的股票
order_value(security, buy_cash)
# 放入今日已买股票的集合
g.today_bought_stocks.add(security)
# 记录这次买入
log.info("Buying %s" % (security))
#print(‘恭喜发财’)
#-------你们懂得----------
2020-08-23