日线均线金叉闪烁问题

使用日线MA金叉判断大趋势,决定当天是否做多做空,交叉信号闪烁导致K线图上有信号,实际并没有买。

    Numeric FastLength(18);// 短期指数平均线参数
    Numeric SlowLength(1);// 长期指数平均线参数

   Numeric Day1Length(1);// 1日指数平均线参数
    Numeric Day2Length(2);// 2日指数平均线参数

    Series<Numeric> AvgValue1; 
    Series<Numeric> AvgValue2;
    
    Series<Numeric> AvgDayValue1;
    Series<Numeric> AvgDayValue2;
    
    Global Numeric LastStepLots; 
    Global Numeric nowCurrentBar;


    Bool crossOverBol;
    Bool crossUnderBol;
    
    Global Bool crossOverDay(False);
    Global Bool crossUnderDay(False);
    Bool crossBol;
Events
OnInit()
    {
        LastStepLots = 3;
     }   
OnBar(ArrayRef<Integer> indexs)
{    
        AvgValue1 = AverageFC(Close,FastLength); // 获取近3个周期收盘价平均值
        AvgValue2 = AverageFC(Close,SlowLength); // 获取近8个周期收盘价平均值
        
        AvgDayValue1 = Data1.AverageFC(Data1.Close,Day1Length);// 获取1日线平均值
        AvgDayValue2 = Data1.AverageFC(Data1.Close,Day2Length);// 获取2日线平均值
        
        // 进场
        crossOverBol = CrossOver(AvgValue1[1],AvgValue2[1]);
        crossUnderBol = CrossUnder(AvgValue1[1],AvgValue2[1]);

        If(!crossOverDay){
            crossBol = CrossOver(AvgDayValue1[1],AvgDayValue2[1]);
            If(crossBol){
                If((crossUnderDay Or crossOverDay) And BarStatus==2){
                    crossUnderDay = False;
                    crossOverDay = False;
                }Else{
                    If(Data1.CurrentBar - nowCurrentBar == 1){
                        crossUnderDay = False;
                        crossOverDay = False;
                    }Else{
                        crossUnderDay = False;
                        crossOverDay = True;
                    }
                    nowCurrentBar = Data1.CurrentBar;
                }
            }
        }
            
        If(!crossUnderDay){
            crossBol = CrossUnder(AvgDayValue1[1],AvgDayValue2[1]);
            If(crossBol){
                If((crossUnderDay Or crossOverDay) And BarStatus==2){
                    crossUnderDay = False;
                    crossOverDay = False;
                }Else{
                    If(Data1.CurrentBar - nowCurrentBar == 1){
                        crossUnderDay = False;
                        crossOverDay = False;
                    }Else{
                        crossUnderDay = True;
                        crossOverDay = False;
                    }
                    nowCurrentBar = Data1.CurrentBar;
                }
            }
        }

        // 做多
        If(MarketPosition==0 And Lots != 0 And crossOverDay And crossOverBol){
            Buy(LastStepLots,Open);
            PlotString("多信号","做多"+Text(LastStepLots)+"手",Close,White);
        }
        
        // 做空
        If(MarketPosition==0 And Lots != 0 And crossUnderDay And crossUnderBol){
            SellShort(LastStepLots,Open);
            PlotString("空信号","做空"+Text(LastStepLots)+"手",Close,White);
        }
 }

想问下老师应该要怎么改才能避免日线金叉闪烁问题,另外应该怎么计算日线发生金叉时的具体价格是多少。

均线N天内发生过金叉或者死叉
bar里面均线金叉后立马在当前bar进行开仓操作如何避免信号闪烁问题
金叉
还有个问题想请教一下,一小时macd金叉和死叉闪烁
MACD金叉死叉
macd金叉和死叉
倒数2根K线MACD金叉写代码?
请教macd金叉死叉问题
请老师帮忙看看我这句代码能不能表示金叉并且金叉后的第一根K线为阳线
MACD金叉死叉的分别

插入同一商品两个,周期设置不同

你这个有多图层? 图层是怎么叠加的