以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  循环语句中peak() ,peakbars() 函数失效  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=147673)

--  作者:boomer
--  发布时间:2017/2/12 15:20:17
--  循环语句中peak() ,peakbars() 函数失效
代码功能是找出当日高点、次高点。

目前 i的值传不进去,
如果写成 PEAKBARS(4,N,3) ,用2 ,3 等常熟代替i,可以正确返回。
麻烦给看看,谢谢。


for  i=1  to 20  do begin
zigH:=PEAK(4,0.1,i);
peakbar:=PEAKBARS(4,0.1,i);//第i个波峰位置
 
//找高、次高点
peakH:=HIGH[peakbar];
if peakH > peak1PosH then BEGIN
peak2Pos: = peak1Pos;
peak2PosH: = peak1PosH;
peak1Pos: = peakbar;
peak1PosH:= peakH;
end; 
else if peakH > peak2PosH then BEGIN
peak2Pos: = peakbar;
peak2PosH: = peakH;
end;  
  str:=\'找高 \'+NUMTOSTR(TIME,0) +\' ,i= \'+numtostr(i,0)+\' ,peakbar \'+numtostr(peakbar,0)+\',\'+numtostr(peakH,0) +\',\'+numtostr(zigH,0)+\' ,         高\'+numtostr(peak1Pos,0)+\',\'+numtostr(peak1PosH,0)+\' ,次高\'+numtostr(peak2Pos,0)+\',\'+numtostr(peak2PosH,0);
MSGOUT(1 ,str);
end;


输出:

2017/02/12 14:29:24  找高 150000 ,i= 1 ,peakbar 92,3142,3183 ,高92,3142 ,次高0,0
2017/02/12 14:29:24  找高 150000 ,i= 2 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 3 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 4 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 5 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 6 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 7 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 8 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 9 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 10 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 11 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 12 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 13 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 14 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 15 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 16 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 17 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 18 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 19 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142
2017/02/12 14:29:24  找高 150000 ,i= 20 ,peakbar 92,3142,3183 ,高92,3142 ,次高92,3142




--  作者:boomer
--  发布时间:2017/2/12 15:38:11
--  
另,如果i相同,若都是2

peakbar:=PEAKBARS(4,0.1,2);
peakH:=HIGH[peakbar];

PEAK(4,0.1, 2)  与 peakH 的值应该相同,但输出却是不同,不解。


--  作者:boomer
--  发布时间:2017/2/12 15:42:30
--  
金字塔版本 X86 V4.01
--  作者:王锋
--  发布时间:2017/2/12 17:11:19
--  

目前没有办法的,因为PEAKBARS是未来函数,因此是没法实时计算的,因此调用参数只能是常数,在运行前将序列数据预先计算好的。

如果你有明确的策略需求,可以考虑自行用FOR循环计算BAR数据的。

另外peakH:=HIGH[peakbar];你这句话的用意是什么?如果您还不了解金字塔的数组使用,建议您认真参考一下

 

金字塔数组使用的高级编程技巧

http://www.weistock.com/bbs/dispbbs.asp?boardid=10&id=30380


--  作者:boomer
--  发布时间:2017/2/12 17:46:42
--  
谢谢,我想想办法

peakbar:=PEAKBARS(4,0.1,2);得到峰的位置。

peakH:=HIGH[peakbar]; 

peakH 是 peak所在K线的高点
[此贴子已经被作者于2017-2-12 17:47:30编辑过]

--  作者:boomer
--  发布时间:2017/2/12 18:23:38
--  
 

peakbar:=PEAKBARS(4,0.1,2);得到峰的位置。

peakH:=HIGH[peakbar]; 

peakH 是 peak所在K线的高点

我的用法对吗?


--  作者:boomer
--  发布时间:2017/2/12 20:33:08
--  
以下是引用王锋在2017-2-12 17:11:19的发言:

目前没有办法的,因为PEAKBARS是未来函数,因此是没法实时计算的,因此调用参数只能是常数,在运行前将序列数据预先计算好的。

如果你有明确的策略需求,可以考虑自行用FOR循环计算BAR数据的。

另外peakH:=HIGH[peakbar];你这句话的用意是什么?如果您还不了解金字塔的数组使用,建议您认真参考一下

 

金字塔数组使用的高级编程技巧

http://www.weistock.com/bbs/dispbbs.asp?boardid=10&id=30380

另,如果i相同,若都是2

peakbar:=PEAKBARS(4,0.1,2);
peakH:=HIGH[peakbar];

PEAK(4,0.1, 2)  与 peakH 的值应该相同,但输出却是不同

这个问题依旧,为什么?为什么没从 HIGH[]取到正确的值。 
虽然我能绕过这个问题,但代码太丑了。

--  作者:王锋
--  发布时间:2017/2/12 21:41:37
--  

对于金字塔的数组使用解释如下:

 

HIGH[BARPOS]  等于 HIGH

HIGH[BARPOS-1] 等于 REF(HIGH,1) 

 

你的问题按照我的理解应该这样做 peakH:=HIGH[barpos-peakbar];


--  作者:boomer
--  发布时间:2017/2/12 22:50:12
--  
谢谢,这么一改果然对了。
开发文档可以没说可以这么写,有这样的关系。
长知识了。