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


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

   

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


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

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

帅哥哟,离线,有人找我吗?
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;


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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2009/10/20 9:42:50    Post IP:123.115.6.35[只看该作者]

variable:rb_vol=0,rb_vol_max:=0;

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

 

金字塔的公式不支持字符串的变量输出,所以rb_label只能返回0

这样基本搞定,你上面的公式问题太多了。

 


 回到顶部
帅哥哟,离线,有人找我吗?
bhwhui
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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;

 

 


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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2009/10/20 23:56:25    Post IP:123.115.6.35[只看该作者]

那是Varable变量声明作用域的问题。

用Varable声明的变量是跨所有周期的变量。

下面公式将解决你前面的问题

 

//variable:rb_vol=0,rb_vol_max:=0;

rb_vol:=0;
rb_vol_max:=0;
for i=1 to 12 do
begin
    ii:=strright('0'+numtostr(i,0),2);
    rb_ii:'rb'+ii,linethick0;
    rbvol:=stkindi(rb_ii,'vol.volume',0,6,0);
    if rbvol>rb_vol_max then
    begin
     rb_vol_max:= rbvol;
     rb_vol:= rbvol;
    end
end

成交量:rb_vol_max;

 


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


加好友 发短信
等级:新手上路 帖子:27 积分:218 威望:0 精华:0 注册:2009/10/12 22:56:09
  发帖心情 Post By:2009/10/27 7:53:12    Post IP:125.78.182.59[只看该作者]

这样的公式,放在高速行情上面,机子能吃得消吗?

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
bhwhui
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | 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定时运行一次,还会影响速度么?系统最终的目的是无人值守。这只是程序控制部分一段程序,最终目标是无人值守。。。

 


 回到顶部