以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- [求助]下面的代码怎么没能找出目前螺纹成交量最大的合约? (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=104) |
-- 作者:bhwhui -- 发布时间:2009/10/20 0:51:27 -- [求助]下面的代码怎么没能找出目前螺纹成交量最大的合约? 如题: 代码如下
variable:rb_label=\'\',rb_vol_max:=0; for i=1 to 12 do 标题rb_label一直为空,成交量为0哦,不解! 谢谢 [此贴子已经被作者于2009-10-20 0:54:03编辑过]
|
-- 作者:bhwhui -- 发布时间:2009/10/20 1:05:34 -- 程序修改了一下,还不行、、、
variable:rb_label=\'\',rb_vol_max:=0; for i=1 to 12 do |
-- 作者:admin -- 发布时间:2009/10/20 9:42:50 -- variable:rb_vol=0,rb_vol_max:=0; for i=1 to 12 do
金字塔的公式不支持字符串的变量输出,所以rb_label只能返回0 这样基本搞定,你上面的公式问题太多了。
|
-- 作者:bhwhui -- 发布时间:2009/10/20 12:48:11 -- 仔细比对,您改了3个地方。 1:周期为日线,我需要用到60min,所以用参数5没错。 2:去掉rb_label定义。程序中我需要知道是哪各个合约,多处用到它,所以不能去掉。 3:增加rb_vol定义,设为初值0 ,按程序设计原理,我有傅值语句rb_vol:=stkindi(rb_ii,\'vol.volume\',0,5,0);
最大的问题:程序计算结果不对,看下面截图。。。 |
-- 作者:bhwhui -- 发布时间:2009/10/20 12:53:34 --
就看最后的vol值,计算不对。。。。 目前rb1001的成交量最大,按照程序原意,数值就应该是316.7万,谢谢 [此贴子已经被作者于2009-10-20 12:54:25编辑过]
|
-- 作者:bhwhui -- 发布时间:2009/10/20 23:49:35 -- 经管理员帮助,搞清楚了问题所在。 在fxj,fh中variable 的定义是为了让程序在默认循环中保存数值,如果没有这个定义,那么下个bars 变量的初值将会是null.导致不可预计的后果。
而在金字塔中variable 的作用是定义全局变量,与周期有关。变量如果没有variabl定义,数值一样保存。。有区别的。。。。 [此贴子已经被作者于2009-10-20 23:51:21编辑过]
|
-- 作者:bhwhui -- 发布时间:2009/10/20 23:55:06 -- 最终代码可以如下:不用variable 定义
rb_label:=0;
|
-- 作者:admin -- 发布时间:2009/10/20 23:56:25 -- 那是Varable变量声明作用域的问题。 用Varable声明的变量是跨所有周期的变量。 下面公式将解决你前面的问题
//variable:rb_vol=0,rb_vol_max:=0; rb_vol:=0; 成交量:rb_vol_max; |
-- 作者:金骄 -- 发布时间:2009/10/27 7:53:12 -- 这样的公式,放在高速行情上面,机子能吃得消吗?
|
-- 作者:bhwhui -- 发布时间:2009/10/28 22:40:09 -- 楼上说的有道理。 讨论才能提高自己(我自己),呵呵呵。楼上,如果此程序只是某个系统的控制部分,每天8:58定时运行一次,还会影响速度么?系统最终的目的是无人值守。这只是程序控制部分一段程序,最终目标是无人值守。。。
|