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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]下面的代码怎么没能找出目前螺纹成交量最大的合约?

   

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


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

主题:[求助]下面的代码怎么没能找出目前螺纹成交量最大的合约?

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


加好友 发短信
等级:论坛游民 帖子:208 积分:1565 威望:0 精华:2 注册:2009/8/23 19:18:53
[求助]下面的代码怎么没能找出目前螺纹成交量最大的合约?  发帖心情 Post By:2009/10/20 0:51:27    Post IP:221.7.173.165[显示全部帖子]

如题:

代码如下

 

variable:rb_label='',rb_vol_max:=0;

for i=1 to 12 do
begin
    ii:=strright('0'+numtostr(i,0),2);
    rb_ii:="rb"+ii;
    rb_vol:=stkindi(rb_ii,'vol.volume',0,5,0);
    if rb_vol>rb_vol_max then rb_label=rb_ii;
end;
 
合约:rb_label;
成交量:rb_vol_max;

标题rb_label一直为空,成交量为0哦,不解!

谢谢

[此贴子已经被作者于2009-10-20 0:54:03编辑过]

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


加好友 发短信
等级:论坛游民 帖子:208 积分:1565 威望:0 精华:2 注册:2009/8/23 19:18:53
  发帖心情 Post By:2009/10/20 1:05:34    Post IP:221.7.173.165[显示全部帖子]

程序修改了一下,还不行、、、

 

variable:rb_label='',rb_vol_max:=0;

for i=1 to 12 do
begin
    ii:=strright('0'+numtostr(i,0),2);
    rb_ii:="rb"+ii;
    rb_vol:=stkindi(rb_ii,'vol.volume',0,5,0);
    if rb_vol>rb_vol_max then
       begin
       rb_label=rb_ii;
       rb_vol_max=rb_vol;
       end;
end;
 
合约:rb_label;
成交量:rb_vol_max;


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


加好友 发短信
等级:论坛游民 帖子:208 积分:1565 威望:0 精华:2 注册:2009/8/23 19:18:53
  发帖心情 Post By:2009/10/20 12:48:11    Post IP:221.7.173.165[显示全部帖子]

仔细比对,您改了3个地方。

1:周期为日线,我需要用到60min,所以用参数5没错。

2:去掉rb_label定义。程序中我需要知道是哪各个合约,多处用到它,所以不能去掉。

3:增加rb_vol定义,设为初值0 ,按程序设计原理,我有傅值语句rb_vol:=stkindi(rb_ii,'vol.volume',0,5,0);
     所以个人觉得没必要,当然这样更规整些。

 

最大的问题:程序计算结果不对,看下面截图。。。


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


加好友 发短信
等级:论坛游民 帖子:208 积分:1565 威望:0 精华:2 注册:2009/8/23 19:18:53
  发帖心情 Post By:2009/10/20 12:53:34    Post IP:221.7.173.165[显示全部帖子]

图片点击可在新窗口打开查看

 

就看最后的vol值,计算不对。。。。

目前rb1001的成交量最大,按照程序原意,数值就应该是316.7万,谢谢

[此贴子已经被作者于2009-10-20 12:54:25编辑过]

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


加好友 发短信
等级:论坛游民 帖子:208 积分:1565 威望:0 精华:2 注册:2009/8/23 19:18:53
  发帖心情 Post By:2009/10/20 23:49:35    Post IP:221.7.173.165[显示全部帖子]

经管理员帮助,搞清楚了问题所在。

在fxj,fh中variable 的定义是为了让程序在默认循环中保存数值,如果没有这个定义,那么下个bars 变量的初值将会是null.导致不可预计的后果。

 

而在金字塔中variable 的作用是定义全局变量,与周期有关。变量如果没有variabl定义,数值一样保存。。有区别的。。。。

[此贴子已经被作者于2009-10-20 23:51:21编辑过]

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


加好友 发短信
等级:论坛游民 帖子:208 积分:1565 威望:0 精华:2 注册:2009/8/23 19:18:53
  发帖心情 Post By:2009/10/20 23:55:06    Post IP:221.7.173.165[显示全部帖子]

最终代码可以如下:不用variable 定义

 

rb_label:=0;
rb_vol_max:= 0;
rb_vol:=0;
 
for i=1 to 12 do
begin
    ii:=strright('0'+numtostr(i,0),2);
    rb_ii:'rb'+ii,linethick0;
    rb_vol:=stkindi(rb_ii,'vol.volume',0,6,0);
    if rb_vol>rb_vol_max then
    begin
     rb_vol_max:= rb_vol;
     rb_label:=i;
    end
end
 
rb合约月份:rb_label;
成交量:rb_vol_max;

 

 


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


加好友 发短信
等级:论坛游民 帖子:208 积分:1565 威望:0 精华:2 注册:2009/8/23 19:18:53
  发帖心情 Post By:2009/10/28 22:40:09    Post IP:221.7.173.165[显示全部帖子]

楼上说的有道理。

讨论才能提高自己(我自己),呵呵呵。楼上,如果此程序只是某个系统的控制部分,每天8:58定时运行一次,还会影响速度么?系统最终的目的是无人值守。这只是程序控制部分一段程序,最终目标是无人值守。。。

 


 回到顶部