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

老师您好:

执行策略选股后,如果同一个股票,如在本周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("截面", "是");

           }

       }

   }

麻烦老师帮看看指导下 谢谢

麻烦老师们帮看看~~~