用 XAverage、Average 在OnBarClose、OnBar里写均线代码的一些疑问

分别用 XAverage、Average在OnBarClose、OnBar里写均线代码,加载在合成橡胶br000 后复权1分钟图表上。

用XAverage时,无论是OnBarClose、OnBar里写的,第一根K线就已经开始计算均线值(K线并没有满足5根、15根或30根),计算的依据是什么?

而如果用Average写的话,OnBar里,也是从第一根K线就开始计算,但在OnBarClose里,第29根的时候计算,没到30根K线。

为什么会出现这样的情况,有没有朋友指点一下。

Params
	Numeric Length1(5);
	Numeric Length2(15);
	Numeric Length3(30);
		
Vars
	Numeric Ma1;
	Numeric Ma2;
	Numeric Ma3;
	Numeric Ma1_1;
	Numeric Ma2_1;
	Numeric Ma3_1;	

Events

	OnInit()
	{
		//与数据源有关
		Range[0:DataCount-1]
		{
			//=========数据源相关设置==============
			AddDataFlag(Enum_Data_RolloverBackWard());	//设置后复权

			AddDataFlag(Enum_Data_RolloverRealPrice());	//设置映射真实价格

			AddDataFlag(Enum_Data_AutoSwapPosition());	//设置自动换仓

			AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());	//设置忽略换仓信号计算
			
			AddDataFlag(Enum_Data_NotGenReport());	//设置数据源不参与生成报告标志			
		}
	}

	//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
	OnBar(ArrayRef<Integer> indexs)
	{		
		Ma1_1 = XAverage(C,Length1);
		Ma2_1 = XAverage(C,Length2);
		Ma3_1 = XAverage(C,Length3);		

		Commentary("---OnBar---");
		Commentary("Ma1_1:"+Text(Ma1_1));
		Commentary("Ma2_1:"+Text(Ma2_1));
		Commentary("Ma3_1:"+Text(Ma3_1));
	}

	//下一个Bar开始前,重新执行当前bar最后一次,参数为当前bar的图层数组
	OnBarClose(ArrayRef<Integer> indexs)
	{		
		Ma1 = XAverage(C,Length1);
		Ma2 = XAverage(C,Length2);
		Ma3 = XAverage(C,Length3);
		Commentary("---OnBarClose---");
		PlotNumeric("Ma1",Ma1);
		PlotNumeric("Ma2",Ma2);
		PlotNumeric("Ma3",Ma3);
	}


XAverage与Average的区别
怎么写代码能以均线的价格开平
A_SendOrderEX在OnBar里写能开单成功,在OnTimer里都失败
60均线向上或者向下用怎么通过写代码
关于提前发单代码及OnBarClose的疑问
请教大神,开仓条件是在180均线以上怎么写代码?
符合某个条件,输出不同的均线怎么写?
onbarclose和onbar差一根k线
在OnBar里执行策略前判断BarStatus==2 再执行有什么用
在onready里设置了数组变量的值,在onbar里读取的值是0

打开源码看一下,有判断起始和没有