关于异常开仓问题

If(MarketPosition == 0 && CrossOver(Close[1],MyentryPrice))

{

Buy(Lots,Open);

Commentary("再次上穿基准价");

}

老师蓝色线即为基准价  这里为什么会触发上穿开仓呢

关于引用大周期之后开仓异常
记录开仓价格的函数有异常
关于开仓价格问题(buy Open\close\High\Low)
关于限制当日开仓次数
登录异常
数据中心异常
关于开仓策略与平仓策略对接
关于不写价格的开仓
委托异常问题
关于自动计算开仓手数

发完整代码,不要让人猜内容

我猜像是开了自动换月

Params
	//此处添加参数
	Numeric Fund(10000);
	Numeric Length(20);		//周期		
	Numeric Offset(2);		//标准差倍数  
	Numeric RsiLength(14) ; //周期
	Numeric OverSold(30) ; //超卖
	Numeric OverBought(70) ; //超买
	Numeric SlowLength(3);	
	Numeric SmoothLength(3);
Vars
	//此处添加变量
	Numeric Lots;
	Plot  plt1;
    Plot  plt2;
    Global Array<String> iconDatas;  //字符串集
    Global Integer id(0);
	
	Series<Numeric> ATR;
	Series<Numeric> UpLine;		//上轨
	Series<Numeric> DownLine;		//下轨 
	Series<Numeric> MidLine;	//中间线
	Numeric Band;
	
	Series<Numeric> HighestValue;				
	Series<Numeric> LowestValue;		
	Series<Numeric> KValue;
	Numeric SumHLValue;
	Numeric SumCLValue;
	Series<Numeric> DValue;
	
	Series<Numeric> NetChgAvg( 0 );
	Series<Numeric> TotChgAvg( 0 );
	Numeric SF( 0 );
	Numeric Change( 0 );	
	Numeric ChgRatio( 0 ) ;
	Series<Numeric> RSIValue;
	
	Bool Cond1;
	Bool Cond2;
	Bool Cond3;
	Bool Cond4;
	Bool Cond5;
	Series<Numeric> MyentryPrice;//基准价
	Series<Numeric> flag(0);
	Series<Numeric> flag1(0);
	Series<Numeric> CCond(0);
	Series<Numeric> XzOne(0);
Defs
	//此处添加公式函数
	
