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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [原创]关于数组的问题

   

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


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

主题:[原创]关于数组的问题

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


加好友 发短信
等级:新手上路 帖子:77 积分:0 威望:0 精华:0 注册:2013/8/13 9:54:28
[原创]关于数组的问题  发帖心情 Post By:2016/7/13 10:16:19    Post IP:124.74.140.214[只看该作者]

版主好,后台模式下,通过variable定义的数组值不像globalvariable的变量一样可以在每次轮询时不被重置为初始值,如果需要用到数组,又不想轮询时数组值被重置,有其他替代办法吗?

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/7/13 10:23:08    Post IP:180.173.43.114[只看该作者]

用variable定义数组,


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:新手上路 帖子:77 积分:0 威望:0 精华:0 注册:2013/8/13 9:54:28
  发帖心情 Post By:2016/7/13 10:32:13    Post IP:124.74.140.214[只看该作者]

版主,请看一下代码。我的想法是账户权益比之前记录的高才更新数组,但实际不是的,得到的结果一直是账户最新权益,请帮看看是哪里有问题,谢谢!


INPUT:消息输出(0,0,1,1);

ZHS:=TACCOUNTCOUNT;
VARIABLE:账户权益[ZHS]=0;
VARIABLE:最高权益[ZHS]=0;

IF ZHS>0 AND ISLASTBAR THEN BEGIN
FOR A=1 TO ZHS DO
BEGIN
CACCT:=TACCOUNTINDEX(A);
账户权益[A]:=TACCOUNT2(6,CACCT);
IF 最高权益[A]=0 THEN 最高权益[A]:=账户权益[A];
IF 账户权益[A]>最高权益[A] THEN BEGIN
最高权益[A]:=账户权益[A];
END
MSGOUT(消息输出=1 AND 账户权益[A]>0,CACCT & '-' & NUMTOSTR(最高权益[A],2)),ALLOWREPEAT;
END
END

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/7/13 10:43:17    Post IP:180.173.43.114[只看该作者]

能讲下这段代码的逻辑吗?


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:新手上路 帖子:77 积分:0 威望:0 精华:0 注册:2013/8/13 9:54:28
  发帖心情 Post By:2016/7/13 11:01:10    Post IP:124.74.140.214[只看该作者]

版主,代码的目的是通过FOR循环去取单个或多个账户的权益(后台模式,每5秒轮询一次),如账户1的权益先记录在 最高权益[1] ,然后当后面轮询得到的权益大于这个值时,就更新 最高权益[1] ,小于不更新;同理,还可以加最低权益等,这样就可以实时计算每个账户的权益回撤等信息。

如果只考虑一个账户,直接用 globalvariable定义多个全局变量就可以了;但在考虑多个账户的时候,定义多个变量就太麻烦了,所以想到了数组,每个账户有固定的几个需要记录的值,如账户1的就是:最高权益[1]、最低权益[1],账户2的就是:最高权益[2]、最低权益[2]

不知这样描述是否清晰?

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/7/13 11:29:36    Post IP:180.169.30.6[只看该作者]

处理中,请稍等



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:新手上路 帖子:77 积分:0 威望:0 精华:0 注册:2013/8/13 9:54:28
  发帖心情 Post By:2016/7/13 12:10:22    Post IP:124.74.140.214[只看该作者]

好的,麻烦版主了

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/7/13 14:08:20    Post IP:180.173.198.10[只看该作者]

if taccount2(6,TACCOUNTINDEX(1))>extgbdata(TACCOUNTINDEX(1)+'最高权益') then extgbdataset(TACCOUNTINDEX(1)+'最高权益',taccount2(6,TACCOUNTINDEX(1)));   

MSGOUT(1,TACCOUNTINDEX(1) & '-' & NUMTOSTR(extgbdata(TACCOUNTINDEX(1)+'最高权益'),2)),ALLOWREPEAT;

 

 

抱歉想了一下只有这样的枚举法来实现了,多账户的情况下多复制这样的代码几次,然后修改taccountindex(1)里面的数字1



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:新手上路 帖子:77 积分:0 威望:0 精华:0 注册:2013/8/13 9:54:28
  发帖心情 Post By:2016/7/13 14:14:07    Post IP:124.74.140.214[只看该作者]

好的,辛苦版主了。

 回到顶部