跨周期全局数组变量应用
下述程序的目的是用一个全局变量数组在小周期Data[0]内显示日线大周期Data[1]的最高价,其中[0]号元素是当根大周期Bar的最高价,随行情变化,[1]号元素是上根大周期Bar的最高价,以此类推。 Params Integer Length(5); // 周期参数 Vars Global Array<Numeric> arrData; // 全局数组变量,Length周期的最高价 Integer i; Events OnBarOpen(ArrayRef<Integer> indexs) { Range[1:1] // 日周期Bar开始前 { ArrayClear(arrData); // 清除数组 For i = 1 To Length-1 // 数组赋值,[0]除外 arrData[i] = High[i]; } Range[0:0] // 小周期下一根Bar开始前 { If(TrueDate(1)<>TrueDate(0)) // 日周期开始的第一个小周期Bar arrData[0] = High; Else // 日周期的后续小周期Bar arrData[0] = Max(arrData[0],High[1]); } } OnBar(ArrayRef<Integer> indexs) { Range[0:0] // 小周期 { For i=0 To GetArraySize(arrData)-1 Commentary("arrData["+Text(i)+"]= "+Text(arrData[i])); } } 现在的问题是[0]号元素始终显示当根小周期的最高价,而不能保持当根大周期的最高价,它在日内下跌时跟随下降。 当然我如果删掉 ArrayClear(arrData);,可以得到我要的结果,但是我想知道为什么?清空数组用在此处有何错误?