图形与编码逻辑不符

2025.7.25 9:40和2025.7.25 13:35分出现平仓,与代码96-99行的逻辑不符,什么原因,该怎么调整。设置的是小于开仓价格*0.998时,方可金叉平仓,图形显示显然不是。

程序的回测发单与账户的实际发单不符
今天帐户赢利与图形赢利差额巨大如何解决?
计算出来的值完全不符合逻辑
图形Hide后无法用show恢复图形?
请问委托价格与成交价格之间的逻辑
bool函数逻辑与不正确,求解惑
各个交易所的编码
A_GetPositon为何与实际值不符
关于icon图形的问题
A_GetPosition函数调用时的参数数目与声明时不符合(太多的调用参数)


               If(Opint1 < MyEntryPrice * 0.998)

               {
                    Commentary("MyEntryPrice="+text(MyEntryPrice));
                   Commentary("Opint1="+text(Opint1));
                   Buytocover(PostionLots, Max(Open, Opint1));

                   PlotString("pk1","pk1",High,Blue);

               }

随便帮你输出了一下,

平仓点位为啥不是1220而是1232啊,设置的是opint1平仓啊

max


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

// 简称: S_DualMoveing

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

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

//        3、如果前一根K线均线空头排列,当根K线成交量大于5周期均量,且价格向下突破前一根K线10周期均线价格时,盘中开仓。

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

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

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

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

//        5、如果前一根K线均线多头排列,当根K线成交量大于5周期均量,且价格向上突破前一根K线10周期均线价格时,盘中平仓。

// 该模型适用于60分钟以下级别。

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

 Params

   Numeric EFast(5);       //短均线周期参数

   Numeric ESlow(10);      //长均线周期参数

   Numeric StopLength(10); //止损统计周期数    

   Numeric PostionLots(1);//头寸    

Vars

   Series<Numeric> MAEFast;    //短均线

   Series<Numeric> MAESlow;    //长均线  

   Series<Numeric> MAVOLEFast; //短均量

   Series<Numeric> MAVOLESlow; //长均量  

   Series<Numeric> Opint1;     // 逆解交叉点值

   Series<Numeric> AvgTR;

   Series<Numeric> PreProtectStopPrice;  //保护性止损价初值

   Series<Numeric> ProtectStopPrice;  //保护性止损价

   Series<Numeric> PreTrailStopPrice;    //跟踪性止损价初值

   Series<Numeric> TrailStopPrice;    //跟踪性止损价

   Series<Numeric> PreMyEntryPrice;  // 开仓价格初赋值

   Series<Numeric> MyEntryPrice;  // 开仓价格

   Series<Bool> IsPriceLimit;  //涨跌停判断,保证涨跌停板不作操作    

Events

   OnInit()

   {

       Range[0:DataCount - 1]

       {

           AddDataFlag(Enum_Data_RolloverBackWard());   //设置后复权

           AddDataFlag(Enum_Data_RolloverRealPrice());  //真实价格

           AddDataFlag(Enum_Data_AutoSwapPosition());  //自动换仓

           AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());  //忽略换仓信号计算

       }

   }

   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);  //逆解交叉点值

       PreProtectStopPrice = Highest(High[1],StopLength)+MinMove*PriceScale;

       TrailStopPrice = Highest(High[1],StopLength) * 1.002;

       PreMyEntryPrice = Min(Open,opint1);

       

       IsPriceLimit = (High[1] == Low[1]) Or (High[2] == Low[2]);

       

       Range[0:DataSourceSize() - 1]

       {

           PlotNumeric("MAEFast", MAEFast);

           PlotNumeric("MAESlow", MAESlow);                

       }        

       

       If(MarketPosition <> -1 and MAEFast[1]>MAESlow[1] and Low <= Opint1 And !IsPriceLimit)  //死叉

       {

           SellShort(PostionLots, Min(Open, Opint1));     //死叉开空单

           ProtectStopPrice = PreProtectStopPrice;

           MyEntryPrice = PreMyEntryPrice;

       }

       

       If(MarketPosition <> -1 And High[1] >= Opint1[1] And Close[1] <= Opint1[1] And Low <= Opint1 And !IsPriceLimit)       //过滤假金叉(考虑收盘价最低的情况)

       {

           SellShort(PostionLots, Min(Open, Opint1));

           ProtectStopPrice = PreProtectStopPrice;

           MyEntryPrice = PreMyEntryPrice;

           PlotString("L2","L2",High,Red);

       }

           

      If(MarketPosition == -1 And BarsSinceEntry > 0 And !IsPriceLimit)

       {

           If(High >= ProtectStopPrice)

           {

              BuyToCover(PostionLots,  ProtectStopPrice);                                 //止损

              PlotString("损","损",High,Red);

           }

               

           If(High < ProtectStopPrice And MAEFast[1] <= MAESlow[1] And High > Opint1)    //金叉

           {

               If(Opint1 >= MyEntryPrice * 0.998 And Vol > 2*MAVOLEFast)

               {

                   Buytocover(PostionLots, Max(Open, Opint1));

                   PlotString("x","x",High,Blue);

               }

       

               If(Opint1 < MyEntryPrice * 0.998)

               {

                   Buytocover(PostionLots, Max(Open, Opint1));

                   PlotString("pk1","pk1",High,Blue);

               }

           }

       

           If(Opint1 < MyEntryPrice * 0.998 and Low[1] <= Opint1[1] And Close[1] > Opint1[1] And High >= Opint1 And MAVOLEFast > MAVOLESlow)     //过滤假死叉

           {

               Buytocover(PostionLots, Max(Open, opint1));

           }      

           

       }

   }

 

   

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

// 编译版本    2025/3/28 202727

// 版权所有    winter110

// 更改声明    TradeBlazer Software保留对TradeBlazer平台