以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- 能不能定义常量数组 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=51317) |
-- 作者:klc -- 发布时间:2013/4/22 17:58:50 -- 能不能定义常量数组 我需要定义一个几百个元素的数组,数组的每个元素给了初始化值后,以后不会再改变,在测试中,发现运行非常缓慢,因为每次根K线都要去计算N次。 我能不能定义常量数组?
或者我这样写是不是合理(逐K线公式): VARIABLE:Amountper[240]=0.0; ...... Amountper[240]:=0.99; end; 我用barpos=1来限定,公式执行时,只在开始做一次。 |
-- 作者:klc -- 发布时间:2013/4/22 18:04:58 -- 其实我就是要类似mt4里面的int init()函数,可以在里面做一些一次性的东西,初始化变量等操作,只做一次,不用每次刷新都做。 |
-- 作者:wn10000neng -- 发布时间:2013/4/22 20:18:20 -- 应该可以 |
-- 作者:王锋 -- 发布时间:2013/4/22 21:35:52 -- 使用超全局变量做标志,第一次运行初始化,以后遇到标识就直接跳过 |
-- 作者:klc -- 发布时间:2013/4/23 9:09:51 -- 谢谢王峰,我明白你的意思,只是我定义的不是普通的变量,而是数组,数组初始化是不是只能初始化为所有元素都一样的?因为我需要为每个元素初始化的值是不同的,该怎么写呢?另外我说的方法(BARPOS=1)在逐K计算公式中能不能用呢? |
-- 作者:王锋 -- 发布时间:2013/4/23 21:25:09 -- 可以用的。 只是这样搞效率上有问题,因为每次刷新K线时,BARPOS=1都要执行一遍了,看你的要求了 |
-- 作者:klc -- 发布时间:2013/4/23 21:29:07 -- 是的,如果是单值的变量的话,就用你说的超全局,如果是数组(特别我定义的数据是用在1分钟图中,每天240根K线,定义了个含有240元素的数组,正好用OPENMINUTES(time)来访问比较方便)就没办法了。 barpos等于1执行一次,也好过每bar都去执行 |
-- 作者: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了 |
-- 作者:王锋 -- 发布时间:2013/4/23 22:34:50 -- 代码测试过了。 你所提到的问题,不是BUG,因为仅刷最后K线不能100%完成所有的事情,这个在你勾选这个功能选项后你应该看到提示。
|
-- 作者:klc -- 发布时间:2013/4/24 19:37:42 -- 好的,我在摸索怎么编出高效率的程序 |