公式运行在序列模式:
由于进行数据读取时是在if和for语句中,所以无法将数据序列提前到公式前面。例如:要读取自定义数据: AA:=selfdatalabel('DATA1',pinzhong); 在if和for语句中才进行pinzhong选取赋值,
那么,如何将该自定义历史数据到数组中?DATA[1] := AA; DATA[2] := REF(AA,1); DATA[3] := REF(AA,2);......依次类推,假设读取10个数据。
请教老师和高手,如何实现?谢谢了。
[此贴子已经被作者于2017-3-16 15:57:43编辑过]
AA:selfdatalabel('DATA1',pinzhong);
这样来获取,AA就是一个每个周期都有对应值的数据序列,AA[barpos]就是当前十字光标所在k线的AA值,AA[BARPOS-1]就是当前十字光标所在k线的之前一个k线的AA值

此主题相关图片如下:1.png
例如:
for i=1 to stkcount('上海期货') do begin
pinzhong := stkfromblk('上海期货',i);
AA:=selfdatalabel('DATA1',pinzhong);
userDATA[1] := AA;
userDATA[2] := ref(AA,1);
userDATA[3] := ref(AA,2);
......
结束后,这边再对userDATA进行数据处理运算......
end
这样,就没办法事先定义 SS:selfdatalabel('DATA1',pinzhong);也就没办法AA[barpos]这样的取值方式了。
[此贴子已经被作者于2017-3-16 16:27:15编辑过]
nn:=datacount;
variable:userdata[nn]=0;
AA:=selfdatalabel('DATA1',pinzhong);
if islastbar then begin
for i=1 to datacount do begin
userDATA[i] := AA[i];
end
end
这样子也可以实现最后一根K线的要求。
但是我的本意是,每根K线都要执行一遍for循环语句,所以就不能有islastbar的限制了。
for i=1 to stkcount('上海期货') do begin
pinzhong := stkfromblk('上海期货',i);
AA:=selfdatalabel('DATA1',pinzhong);
for j=1 to datacount do userDATA[j] := AA[j];
end
在最外层for语句里面,AA:=selfdatalabel('DATA1',pinzhong); 这个AA是一个序列数组吗?貌似AA只是单值吧?
如果AA不是序列数组,那么for j=1 to datacount do userDATA[i] := AA[i]; 这样赋值就失去意义了(可能全部都是同一个数值),实现不了期望的要求了。
[此贴子已经被作者于2017-3-16 20:44:28编辑过]