老师您好:
执行策略选股后,如果同一个股票,如在本周1,3,5都被选中,为什么执行回测交易,只在最后一次选中信号,周五才产生买入记录,代码如下,逻辑就是选中了就买入,想一直持有到sell条件卖出。
---------------------------------------------------------------------
Params
Numeric amount(1); //个股开仓市值
Numeric N(5);
Vars
Series<Bool> pickcond; //是否被选中
Numeric lot;
Series<Numeric> MA ;
Events
OnInit()
{
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("截面", "是");
}
}
}
麻烦老师帮看看指导下 谢谢
麻烦老师们帮看看~~~