策略选股回测IsAllPickCondition()函数逻辑

老师您好:执行策略选股后,如果同一个股票,如在本周1,3,5都被选中,为什么执行回测交易,只在最后一次选中信号,周五才产生买入记录,代码如下,逻辑就是选中了就买入,想一直持有到sell条件卖出。---------------------------------------------------------------------Params Numeric amount(1); //个股开仓市值 Numeric N(5);Vars Series<Bool> pickcond; //是否被选中 Numeric lot; Series<Numeric> MA ;EventsOnInit(){ SetInitCapital(amount*10000); }OnBar(ArrayRef<Integer> indexs){ Range[0:DataSourceSize() - 1] { MA = AverageFC(C,N); pickCond = IsAllPickCondition(); lot = amount*10000/C[1]; if (pickcond==True and MarketPosition==0) { buy(lot,O);} if(C<MA and MarketPosition==1) { sell(0,C);} }}

回复:老师,选股结果是正常的,目前发现问题的是选出股票后的回测功能。选股公式就是简单的按天截面,公式如下:Params // 无参数,每日自动选股 Vars Natural bool hasPick(false);Defs bool isNewDay() { return date != date[1]; // 判断是否为新交易日 }Events // Bar更新事件函数 OnBar(ArrayRef<Integer> indexs) { Range[0:DataCount-1] { if(isNewDay()) { hasPick = false; // 新交易日重置标记 } if(!hasPick) { hasPick = true; // 当日首次触发 SetPickCondition(); SetBarVar("截面", "是"); } } }

回复:麻烦老师帮看看指导下 谢谢

麻烦老师们帮看看~~~