跨周期信号闪烁加开仓延迟

//------------------------------------------------------------------------

Params

   Numeric Length(20);  //计算高低点周期

   Numeric MaxLots(10); //最大连续浮亏开仓次数

   Numeric lots1(1);    //初始开仓手数

   Numeric lotsn(1);    //加仓手数

   String  strTmp("30m");  //订阅的K线周期

   


Vars    

   Series<Numeric> HH;

   Series<Numeric> LL;

   Series<Numeric> HH1;

   Series<Numeric> LL1;

   Series<Numeric> longEntryPrice1;

   Series<Numeric> shortEntryPrice1;

   Series<Numeric> jincha;

   Series<Numeric> sicha;

   Series<Numeric> shortProfit;

   Series<Numeric> longProfit;

   Series<Numeric> lots_sum;


Events

//此处实现事件函数

//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作

  OnInit()

{

     //=========跨周期数据计算==============

        {


        SubscribeBar(data0.Symbol,strTmp,data0.BeginDateTime);

        }

}


//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组

OnBar(ArrayRef<Integer> indexs)

{

If(CurrentDate > 20260131)

{

Return;

}

        Range[1:1]

{

HH = Highest(High,Length);

LL = Lowest(Low,Length);

HH1 = nthcon(HH>HH[1],1);

LL1 = nthcon(LL<LL[1],1);

If(HH1 < LL1)

{

 PlotAuto("趋势线",LL,LL,Red,Enum_Line,Enum_Solid);

 }

 Else

{

 PlotAuto("趋势线",HH,HH,Green,Enum_Line,Enum_Solid);

 }

If(CrossOver(LL1,HH1))

{

jincha=1;

sicha=0;

}

If(CrossUnder(LL1,HH1))

{

jincha=0;

sicha=1;

}

}

   Range[0:0]

{

//开仓交易

 If(CurrentBar == 1)

 {

          lots_sum = lots1;

  } Else

  {

  lots_sum = lots_sum;

  }

 If(MarketPosition == 0 )

{  

 

  If(data1.jincha[1]==0 and data1.jincha==1)

{

Buy(lots_sum,Close);

longEntryPrice1 = LastEntryPrice;

}Else If(data1.sicha[1]==0 and data1.sicha==1)    

{    

SellShort(lots_sum,Close);

shortEntryPrice1 = LastEntryPrice;

}

}


//平仓交易

If(MarketPosition > 0 And data1.sicha[1]==0 and data1.sicha==1 And BarsSinceEntry >= 1)

{   //平多单

Sell(0,Close);

longProfit = ExitPrice - longEntryPrice1;  

If((longProfit <= 0) And lots_sum < MaxLots)

{

lots_sum = lots_sum + lotsn;

}Else If (longProfit >0)

{

lots_sum = lots1;

}

}

Else If(MarketPosition < 0 And data1.jincha[1]==0 And data1.jincha==1 And BarsSinceEntry >= 1)

{   //平空单

BuyToCover(0,Close);

shortProfit = shortEntryPrice1 - ExitPrice;  

If((shortProfit <= 0) And lots_sum < MaxLots)

{

lots_sum = lots_sum + lotsn;

}Else If (shortProfit >0)

{

lots_sum = lots1;

}

}

      }

   }

跨周期策略加载时短周期K线的第一根BAR显示信号闪烁(无开仓信号),模拟盘跟踪时偶尔有实际反手时间晚于K线图信号时间点,请问这是什么原因导致的?

规避跨周期信号闪烁
请问老师关于跨周期信号闪烁问题
加仓信号闪烁问题
跨周期信号闪烁问题
跨周期数据造成信号闪烁的问题
信号闪烁造成重复开仓的问题反馈
多周期策略出现信号闪烁问题。
跨周期信号闪烁及行情驱动底层逻辑问题
跨图层信号闪烁问题,求助
求助跨周期,指标变化时出现信号闪烁

这个看代码挺难分析出结论的,一般需要往代码里加写日志的语句,然后分析出问题时的日志来找原因。

https://www.bilibili.com/video/BV16N411s7iA/?spm_id_from=333.999.0.0