大神帮我看下程序出现更多信号的问题

我做的一个程序,请大神帮我看下:

设当前K线(开盘价+收盘价)/2的值为K1,前一根K线(开盘价+收盘价)/2的值为K2,再前一根K线(开盘价+收盘价)/2的值为K3。

如果(K2-K3)大于0,且K2为阳线:如果当前无持仓,则做多一手;如果持有空单,先平仓再做多一手;如果持有多单,则不操作。

如果(K2-K3)小于0,且K2为阴线:如果当前无持仓,则做空一手;如果持有多单,先平仓再做空一手;如果持有空单,则不操作。

Vars

   Numeric K2;

   Numeric K3;

   Numeric diff;

   Numeric signalExecuted;  // 用Numeric代替Boolean

Events

   OnBar(ArrayRef<Integer> indexs)

   {

       // 重置信号执行状态(每根K线开始时重置)

       signalExecuted = 0;

       

       // 确保至少有3根K线

       If (CurrentBar < 2) Return;

       // 计算K2(前一根K线中点)和K3(前两根K线中点)

       K2 = (Open[1] + Close[1]) / 2;

       K3 = (Open[2] + Close[2]) / 2;

       diff = K2 - K3;

       

       // 多头信号:K2-K3 > 0 且 K2为阳线

       If (diff > 0 && Close[1] > Open[1])

       {

           // 如果已执行过信号,跳过(避免重复触发)

           If (signalExecuted == 1) Return;

           

           // 1. 先平空(如果持有空单)

           If (MarketPosition == -1)

           {

               SellShort(0, Close);  // 平空

               signalExecuted = 1; // 标记已执行

           }

           

           // 2. 再开多(如果未持有多单)

           If (MarketPosition != 1)

           {

               Buy(1, Close);        // 开多

               signalExecuted = 1; // 标记已执行

           }

       }

       // 空头信号:K2-K3 < 0 且 K2为阴线

       Else If (diff < 0 && Close[1] < Open[1])

       {

           // 如果已执行过信号,跳过

           If (signalExecuted == 1) Return;

           

           // 1. 先平多(如果持有多单)

           If (MarketPosition == 1)

           {

               Sell(0, Close);       // 平多

               signalExecuted = 1; // 标记已执行

           }

           

           // 2. 再开空(如果未持空单)

           If (MarketPosition != -1)

           {

               SellShort(1, Close);  // 开空

               signalExecuted = 1; // 标记已执行

           }

       }

}

问题是:有的地方出现了四笔交易,根据设计,应该每个信号两笔交易。请大神帮我看下问题出在哪儿,谢谢!!

路过的大神帮忙看下,求教了
帮我看下这段代码
回测无信号闪烁,实盘中出现信号问题。
策略单元中使用跨周期程序,出现的问题。
多周期策略出现信号闪烁问题。
请教:TB自带的海归系统出现信号闪烁的问题
请教定时开平仓出现信号闪烁的问题
关于当天出现两信号问题
更多模拟账户
信号消失的问题

如果反手会出两个信号的,一个信号是平,另一个信号是开

你这个模型问题很大。图表机制,开仓bar不可以平仓的