Events
	//此处实现事件函数
	
	OnInit()
	{
		id = SubscribeBar(ContinuousSymbol(), "1w", BeginDateTime,0,Enum_Data_RolloverBackWard);//订阅行情数据
		//SetBasePeriod("1w");
		//与数据源有关
		Range[0:DataCount-1]
		{
			//=========数据源相关设置==============
			AddDataFlag(Enum_Data_RolloverBackWard());	//设置后复权 
 			AddDataFlag(Enum_Data_RolloverRealPrice());	//设置映射真实价格
			AddDataFlag(Enum_Data_AutoSwapPosition());	//设置自动换仓
			AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());	//设置忽略换仓信号计算
			AddDataFlag(Enum_Data_FullPeriod );	//设置K线分割为有效交易时段  Enum_Data_FullPeriod Enum_Data_ActivePeriod
			SetOrderMap2MainSymbol();	//设置委托映射到主力
			SetSlippage(Enum_Rate_PointPerHand,1);	//设置滑点为2跳/手
			SetOrderPriceOffset(1);	//设置委托价为叫买/卖价偏移2跳
			SetSwapPosVolType(2); //设置自动换仓量类型
			//SetTradeSide(1);//设置双向持仓交易方向
		}
		//与数据源无关
		//=========交易相关设置==============
		SetInitCapital(1000000);	//设置初始资金为100万
		
	}


	//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
	OnBar(ArrayRef<Integer> indexs)
	{
		Range[1:1]
		{
		ATR = AvgTrueRange(RsiLength);
		//BOLL通道
		MidLine = AverageFC(Close,Length);
		Band = StandardDev(Close,Length,2); 
		UpLine = MidLine + Offset * Band;
		DownLine = MidLine - Offset * Band; 
		Commentary("MidLine:"+Text(MidLine));
		Commentary("UpLine:"+Text(UpLine));
		Commentary("DownLine:"+Text(DownLine));
		//RSI
		If(CurrentBar <= RsiLength - 1)
			{
				NetChgAvg = ( Close - Close[RsiLength] ) / RsiLength ;
				TotChgAvg = Average( Abs( Close - Close[1] ), RsiLength ) ;
			}Else
			{
				SF = 1/RsiLength;
				Change = Close - Close[1] ;
				NetChgAvg = NetChgAvg[1] + SF * ( Change - NetChgAvg[1] ) ;
				TotChgAvg = TotChgAvg[1] + SF * ( Abs( Change ) - TotChgAvg[1] ) ;	
			}
			If( TotChgAvg <> 0 )
			{
				ChgRatio = NetChgAvg / TotChgAvg;
			}else
			{
				ChgRatio = 0 ;
			}	
			RSIValue = 50 * ( ChgRatio + 1 );
			Commentary("RSI:"+Text(RSIValue));
			//KD
			HighestValue = HighestFC(High, RsiLength);
			LowestValue = LowestFC(Low, RsiLength); 
			SumHLValue = SummationFC(HighestValue-LowestValue,SlowLength);
			SumCLValue = SummationFC(Close - LowestValue,SlowLength);
			If(SumHLValue <> 0)
			{
				KValue = SumCLValue/SumHLValue*100;
			}Else
			{
				KValue = 0;
			}
			DValue = AverageFC(KValue,SmoothLength);	
			Commentary("KValue:"+Text(KValue));
			Commentary("DValue:"+Text(DValue));
			
			
			PlotNumeric("UpLine",UpLine);
			PlotNumeric("MidLine",MidLine);
			PlotNumeric("DownLine",DownLine);
			
			Cond1=CrossOver(Close[1],DownLine[1]);
			Cond2=CrossOver(RSIValue[1],OverSold);
			Cond3=Close[1]>Open[1];
			Cond4=CrossOver(KValue[1],DValue[1]);
			If(CurrentBar>=MaxBarsBack)CCond=1;
			If(CCond==1 && Cond1 && Cond2)XzOne=1;
			
			If(Data1.cond1 && Data1.cond2)plt1.icon("icon1",Low-50,"xiangshang");
			If(Data1.Cond1&&Data1.RSIValue<OverSold&&Data1.cond3)plt1.icon("icon1",Low-50,"xiangshang");
			//If(Data1.Cond2)plt1.icon("icon2",Low-50,"yuanquan");
			/*
			If(Data1.Cond4&&Data1.KValue<20&&Data1.DValue<20)flag1=1;
			If(Data1.KValue>20&&Data1.DValue>20)flag1=0;
			Commentary("flag1:"+Text(flag1));
			If(flag1==1&&Data1.CrossOver(Data1.KValue,20))plt1.icon("icon1",Low-40,"yuanquan");
			If((Data1.cond1 && Data1.cond2)||(Data1.Cond1&&Data1.RSIValue<OverSold&&Data1.cond3))flag=1;
			If(Data1.RSIValue>40)flag=0;
			If(flag==1&&Data1.Cond2)plt1.icon("icon1",Low-50,"xiangshang");//*/
			//If(Data0.MarketPosition!=0 && CCond==1 && Cond1 && Cond2) XzOne=0;
		}
		Range[0:0]
		{	
			If(Data1.CurrentBar>=Data1.MaxBarsBack)
			{
			Commentary("UpLine:"+Text(Data1.UpLine));
			Commentary("MidLine:"+Text(Data1.MidLine));
			Commentary("DownLine:"+Text(Data1.DownLine));
			Commentary("RSIValue:"+Text(Data1.RSIValue));
			Commentary("KValue:"+Text(Data1.KValue));
			Commentary("DValue:"+Text(Data1.DValue));
			}
			PlotNumeric("基準價:",MyentryPrice);
			//开仓计算
			Lots=Max(1, IntPart(Fund/(Open*ContractUnit*BigPointValue*MarginRatio)));//标准按照保证金计算开仓手数
			Commentary("基准价:"+Text(MyentryPrice));
			Commentary("XzOne:"+Text(Data1.XzOne));
			
			If(MarketPosition==0 && Data1.CCond==1 && Data1.Cond1 && Data1.Cond2 && Data1.XzOne==1)
			{
				Buy(Lots,Open);
				MyentryPrice = EntryPrice;
				Data1.XzOne=0;
				Commentary("满足条件支撑位+RSI上穿");
			}
			If(MarketPosition != 0 && Close[1]<MyentryPrice*(1-0.01)&&MyentryPrice==MyentryPrice[1])
			{
				Sell(0,Open);//1%止损
				Commentary("当前位置1%止损");
			}
			If(MarketPosition == 0 && CrossOver(Close[1],MyentryPrice))
			{
				Buy(Lots,Open);
				Commentary("再次上穿基准价");
			}
			//达到固定止盈比例
			If(MarketPosition != 0 && Close[1]>MyentryPrice+Data1.ATR[1]*7)
			{
				Sell(0,Open);
				Commentary("止盈出场");
			}
		}
	}

老师 图中问题点为 15min周期 pta连续合约2021/2/24日   还有另一个问题  请问如何限定Commentary("满足条件支撑位+RSI上穿");这个代码在止损后同一周只运行一次