双均线策略问题

双均线策略,调试正常,但是体现在复盘K线上,5、10均线明显失真,问题在哪,该怎么解决?

// 入场: 1、以5、10周期均线金叉为入场点,点位为逆解点值和开盘价的较大的点位;

//        2、如果前一根K线盘中死叉,但收盘未死叉,出现假死叉,则开盘补回仓位;

// 出场: 1、以近20周期最低点*0.998为止损;

//        2、如果死叉点小于等于开仓点位*1.002,需5、10周期均量线金叉,可平仓;

//        3、如果死叉点大于开仓点位*1.002,平仓;

//        4、如果出现前一根K线盘中金叉、收盘未金叉,开盘平仓。

双均线平仓问题
双均线策略
双均线参数优化
求助双均线止盈止损策略
双均线策略自动下单问题
使用帮助文档中的示例双均线交易策略报错
双均线系统设置止损报错
“把双均线策略改写成A函数报单”的意义是什么呢?
双均线交易5日破10线
双均线反手策略,怎么先平后开

你为什么要把作图放到这个分支下面?

移到外面去

应设置了多个入场和出场条件,具体到复盘的K线图上,如何区分触发的是哪个条件,用哪种语句?

commentart 或者plotstring

//------------------------------------------------------------------------
// 简称: Test333
// 入场: 1、以5、10周期均线金叉为入场点,点位为逆解点值和开盘价的较大的点位;
//        2、如果前一根K线盘中死叉,但收盘未死叉,出现假死叉,则开盘补回仓位;
// 出场: 1、以近20周期最低点*0.998为止损;
//        2、如果死叉点小于等于开仓点位*1.002,需5、10周期均量线金叉,可平仓;
//        3、如果死叉点大于开仓点位*1.002,平仓;
//        4、如果出现前一根K线盘中金叉、收盘未金叉,开盘平仓。

//------------------------------------------------------------------------//
  Params
    Numeric EFast(5);       //短均线周期参数
    Numeric ESlow(10);      //长均线周期参数
    Numeric StopLength(20); //止损统计周期数    
    Numeric PostionLots(1);//头寸 
    
Vars
    Series<Numeric> MAEFast;    //短均线
    Series<Numeric> MAESlow;    //长均线  
    Series<Numeric> MAVOLEFast; //短均量
    Series<Numeric> MAVOLESlow; //长均量  
    Series<Numeric> Opint1;     // 逆解交叉点值 
    Series<Numeric> AvgTR;                    
    Series<Numeric> ProtectStopPrice;  //保护性止损价
    Series<Numeric> TrailStopPrice;    //跟踪性止损价 
       
    Series<Numeric> MyEntryPrice;  // 开仓价格   
Events
    OnBar(ArrayRef<Integer> indexs)
    {
        MAEFast = Average(Close, EFast); //短均线
        MAESlow = Average(Close, ESlow); //长均线
        
        MAVOLEFast = Average(Vol,EFast); //短均量
        MAVOLESlow = Average(Vol,ESlow);//长均量
    
        Opint1 = ((ESlow - 1) * Average(Close[1], ESlow - 1) * EFast - (EFast - 1) * Average(Close[1], EFast - 1) * ESlow) / (ESlow - EFast);  //逆解交叉点值
        ProtectStopPrice = Lowest(Low[1],StopLength) * 0.998; 
        TrailStopPrice = Highest(High[1],StopLength) * 1.002;

        
        If(MarketPosition <> 1) 
        {
            If(MAEFast[1]<MAESlow[1] and High >= Opint1)  //金叉
            {
                Buy(PostionLots, Max(Open, Opint1));     //金叉开多单
                MyEntryPrice = Max(Open, Opint1);
            }
        
            If(Low[1] <= Opint1[1] And Close[1] >= Opint1[1] And High >= Opint1)       //过滤假死叉(考虑收盘价最低的情况)
            {
                Buy(PostionLots, Max(Open, Opint1));
                MyEntryPrice = Max(Open, Opint1);
            }
        }
            
       If(MarketPosition == 1 And BarsSinceEntry > 0)
        {
            If(Low <= ProtectStopPrice)
            {
                Sell(PostionLots,  ProtectStopPrice);                                 //止损
            }
        
            If(Low > ProtectStopPrice And MAEFast[1] > MAESlow[1] And Low < Opint1)    //死叉
            {
                If(Opint1 <= MyEntryPrice * 1.002 And MAVOLEFast > MAVOLESlow)
                {
                    Sell(PostionLots, Min(Open, Opint1));
                }
        
                If(Opint1 > MyEntryPrice * 1.002)
                {
                    Sell(PostionLots, Min(Open, Opint1));
                }
            }
        
            If(High[1] >= Opint1[1] And Close[1] <= Opint1[1] And Low < Opint1)     //过滤假金叉
            {
                Sell(PostionLots, Min(Open, opint1));
            }
        
            Range[0:DataSourceSize() - 1]
            {
                PlotNumeric("MAEFast", MAEFast);
                PlotNumeric("MAESlow", MAESlow);                
            }
        }
    } 
   
    
//------------------------------------------------------------------------
// 编译版本    2025/3/28 202727
// 版权所有    winter110
// 更改声明    TradeBlazer Software保留对TradeBlazer平台