欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → DrawLine为什么不划线?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2463人关注过本帖树形打印复制链接

主题:DrawLine为什么不划线?

帅哥哟,离线,有人找我吗?
eacho
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:2 积分:0 威望:0 精华:0 注册:2013/1/22 11:47:03
DrawLine为什么不划线?  发帖心情 Post By:2013/10/5 18:24:58    Post IP:118.195.65.32[只看该作者]

以下代码,在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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2013/10/8 9:35:52    Post IP:58.246.57.26[只看该作者]

左腿长,峰谷最宽,峰谷最窄,这3个是什么?


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
eacho
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:2 积分:0 威望:0 精华:0 注册:2013/1/22 11:47:03
  发帖心情 Post By:2013/10/8 10:36:22    Post IP:111.206.18.137[只看该作者]

这个是预设参数
左腿长:4
峰谷最宽:20
峰谷最窄:4

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2013/10/8 11:14:15    Post IP:58.246.57.26[只看该作者]

最后加这么一句

DRAWLINE(REF(H,prePeakDist)=HHV(Ref(H,prePeakDist),左腿长),prePeakHigh,REF(H,1)=HHV(H,左腿长),lastPeakHigh,0);



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部