代码写的手数和策略交易里面的信号手数不一致

如图所示,代码里面已经写明初始开仓手数是1手,后续加仓手数也是1手,但是把策略挂到自动交易时,策略给的初始仓位是3手,请问是什么原因?

Params
	Numeric avgLength(40);			// 三价均线参数
	Numeric atrLength(40);			// 真实波幅参数
	Numeric Factor_(1.2);			// 轨道系数
	Numeric Lots(1);				// 交易手数

Vars
	Series<Numeric> movAvgVal(0);		// 三价均线参数
	Series<Numeric> upBand(0);			// 通道上轨 
	Series<Numeric> upBand2(0);			// 通道上轨 2 
	Series<Numeric> dnBand(0);			// 通道下轨 
	Series<Numeric> dnBand2(0);			// 通道下轨 2
	Series<Numeric> liquidPoint(0);		// 出场条件

Events
	//此处实现事件函数

	//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
	OnInit()
	{
		//plt1.figure(0);
		//plt1.setOption("oADX_", "color", White);
		//plt1.setOption("line", "color", Yellow);
		//
		//plt2.figure(0);
		//plt2.setOption("MACD","color",RED);
        //plt2.setOption("macd","color",Green);


		Numeric Fund( 1000 ); 				// 初始资金: 万 
		Numeric Offset4Jump( 5 ); 			// 发单委托偏移 x 跳

		// 多图层订阅行情  
		// freq  String  订阅频率 'mon':月,'w':周,'d':日,'h':时,'m':分,'s':秒,'tick':tick,字符串前面可以添加数字,如'3d'表示周期是3天;
		// flag  Integer Enum_Data_OnlyNight()表示仅夜盘,Enum_Data_OnlyDay()表示仅日盘,Enum_Data_RolloverBackWard()表示后复权,可做或运算,表示多种情况
		// SubscribeBar(Data0.Symbol, "1h", Data0.BeginDateTime);  

		// 按样本数订阅
		// SubscribeBarCounts(Data0.Symbol, "1h", 1000);  

		//与数据源有关
		Range[ 0: DataCount - 1 ]
		{
			//=========数据源相关设置==============
			AddDataFlag( Enum_Data_RolloverBackWard() ); //设置后复权
			AddDataFlag( Enum_Data_RolloverRealPrice() ); //设置映射真实价格
			AddDataFlag( Enum_Data_AutoSwapPosition() ); //设置自动换仓
			AddDataFlag( Enum_Data_IgnoreSwapSignalCalc() ); /* //设置忽略换仓信号计算
				备注: Enum_Data_IgnoreSwapSignalCalc, 对于一个策略来说,换仓的这笔交易并不是策略规则产生的,
				所以将换仓前后的这两笔交易合并为一笔能更好的统计策略性能。合并之后,交易盈亏依旧是真实的,
				只不过换仓前后的这两笔交易算一笔交易,但是手续费会从测试报告中扣除。 
				忽略换仓时,换仓后的开仓市值为原始的开仓市值。开仓均价按照原始开仓市值计算得来。  */

			//AddDataFlag(Enum_Data_NotGenReport());  //设置数据源不参与生成报告标志			

			//=========交易相关设置============== 
			SetOrderPriceOffset( Offset4Jump ); //设置委托价为叫买/卖价偏移x跳      
			SetOrderMap2MainSymbol(); //设置委托映射到主力       
			SetSwapPosVolType( 2 ); // 换月时头寸:1=等市值,2=等持仓量  
		}

		//与数据源无关
		//SetBeginBarMaxCount(10);  //设置最大起始bar数为10      
		//SetBackBarMaxCount(10);  //设置最大回溯bar数为10

		//=========交易相关设置==============
		SetInitCapital( Fund * 10000 ); //设置初始资金      
	}

	OnBar(ArrayRef<Integer> indexs)
	{

		// 三价均线
		movAvgVal = Average((High + Low + Close)/3,avgLength);
		// 通道上轨
		upBand = movAvgVal + AvgTrueRange(atrLength)*Factor_;
		upBand2 = movAvgVal + AvgTrueRange(atrLength)*2; 
		// 通道下轨
		dnBand = movAvgVal - AvgTrueRange(atrLength)*Factor_;
		dnBand2 = movAvgVal - AvgTrueRange(atrLength)*2;
		// 出场条件
		liquidPoint = movAvgVal;

		Numeric MA4D = MA4Day(20);
		Numeric bse = 3;  // 入场控制

		Commentary("上下轨差 = " + Text(upBand - dnBand));

		// 画线
		PlotAuto("movAvgVal",movAvgVal,0,Magenta,-1,-1,Enum_2Pix);
		//PlotNumeric("upBand",upBand);
		//PlotNumeric("upBand2",upBand2); 
		//PlotNumeric("dnBand",dnBand);
		//PlotNumeric("dnBand2",dnBand2);
		PlotNumeric("MA4D",MA4D);

		// 三价均线向上,并且价格上破通道上轨,开多单
		If(MarketPosition == 0 And movAvgVal[1] > movAvgVal[2] And High >= upBand[1] && Open > MA4D) 
		{
			Buy(Lots, Max(Open,upBand[1]));
		}
		If(MarketPosition == 1 And BarsSinceEntry >= 1 And CurrentEntries == 1 && movAvgVal[1] > movAvgVal[2] And C[1] >= upBand2[1]) 
		{
			Buy(Lots, Open);
		}
		// 持有多单时,价格下破三价均线,平多单
		If(MarketPosition == 1 And BarsSinceEntry >= 1 And Low <= liquidPoint[1] && CurrentEntries == 1) 
		{
			Sell(0,Min(Open,liquidPoint[1]));
		}
		If(MarketPosition == 1 And BarsSinceEntry >= bse And Low <= dnBand2[1] && CurrentEntries == 2) 
		{
			Sell(0,Min(Open,dnBand2[1]));
		}

		// 三价均线向下,并且价格下破通道下轨,开空单
		If(MarketPosition == 0 And movAvgVal[1] < movAvgVal[2] And Low <= dnBand[1]&& Open < MA4D ) 
		{
			SellShort(Lots,Min(Open,dnBand[1]));
		}
		If(MarketPosition == -1 And BarsSinceEntry >= bse And CurrentEntries == 1 && movAvgVal[1] < movAvgVal[2] And C[1] <= dnBand2[1]) 
		{
			SellShort(Lots, Open);
		}
		// 持有空单时,价格上破三价均线,平空单
		If(MarketPosition == -1 And BarsSinceEntry >= 1 And High >= liquidPoint[1] && CurrentEntries == 1) 
		{
			BuyToCover(0,Max(Open,liquidPoint[1]));
		}
		If(MarketPosition == -1 And BarsSinceEntry >= 1 And High >= upBand2[1] && CurrentEntries == 2) 
		{
			BuyToCover(0,Max(Open,upBand2[1]));
		}

	}


分组指令模型手数在代码里怎么写
策略交易工作区显示手数和K线里面手数不一致
如何用ATR和实盘权益计算开仓手数
测试报告里交易手数,每手利润没有了?
模型策略开仓后的持仓手数
回测中建仓手数与公式中计算的开仓手数不一致
策略研究中,交易手数的问题
关于计算开仓手数问题
TBQ自动计算开仓手数的问题?
自动换月手数不一致问题

你能加仓为什么不能是3

有没有一种可能是因为历史上加了两次仓,连带着第一次开仓所以总共三手?

应该就是这个原因,带入了历史K线的仓位。我正在想办法解决,请问您能给点建议吗?非常感谢。

你可以打开辅助K线看看呢 ,在你开策略的时点,可能图表已经加了两次仓了呢

辅助K线我打卡看过,没有问题。