空头开仓后,在第二个BAR会就出现止损处理,多头不会止损,请老师检查原因,并修改正常的代码

//下一个Bar开始前,重新执行当前bar最后一次,参数为当前bar的图层数组

OnBarClose(ArrayRef<Integer> indexs)

{

//多头入场

If(MarketPosition == 0)

{

If(MA60[1]<=MA20[1] And MA10[1]>MA20[1] And MA10>MA20 And MA20>MA60CDValue > 0.43*ATRVal)// And VolMA > VolumeFactor*VolMA[1])

{

myEntryPrice = Open;

myStopLossPrice = myEntryPrice - ATRVal*2;

Buy(Lots,Open);

}


}

//多头出场

       If(MarketPosition == 1 And BarsSinceEntry >= 1)

       {

            // 止损

           If(Close <= myStopLossPrice)

           {

               Sell(0,Open);

           }

           // 趋势反转出场      

           If(Close < MA20 )

           {

               Sell(0,Open);

              }

       }  

//空头入场

If(MarketPosition == 0)

{

If(MA60[1] >= MA20[1] And MA10[1] < MA20[1] And MA10 < MA20 And MA20 < MA60)

{

myEntryPrice = Open;

myStopLossPrice_S = myEntryPrice + ATRVal*2;

SellShort(Lots,Open);

}

}


//空头出场

       If(MarketPosition == -1 And BarsSinceEntry >= 1)

       {

           // 止损或止盈

           If(Close >= myStopLossPrice_S)

           {

            BuyToCover(0, Open);

            }

           // 趋势反转出场

           If(Close > MA205)

           {

               BuyToCover(0, Open);

           }

}

增加止盈止损后,原位置不开仓了
止盈止损代码编写
开仓K实时开仓,并同K实时止损
止损代码请教
开仓后,如何记录开仓价前一根棒的最低价作为止损
开仓可以 为什么后续的止盈、止损、和补仓 就不会执行了呢 是不是开关设置问题 请教老师指点
平仓止损
代码中止盈止损不起作用
请教如何分别计算两次开仓的分别止损
关于海龟加仓bar不止损问题

谢谢老师,问题已经解决

下面是详细的原代码,请帮我查一下。谢谢

//------------------------------------------------------------------------
// 简称: M85
// 名称: 5081
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
	    // MA参数
    Numeric FastMA(10);      // 快速EMA周期
    Numeric MediumMA(20);    // 中速EMA周期
    Numeric SlowMA(60);      // 慢速EMA周期

	// MACD参数  
    Numeric MACDFast(4);      // MACD快线周期
    Numeric MACDSlow(12);     // MACD慢线周期
    Numeric MACDSignal(4);    // MACD信号周期	

	// 动态ATR风控
    Numeric ATRPeriod(12);    
    Numeric EntryATRFactor(1.3);  // 入场ATR倍数
    Numeric StopLossATR(2);     // 止损ATR倍数
    Numeric TakeProfitATR(5);     // 止盈ATR倍数    
    
    // 成交量过滤
    Numeric VolumeLength(5);  // 成交量均线周期
    Numeric VolumeFactor(1.2); // 成交量放大阈值
    
    // 资金管理
    Numeric Lots(1);          // 开仓手数
    Numeric RiskPercent(1);   // 单笔风险百分比
    Numeric MaxLots(10);      // 最大手数限制
	
	Numeric millsecs(1000);
Vars
    // MA变量 
	Series<Numeric> MA10; 
	Series<Numeric> MA20;	
	Series<Numeric> MA60;
	
    //MACD变量
    Series<Numeric> MACDDiff; 
	Series<Numeric> AvgMACD;
	Series<Numeric> MACDValue;	

    // ATR变量
	Series<Numeric> ATRVal;  
	
	// 成交量均线
    Series<Numeric> VolMA; 
	
    // 开仓价格
    Numeric myEntryPrice;
    Numeric myStopLossPrice;  //止损
    Numeric myStopLossPrice_S;  //空头止损
    
    Numeric myTakeProfitPrice;	//止盈
	Bool UpTrend(False);   //多头
	Bool DnTrend(False);   //空头 	
	
	Numeric avg;
	Global Integer timerId;


Events
	//此处实现事件函数
	
	//在所有的数据源准备完成后调用,应用在数据源的设置等操作
	OnReady()
	{
		SetBackBarMaxCount(1+Max(Max(FastMA,MediumMA),SlowMA));

	}



	//在新bar的第一次执行之前调用一次,参数为新bar的图层数组
	OnBarOpen(ArrayRef<Integer> indexs)
	{
		

	}

	//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
	OnBar(ArrayRef<Integer> indexs)
	{
		Range[0:DataSourceSize() - 1]
		{   //均线计算 
			MA10 = AverageFC(Close,FastMA);
			MA20 = AverageFC(Close,MediumMA);
			MA60 = AverageFC(Close,SlowMA);	
			PlotNumeric("MA10",MA10);
			PlotNumeric("MA20",MA20);
			PlotNumeric("MA60",MA60);
			
			//MACD计算
			MACDDiff = XAverage( Close, MACDFast ) - XAverage( Close, MACDSlow ) ;	
			AvgMACD = XAverage(MACDDiff,MACDSignal);
			MACDValue = 2 * (MACDDiff - AvgMACD);			
			
			// 波动性与成交量
			ATRVal = AvgTrueRange(ATRPeriod);
			VolMA = Average(Vol, VolumeLength);
			
		}

		//多头止损
        If(MarketPosition == 1 And BarsSinceEntry >= 1)
        {
            If(Low <= myEntryPrice - ATRVal*StopLossATR)
            {
                Sell(0,Open);
            }

        } 				
				
		//空头止损
        If(MarketPosition == -1 And BarsSinceEntry >= 1)
        {
            If(High >= myEntryPrice + ATRVal*StopLossATR)
            {
                BuyToCover(0, Open);
            }

        } 	
	
	}

	//下一个Bar开始前,重新执行当前bar最后一次,参数为当前bar的图层数组
	OnBarClose(ArrayRef<Integer> indexs)
	{


		//空头入场
		If(MarketPosition == 0) 
		{
			If(MA60[1] >= MA20[1] And MA10[1] < MA20[1] And MA10 < MA20 And MA20 < MA60 And MACDValue < -0.43*ATRVal)
			{
				myEntryPrice = Open;
				SellShort(Lots,Open);
			}
			Else If(MA60[1] <= Close[1] And MA10[1] < MA20[1] And MA10 < MA20 And Close < MA60 And MACDValue < -0.43*ATRVal)
			{
				myEntryPrice = Open;
				SellShort(Lots,Open);
			}
			Else If(MA60[1] <= Close[1] And MA10[1] >= MA20[1] And MA10 < MA20 And Close < MA60 And MACDValue < -0.43*ATRVal)
			{
				myEntryPrice = Open;
				SellShort(Lots,Open);				
			}
			Else If(MA20[1] < MA60[1] And MA10[1] >= MA20[1] And MA10 < MA20 And MA20 < MA60 And MACDValue < -0.43*ATRVal)
			{
				myEntryPrice = Open;
				SellShort(Lots,Open);	
			}
		}		
		
								

		//空头出场
        If(MarketPosition == -1 And BarsSinceEntry >= 1)
        {

            If(Close > MA20 
                Or (Close > MA10 And Close[1] > MA10[1]))
               
            {
                BuyToCover(0, Open);
   
            }
        } 
 		//多头入场
		If(MarketPosition == 0) 
		{
			If(MA60[1]<=MA20[1] And MA10[1]>MA20[1] And MA10>MA20 And MA20>MA60 And MACDValue > 0.43*ATRVal)// And VolMA > VolumeFactor*VolMA[1])
			{
				myEntryPrice = Open;
				Buy(Lots,Open);
			}
			Else If(MA60[1]>=Close[1] And MA10[1]>MA20[1] And MA10>MA20 And Close>MA60 And MACDValue > 0.43*ATRVal)
			{
				myEntryPrice = Open;
				Buy(Lots,Open);
			}
			Else If(MA60[1]>=Close[1] And MA10[1]<=MA20[1] And MA10>MA20 And Close>MA60 And MACDValue > 0.43*ATRVal)
			{
				myEntryPrice = Open;
				Buy(Lots,Open);
			}
			Else If(MA20[1]>MA60[1] And MA10[1]<=MA20[1] And MA10>MA20 And MA20>MA60 And MACDValue > 0.43*ATRVal)
			{
				myEntryPrice = Open;
				Buy(Lots,Open);
			}
		}
		
 		//多头出场
        If(MarketPosition == 1 And BarsSinceEntry >= 1)
        {      	
            If(Close < MA20 
                Or (Close < MA10 And Close[1] < MA10[1])) 
             
            {
                Sell(0,Open);
            }
        }        
        				
	}



	


//------------------------------------------------------------------------
// 编译版本	2025/07/04 194828
// 版权所有	Billszhan9702
// 更改声明	TradeBlazer Software保留对TradeBlazer平台
//			每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------


果然是在你没给的代码里出问题。

53行这个变量应该这么定义

他交易几次?

弄个全局变量或者全局数组吧

你对全局变量真的有执念啊

代码不完整,无法运行,诊断不了。

代码诊断和代写问题看置顶帖的收费代写服务