下述程序的目的是用一个全局变量数组在小周期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);,可以得到我要的结果,但是我想知道为什么?清空数组用在此处有何错误?
建议投稿直播讲解