Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共10 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:能不能定义常量数组

1楼
klc 发表于:2013/4/22 17:58:50

我需要定义一个几百个元素的数组,数组的每个元素给了初始化值后,以后不会再改变,在测试中,发现运行非常缓慢,因为每次根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来限定,公式执行时,只在开始做一次。

2楼
klc 发表于:2013/4/22 18:04:58
其实我就是要类似mt4里面的int init()函数,可以在里面做一些一次性的东西,初始化变量等操作,只做一次,不用每次刷新都做。
3楼
wn10000neng 发表于:2013/4/22 20:18:20
应该可以
4楼
王锋 发表于:2013/4/22 21:35:52
使用超全局变量做标志,第一次运行初始化,以后遇到标识就直接跳过
5楼
klc 发表于:2013/4/23 9:09:51
谢谢王峰,我明白你的意思,只是我定义的不是普通的变量,而是数组,数组初始化是不是只能初始化为所有元素都一样的?因为我需要为每个元素初始化的值是不同的,该怎么写呢?另外我说的方法(BARPOS=1)在逐K计算公式中能不能用呢?
6楼
王锋 发表于:2013/4/23 21:25:09

可以用的。

只是这样搞效率上有问题,因为每次刷新K线时,BARPOS=1都要执行一遍了,看你的要求了

7楼
klc 发表于:2013/4/23 21:29:07

是的,如果是单值的变量的话,就用你说的超全局,如果是数组(特别我定义的数据是用在1分钟图中,每天240根K线,定义了个含有240元素的数组,正好用OPENMINUTES(time)来访问比较方便)就没办法了。

barpos等于1执行一次,也好过每bar都去执行

8楼
klc 发表于:2013/4/23 21:33:16

另外,王峰:GLOBALVARIABLE似乎在仅刷新最后一根K线时有问题(在最后一根K线上每tick都被初始化),应该是bug,例如下面这个代码:

GLOBALVARIABLE:myvalue=0;

myvalue:=myvalue+1;

my:myvalue;

在逐K线下,不勾选“仅刷新最后一根”,最后一根K线的myvalue是正常值,就等于他是第几根K线

但勾选了“仅刷新最后一根”后,历史K线正常,但最后一根的myvalue就是0了

9楼
王锋 发表于:2013/4/23 22:34:50

代码测试过了。

你所提到的问题,不是BUG,因为仅刷最后K线不能100%完成所有的事情,这个在你勾选这个功能选项后你应该看到提示。

 

10楼
klc 发表于:2013/4/24 19:37:42
好的,我在摸索怎么编出高效率的程序
共10 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.03516 s, 2 queries.