序列变量取值问题

刚开始学习咱们系统的量化策略编写在读咱们系统自带的第一个交易策略 VolumeWeightedMomentumSys_S 时,发现一个问题SEPrice 变量无论在哪根K线上的SEPrice[1]和SEPrice值都是相同的。如上图:AATR 和 SEPrice 两个都是序列变量,在K线上输出第一和第二个值时,AATR变量值AATR[1]和AATR两个的值时不同的,符合认知。但是SEPrice 变量无论在哪根K线上的SEPrice[1]和SEPrice值都是相同的。但实际明明是有变化的。只有输出SEPrice[2]和SEPrice时,才能确定出现变化的K线。这是为什么?这样的情况下策略中变量取值用SEPrice[1]和SEPrice有什么区别?

可能吗? SEPrice[1] 和 SEPrice永远一样, SEPrice和SEPrice[2] 不一样?值是传递的,必然有一个节点会改变这个值那么节点在哪里? 肯定是赋值的时候

回复:正常理解是这样,必然有一个节点。但是我这样输出的结果确实是一样的。以下是完整代码// 名称: 成交量加权动量交易系统 空//----------------------------------------------------------------------//Params Numeric MomLen(5); //UWM参数 Numeric AvgLen(20); //UWM参数 Numeric ATRLen(5); //ATR参数 Numeric ATRPcnt(0.5); //入场价格波动率参数 Numeric SetupLen(5); //条件持续有效K线数Vars Series<Numeric> VWM(0); Series<Numeric> AATR(0); Series<Numeric> SEPrice(0); Series<Bool> BullSetup(False); Series<Bool> BearSetup(False); Series<Numeric> SSetup(0);Events OnBar(ArrayRef<Integer> indexs) { VWM = XAverage(Vol * Momentum(Close, MomLen), AvgLen); //定义UWM AATR = AvgTrueRange(ATRLen); //ATR BullSetup = CrossOver(VWM,0); //UWM上穿零轴定义多头势 BearSetup = CrossUnder(VWM,0); //UWM下穿零轴定义空头势 Commentary("BullSetup" + IIFString(BullSetup,"true","false")); Commentary("BearSetup" + IIFString(BearSetup,"true","false")); Commentary("SEPrice" + Text(SEPrice)); Commentary("SEPrice[1]" + Text(SEPrice[1])); Commentary("AATR" + Text(AATR)); Commentary("AATR[1]" + Text(AATR[1])); PlotNumeric("SEPrice", SEPrice); If (BearSetup ) //空头势开始计数并记录当前价格 { SSetup = 0; SEPrice = Close; } Else SSetup = SSetup[1] + 1; //每过一根BAR计数 //系统入场 If (CurrentBar > AvgLen And MarketPosition == 0 ) //当空头势满足并且在SetupLen的BAR数目内,当价格达到入场价格后,做空 { If( Low <=SEPrice[1] - (ATRPcnt * AATR[1]) And SSetup[1] <= SetupLen And SSetup >= 1 And Vol > 0) { SellShort(0, Min(Open,SEPrice[1] - (ATRPcnt * AATR[1]))) ; } } //系统出场 If (MarketPosition == -1 And BarsSinceEntry > 0 And Vol > 0) //多头势平掉空单 { If( BullSetup[1] == True ) { Buytocover(0,Open); } } }

回复:或者说我重新描述一下,换个问法:我在K线上输出SEPrice[1] 和 SEPrice这两个值,一直是一样的。输出SEPrice[1] 和 SEPrice[2]这两个值才能发现这个节点。为什么会出现SEPrice[1] 和 SEPrice一直相同这种情况?