我需要定义一个几百个元素的数组,数组的每个元素给了初始化值后,以后不会再改变,在测试中,发现运行非常缓慢,因为每次根K线都要去计算N次。
我能不能定义常量数组?
或者我这样写是不是合理(逐K线公式):
VARIABLE:Amountper[240]=0.0;
if PERIOD=0 and BARPOS=1 THEN
begin
Amountper[1]:=1.538;
Amountper[2]:=0.68;
Amountper[3]:=0.663;
Amountper[4]:=0.635;
Amountper[5]:=0.65;
......
Amountper[240]:=0.99;
end;
我用barpos=1来限定,公式执行时,只在开始做一次。
可以用的。
只是这样搞效率上有问题,因为每次刷新K线时,BARPOS=1都要执行一遍了,看你的要求了
是的,如果是单值的变量的话,就用你说的超全局,如果是数组(特别我定义的数据是用在1分钟图中,每天240根K线,定义了个含有240元素的数组,正好用OPENMINUTES(time)来访问比较方便)就没办法了。
barpos等于1执行一次,也好过每bar都去执行
另外,王峰:GLOBALVARIABLE似乎在仅刷新最后一根K线时有问题(在最后一根K线上每tick都被初始化),应该是bug,例如下面这个代码:
GLOBALVARIABLE:myvalue=0;
myvalue:=myvalue+1;
my:myvalue;
在逐K线下,不勾选“仅刷新最后一根”,最后一根K线的myvalue是正常值,就等于他是第几根K线
但勾选了“仅刷新最后一根”后,历史K线正常,但最后一根的myvalue就是0了
代码测试过了。
你所提到的问题,不是BUG,因为仅刷最后K线不能100%完成所有的事情,这个在你勾选这个功能选项后你应该看到提示。