DrawLine为什么不划线? [金字塔]
- 咨询内容:
以下代码,在if条件满足时,如何在左峰跟右峰的最高点之间画线呢,这时候什么ref,hhv之类的函数都不能用了,很困惑。
代码如下:
variable:lastPeakLow:=0;
variable:lastPeakHigh:=0,lastPeakIndex:=0,lastPeakBreak:=0;
//右峰数据
lPeakLow:=Ref(Low,1);
lPeakHigh:=Ref(High,1);
//上一根K线是5根K线中的最高点,等待突破
lastPeak:=REF(H,1)=HHV(H,左腿长);
if lastPeak then BEGIN
lastPeakBreak:=0;
lastPeakIndex:=BARPOS-1;
lastPeakLow:=lPeakLow;
lastPeakHigh:=lPeakHigh;
//DrawIcon(1, lastPeakHigh, 1);
end;
//寻找左峰,先记录左峰数据:
//寻找峰谷距离内的最高点
prePeakHigh:=HHV(H,峰谷最宽);
//最高点与当前峰的距离
prePeakDist:=HHVBARS(H,峰谷最宽);
//最高点K线的横坐标
prePeakIndex:=BARSCOUNT(c)-prePeakDist;
//双峰间的最低点
preLow:=LLV(L,BARSCOUNT(c)-prePeakIndex);
//判断最高点是否为一个峰,即:该K线的最高点是5根K线中最高的,最低点不是5根中最低的
prePeak:=REF(H,prePeakDist)=HHV(Ref(H,prePeakDist),左腿长);// and REF(L,prePeakDist)!=LLV(Ref(L,prePeakDist),左腿长);
//如果不成立,则清除最高点数据,不记录为左峰
//成立,则计算双峰相关数据
if prePeak=0 then prePeakCount:=0;
else
//右峰必须达到的最低点
highLimit:=preLow+(prePeakHigh-preLow)*0.8;
//右峰突破时,记录lastPeak信息
if lastPeakBreak=0 and Low<lastPeakLow then begin
//DRAWICON(1, lastPeakHigh, 5);
//DRAWNumber(1, lastPeakHigh+20, lastPeakIndex, 7);
//DRAWNumber(1, lastPeakHigh+30, lastPeakLow, 2);
//DRAWNumber(1, lastPeakHigh+20, lastPeakHigh, 2);
//突破成立lastPeak时,比较lastPeak和prePeak,看看是不是一个M?
//是M,则标记,不是,直接记录lastPeak为prePeak
if prePeakHigh!=0 and lastPeakIndex-prePeakCount<峰谷最宽 and lastPeakIndex-prePeakCount>峰谷最窄
and lastPeakHigh<=prePeakHigh and lastPeakHigh>highLimit then begin
DRAWICON(1, lastPeakLow, 5);
DRAWTEXT(1, lastPeakHigh+100, '上一个高点:'+numtostr(prePeakHigh,0)+';当前高点:'+numtostr(lastPeakHigh,0),colorgreen);
DrawText(1, lastPeakHigh+200,'最低点:'+numtostr(preLow,0), COLORYELLOW);
DrawText(1, lastPeakHigh+300,'上一个高点距离:'+numtostr(lastPeakIndex-prePeakCount,0),COLORWHITE);
DRAWLINE(barpos=prePeakIndex,prePeakHigh,barpos=lastPeakIndex,lastPeakHigh,1);
end;
else begin
prePeakHigh:=lastPeakHigh;
prePeakLow:=lastPeakLow;
prePeakCount:=lastPeakIndex;
end;
lastPeakBreak:=1;
end;
个人分析,运行到if中的时候,barpos已经不可能再等于左峰的barscount了,所以系统找不到对应K线。
那究竟如何画呢?
另外,如何使用Peak函数呢,有没有简便一点的方法来实现这样一个逻辑:
如果某一个K线,是5根K线中最高的,则当其低点被突破时,寻找左峰(上一个峰),如果存在一个左峰,则产生交易。
(换句话来说,就是捕捉一个M形态。当一个M形态的右峰最高K线的低点被突破时,产生交易)
[此贴子已经被作者于2013/10/5 18:26:38编辑过] - 金字塔客服:
左腿长,峰谷最宽,峰谷最窄,这3个是什么?
- 用户回复:
这个是预设参数左腿长:4峰谷最宽:20峰谷最窄:4
- 网友回复:
最后加这么一句
DRAWLINE(REF(H,prePeakDist)=HHV(Ref(H,prePeakDist),左腿长),prePeakHigh,REF(H,1)=HHV(H,左腿长),lastPeakHigh,0);
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容