为何下穿会有平仓

Params

Numeric FastLength(12); //MACD

Numeric SlowLength(26); //MACD

Numeric MACDLength(9);  //MACD

Numeric ATRLength(77); // 平均波动周期 ATR Length

Numeric fsLength(19); // 长周期 FailSafe Length

Numeric teLength(8); // 离市周期 Trailing Exit Length

Numeric ExitN(2.5);

Vars

Numeric MACDDiff;                      //MACD

Numeric AvgMACD;                       //MACD

Numeric MACDValue;                     //MACD

Numeric MinPoint; // 最小变动单位

Series<Numeric> AvgTR; // ATR

Numeric N; // N 值

Numeric TurtleUnits(100); // 交易手数

Series<Numeric> fsDonchianHi; // 唐奇安通道上轨,延后1个Bar,长周期

Series<Numeric> fsDonchianLo; // 唐奇安通道下轨,延后1个Bar,长周期

Numeric ExitHighestPrice; // 离市时判断需要的N周期最高价

Numeric ExitLowestPrice; // 离市时判断需要的N周期最低价

Numeric myEntryPrice; // 开仓价格

Numeric myExitPrice; // 平仓价格

Bool SendOrderThisBar(False); // 当前Bar有过交易

Series<Numeric> preEntryPrice(0); // 前一次开仓的价格

   Series<Bool>    upcross(False);


Events

OnBar(ArrayRef<Integer> indexs)

{

MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;

AvgMACD = XAverage(MACDDiff,MACDLength);

            if (CrossOver(MACDDiff,AvgMACD))

              {

               upcross=True;

              }Else if (CrossUnder(MACDDiff,AvgMACD))

                       {

                        upcross=FALSE;

                       }Else

                            {

                             upcross=upcross[1];

                   

                            }

If(BarStatus == 0)

{

preEntryPrice = InvalidNumeric;

//PreBreakoutFailure = false;

}

MinPoint = MinMove*PriceScale;

AvgTR = XAverage(TrueRange,ATRLength);

N = AvgTR[1];

fsDonchianHi = HighestFC(High[1],fsLength);

fsDonchianLo = LowestFC(Low[1],fsLength);

ExitLowestPrice = LowestFC(Low[1],teLength);

ExitHighestPrice = HighestFC(High[1],teLength);

Commentary(\"N=\"+Text(N));

Commentary(\"preEntryPrice=\"+Text(preEntryPrice));

//Commentary(\"PreBreakoutFailure=\"+IIFString(PreBreakoutFailure,\"True\",\"False\"));

// 当不使用过滤条件,或者使用过滤条件并且条件为PreBreakoutFailure为True进行后续操作

If(MarketPosition!=-1 )

         {                


              SellShort(100,Close);

  MyEntryPrice=Close;

  If(AlertEnabled )

                     {

                     Alert(\"报警信息...\");

                     }

Return;


          }


  //持仓处理

  If(MarketPosition == 1 )

   {if ( upcross==False ) // 跟踪止损退出

               {

               myExitPrice = close;

//myExitPrice = IIF(myExitPrice > Open, Open,myExitPrice); // 大跳空的时候用开盘价代替

Sell(0,myExitPrice);    // 数量用0的情况下将全部平仓

               }  

    } Else If(MarketPosition == -1)

        {if ( upcross==True ) // 跟踪止损退出

              myExitPrice = close;

//myExitPrice = IIF(myExitPrice < Open, Open,myExitPrice); // 大跳空的时候用开盘价代替

BuyToCover(0,myExitPrice);    // 数量用0的情况下将全部平仓

       }


}

为何下穿会有平仓??下穿upcross==false,不满足条件,不应该执行,错在哪?

cross上穿对应的下穿是?
为何会有加仓?
请问指标公式中的之字转向(ZigZag)在波峰波谷之间为何会有取值?
上穿问题
期货品种没有夜盘,为何夜盘时会有当日盈亏?
关于均线上穿次数
为什么平仓会有信号闪烁
CrossOver 和CrossUnder 在t根bar和t+1根bar上穿和下穿同时出现时无法识别的问题
同一个期货合约进行化自动交易时,为何回测时不会有冲突,而在实盘交易时有可能产生冲突?
统计k线上穿均线的次数

data-href=

你如果要用uprcoss来控制,那你这个if控制的范围不对,必须把下面的buytocover用大括号括起来

建议先把基础语法学明白

data-href=

你这个平仓条件不是只要当前仓位是空仓立即平仓么?那开空仓后第二根bar很明显满足条件所以就平仓了啊?