欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 能不能定义常量数组

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3710人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
klc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
能不能定义常量数组  发帖心情 Post By: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来限定,公式执行时,只在开始做一次。


 回到顶部
帅哥哟,离线,有人找我吗?
klc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/4/22 18:04:58 [只看该作者]

其实我就是要类似mt4里面的int init()函数,可以在里面做一些一次性的东西,初始化变量等操作,只做一次,不用每次刷新都做。

 回到顶部
帅哥哟,离线,有人找我吗?
wn10000neng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:833 积分:2996 威望:0 精华:0 注册:2013/3/5 20:14:15
  发帖心情 Post By:2013/4/22 20:18:20 [只看该作者]

应该可以

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/22 21:35:52 [只看该作者]

使用超全局变量做标志,第一次运行初始化,以后遇到标识就直接跳过


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
klc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/4/23 9:09:51 [只看该作者]

谢谢王峰,我明白你的意思,只是我定义的不是普通的变量,而是数组,数组初始化是不是只能初始化为所有元素都一样的?因为我需要为每个元素初始化的值是不同的,该怎么写呢?另外我说的方法(BARPOS=1)在逐K计算公式中能不能用呢?

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/23 21:25:09 [只看该作者]

可以用的。

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



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
klc
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/4/23 21:29:07 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
klc
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/23 22:34:50 [只看该作者]

代码测试过了。

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

 



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
klc
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/4/24 19:37:42 [只看该作者]

好的,我在摸索怎么编出高效率的程序

 回到顶部