以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- 数组的ma (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=30488) |
-- 作者:天三 -- 发布时间:2012/11/8 12:07:54 -- 数组的ma 基于1分钟 variable:a[5]=0;ra[5]=0,i=1,j=1;if i>5 then i:=1; if j>5 then j:=1;
cond==(minute:=00min,10min,20min,30min,40min,50min)取1次收盘价;只存最近的5个收盘价; if cond then begin
a[i]:=c;
i:=i+1;
if i=1 then begin
ra1:=a[4];
a1:=a[5];
end
else begin
ra1:=a[i-1];
a1:=a[i];
end
ra[j]:=ra1;
j:=j+1; ma1:ma(ra1,5); ma2:ma(ra,5); ma3:ma(a1,5); ma4:ref(ma2,1); 这样算出来的ma4,ma1,ma2的值用debugfile输出,看了一天的记录,都是相等的 所以2.932的MA,SUM等统计函数支持对VARIABLE支持的数组的运算 VARIABLE X[5]=0; X[1]:=1; X[2]:=2; X[3]:=3; X[4]:=4; X[5]:=5; S:MA(X,5); 实际是等同于 s:ma(x[i],5); 的? 是这样吗?还是不同? ref也是对数组的前一个值得获取,而不是上一根当前周期K线上的值获取? 例如:最新值A是20分钟的时候取得的,那么前一个值B应该是10分取得的,那么现在是23分,ref取的是10分的时候得值B,而不是22分时候得值A? 整个10-19分钟都是10分的值B,20-29分钟都是20的值A,取值只在整10分钟取。 呃,有点绕,我这个表达清楚了么?我运行输出的结果是这样,是不是对的? [此贴子已经被作者于2012-11-8 12:09:54编辑过]
|
-- 作者:王锋 -- 发布时间:2012/11/8 13:04:45 -- VARIABLE X[5]=0;
X[1]:=1; X[2]:=2; X[3]:=3; X[4]:=4; X[5]:=5; S:MA(X,5); 实际是等同于
s:ma(x[i],5);
的?
两个概念,S:MA(X,5); 是把X数组5个值进行平均计算
而
s:ma(x[i],5);
只是将X数组的第5个值反复的进行加权平均计算,是个常数了 |
-- 作者:天三 -- 发布时间:2012/11/8 14:15:07 -- VARIABLE X[5]=0; X[1]:=1; X[2]:=2; X[3]:=3; X[4]:=4; X[5]:=5; S:MA(X,3); 这个取值是前3个还是后3个呢?还是最新插入的数值?
|
-- 作者:jinzhe -- 发布时间:2012/11/8 14:29:26 -- X数组后3个元素的平均 |
-- 作者:天三 -- 发布时间:2012/11/8 17:01:06 -- ma不能在if cond then begin 里用 variable a1[10]=10,a2[10]=0,i=1; //注1 if cond = i then begin
...
...
a1[i]:=c;
i:=i+1; end ma1:=ma(a1,10); if cond = i then begin
...
...
a2[i]:=ma1;
i:=i+1; end 改为 //注2 ma1:=ma(a1,10); if cond = i then begin
...
...
a1[i]:=c;
a2[i]:=ma1;
i:=i+1; end 想要a1[i]和a2[i]的值对应起来,这样的注2可行吗?还是把注1的第2个if的改为cond = i-1? if cond = i-1 then begin
...
...
a2[i]:=ma1;
i:=i+1; end 或者应该怎么写比较好呢
|
-- 作者:王锋 -- 发布时间:2012/11/8 17:18:15 -- 没完全看懂你的描述,建议使用金字塔的调试功能,使用单步跟踪来自行调试. 参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 问题4 |
-- 作者:天三 -- 发布时间:2012/11/8 18:09:26 -- 就是我2个数组a1[]和a2[] 先把一些固定时间的价格放到a1[], 再对a1[]做一次ma的计算 然后把计算出来的值放到a2[], 最后调用a2[]里的数值. 但是a1[]和a2[]的执行都是基于相同的一个时间序列,存放数据的序列也相同,这样顺序执行下去, 如果我把ma1:=ma(a,10);放到if cond=t[j]的前面来,把2个if 中的内容放到一个if里面去,都赋完值,再自加i和j.这样可以么,数据会有什么变化吗? variable:a[10]=0;ra[10]=0,t[6]=0,i=1,j=1; if i>5 then i:=1; if j>6 then j:=1; cond==(minute:=00min,10min,20min,30min,40min,50min)取1次收盘价; if cond = t[j] then begin
...
...
a[i]:=c;
i:=i+1;
j:=j+1; end ma1:=ma(a,10); if cond = t[j-1] then begin
...
...
i:=i-1;
ra[i]:=ma1;
i:=i+1;
j:=j+1; end |
-- 作者:天三 -- 发布时间:2012/11/8 18:11:15 -- 或者我的第一条if的时间变量j不用自加? |
-- 作者:王锋 -- 发布时间:2012/11/8 20:22:04 -- 建议参考 参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 问题4 好吗 |