Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共9 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:循环语句中peak() ,peakbars() 函数失效

1楼
boomer 发表于:2017/2/12 15:20:17
代码功能是找出当日高点、次高点。

目前 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



2楼
boomer 发表于:2017/2/12 15:38:11
另,如果i相同,若都是2

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

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

3楼
boomer 发表于:2017/2/12 15:42:30
金字塔版本 X86 V4.01
4楼
王锋 发表于:2017/2/12 17:11:19

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

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

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

 

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

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

5楼
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编辑过]
6楼
boomer 发表于:2017/2/12 18:23:38
 

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

peakH:=HIGH[peakbar]; 

peakH 是 peak所在K线的高点

我的用法对吗?

7楼
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[]取到正确的值。 
虽然我能绕过这个问题,但代码太丑了。
8楼
王锋 发表于:2017/2/12 21:41:37

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

 

HIGH[BARPOS]  等于 HIGH

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

 

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

9楼
boomer 发表于:2017/2/12 22:50:12
谢谢,这么一改果然对了。
开发文档可以没说可以这么写,有这样的关系。
长知识了。
共9 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.04688 s, 3 queries.