厉害!采用大概66%的资金,以降低回撤,年化也有35%。
把资金使用逻辑改成了总资金的1/15。
position_count = len(context.portfolio.positions)
target_num = min(len(set(target_list).union(set(context.portfolio.positions))), g.stock_num)
if target_num > position_count:
value = (target_num / g.stock_num) * context.portfolio.available_cash / (target_num - position_count)
** value = context.portfolio.total_value / 15**
for stock in target_list:
if stock not in context.portfolio.positions:
if open_position(stock, value):
if len(context.portfolio.positions) >= g.stock_num:
break

@jqz1226 if stock not in g.hold_list这里和下面的if (stock not in target_list)出现重复验证了,可以去掉一个的
for stock in target_list:
MA_N_Arr = h_ma[stock].values
MA_N_Arr = MA_N_Arr - MA_N_Arr[0] # 截距归零
slope = round(sm.OLS(MA_N_Arr, X).fit().params[0] * 100, 1)
remove_it = False
if slope < -2:
if stock not in g.hold_list:
print('{}下降趋势明显,切勿开仓'.format(stock))
remove_it = True
if not remove_it:
tmp_target_list.append(stock)
#
target_list = tmp_target_list
# 调仓
for stock in g.hold_list:
if (stock not in target_list) and (stock not in g.high_limit_list):
log.info("卖出[%s]" % stock)
position = context.portfolio.positions[stock]
close_position(position)
else:
log.info("已持有[%s]" % stock)