以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  交易策略发布专区  (http://weistock.com/bbs/list.asp?boardid=10)
----  [原创]顾比倒数线。金字塔实现的顾比倒数线(非常精简)  (http://weistock.com/bbs/dispbbs.asp?boardid=10&id=6337)

--  作者:阿火
--  发布时间:2011/4/27 16:00:57
--  [原创]顾比倒数线。金字塔实现的顾比倒数线(非常精简)

顾比倒数线,以下跌趋势为例,如果寻找顾比倒数线:

    首先找到下跌趋势线的最低点(标注为1的那条蜡烛线),这是第一只“重要的蜡烛线”。然后沿着这条蜡烛线向左移动,直到遇见另一只“最高价高于蜡烛线1”的蜡烛线,这就是我们要找的第二只“重要的蜡烛线”。再沿着这只蜡烛线向左移动,直到遇见下一只“最高价的蜡烛线”,这就是第三只“重要的蜡烛线”。此时,沿着第三只蜡烛线的顶端画一条直线,这就是“顾比倒数线”;

    上升曲线同理!

 

以前看过一个文华版本的顾比倒数线,用了很大蝙蝠的代码。

 

金字塔只要10行。以下代码把每根K线图的“第三只重要蜡烛线”的高点、低点全部计算出来了

逐K线模式和序列模式均适用:

 

DISTL:=NEWLBARS(L,1);
DISTH:=NEWHBARS(H,1);
HI20:=REF(HHV(H,20),1);
LO20:=REF(LLV(L,20),1);
GBD1:=REF(L,DISTL);
GBD2:=REF(GBD1,DISTL);
GBD:IF(GBD2>0,MAX(LLV(L,20),GBD2),LLV(L,20));//第三只重要蜡烛线的低点

GBG1:=REF(H,DISTH);
GBG2:=REF(GBG1,DISTH);
GBG:IF(GBG2>0,MIN(HHV(H,20),GBG2),HHV(H,20));//第三只重要蜡烛线的高点

 

注意:如果第三只重要的蜡烛线找不到的话(比如第二只已经是历史最高点或者最低点),就用20周期的高点(低点)代替

 

顾比倒数线一般用于止损,和均线等指标配合,也可用于止盈

比如:进场后,5个点止损,浮动盈利达到15个点后,启动顾比倒数线止损。具体用法大家各自发挥

申请加精!

[此贴子已经被作者于2011-4-27 16:07:03编辑过]

--  作者:海阔天空
--  发布时间:2011/4/27 16:21:58
--  
好贴,
--  作者:阿火
--  发布时间:2011/4/27 16:47:38
--  

顾比倒数线实现的移动止损效果图:

图片点击可在新窗口打开查看

[此贴子已经被作者于2011-4-27 16:49:48编辑过]

--  作者:qkl586
--  发布时间:2011/4/27 19:02:35
--  如何做到止损?

老师好!我把你的顾比倒数线放到模型中,虽然有连线,但是没有看出高低价突破连线,不知道如何止损,麻烦指点一下。注:图表上的买卖箭头是我的模型出来的。

图片点击可在新窗口打开查看


--  作者:阿火
--  发布时间:2011/4/27 20:26:38
--  

我写的只是 顾比倒数线。具体运用还结合自己的买卖条件

比如 :cross(ma5,ma30) 买入,用顾比倒数线做浮动止损


--  作者:xian_0_9
--  发布时间:2011/4/27 23:10:43
--  
谢谢大师!
--  作者:qkl586
--  发布时间:2011/4/27 23:46:21
--  为何同时出现两条线?
谢谢老师的回复。但是为何我套用你的公式之后出来的是上下两条线呢?正常的应该是在一个时间段只出现支撑线或者阻力线啊。
--  作者:阿火
--  发布时间:2011/4/28 10:01:51
--  

我是把2条线都做出来,定义好趋势后,自行按需调用

看来不懂的人还是挺多,我这里给个实例吧

 

variable:zs=c,maxhl=c;

//把以上顾比线的代码复制一下
DISTL:=NEWLBARS(L,1);
DISTH:=NEWHBARS(H,1);
HI20:=REF(HHV(H,20),1);
LO20:=REF(LLV(L,20),1);
GBD1:=REF(L,DISTL);
GBD2:=REF(GBD1,DISTL);
GBD:=IF(GBD2>0,MAX(LLV(L,20),GBD2),LLV(L,20));

GBG1:=REF(H,DISTH);
GBG2:=REF(GBG1,DISTH);
GBG:=IF(GBG2>0,MIN(HHV(H,20),GBG2),HHV(H,20));
nn:=barslast(date<>ref(date,1))+1;
entertime:=nn>=m and time<=144500;
exittime:=time>=150900;
if holding>0 then 止损1:zs;
if holding<0 then 止损2:zs;
ma5:=ma(c,5);
ma30:=ma(c,30);
long:=cross(ma5,ma30);//多单进场条件
short:=cross(ma30,ma5);//空单进场条件

 

//下破移动止损线后离场
if holding>0 and (c<zs or exittime) then sell(1,1,limitr,c);
if holding<0 and (c>zs or exittime) then sellshort(1,1,limitr,c);

 

//开仓语句

if holding=0 and entertime and long then begin
 buy(1,1,limitr,c);
 zs:=gbd;//调用顾比倒数线做为止损
 maxhl:=h;//记录当时的高点
end

 

if holding=0 and entertime and short then begin
 buyshort(1,1,limitr,c);
 zs:=gbg;//调用顾比倒数线做为止损
 maxhl:=L;
end

 

if holding<0 and l<maxhl then begin //创新低后,重新定位离场位,以实现浮动止损
 maxhl:=l;
 zs:=gbg;
end

 

if holding>0 and h>maxhl then begin //创新高后,重新定位离场位,以实现浮动止损
 zs:=gbd;
 maxhl:=h;
end

[此贴子已经被作者于2011-4-28 10:03:10编辑过]

--  作者:qkl586
--  发布时间:2011/4/28 22:56:09
--  学习
谢谢老师的无私奉献,慢慢研究学习图片点击可在新窗口打开查看
--  作者:qkl586
--  发布时间:2011/4/30 17:55:37
--  能否请老师把这个转换为金字塔的?

//飞狐顾比倒数源码公式:
ff:=l;
fhf:=h;
fgf:=h;
ftf:=l;
fdf:=l;
zdtf:=c;
zqf:=c;
zqtf:=c;
{顾比倒数进场}
<%
f=ffl.vardata("ff")
fh=ffl.vardata("fhf")
fg=ffl.vardata("fgf")
ft=ffl.vardata("ftf")
fd=ffl.vardata("fdf")
zq=ffl.vardata("zqf")
zqt=ffl.vardata("zqtf")
zdt=ffl.vardata("zdtf")

zq(1)=0
zq(2)=0
zqt(1)=0
zqt(2)=0
tj=0
n=ubound(f)
for i=2 to n
k1=0
k2=0
k3=0
ii=i-2
for j=ii to 2 step -1
  if f(j)<f(j-1) and f(j)<f(j-2) and f(j)<f(j+1) and f(j)<f(j+2) then
    k1=j
    exit for
  end if
next
j=k1-1

while j>=0 and tj=0
  if fh(j)>fh(k1)  then
    k2=j
    tj=1
  else
    j=j-1
  end if
wend

  j=k2-1
  tj=0
while j>=0 and tj=0
   if fh(j)>fh(k2)   then
    k3=j
    tj=1
   else
    j=j-1
   end if
wend
 
if k3>0 then
  fg(i)=fh(k3)
  zq(i)=k3
else
  fg(i)=fg(i-1)
  zq(i)=zq(i-1)+1
end if
next

ffl.vardata("fgf")=fg
ffl.vardata("zqf")=zq

\'止损线\'
for i=2 to n
k1=0
k2=0
k3=0
ii=i-2
for j=ii to 2 step -1
  if fh(j)>fh(j-1) and fh(j)>fh(j-2) and fh(j)>fh(j+1) and fh(j)>fh(j+2)  then
   k1=j
   exit for
  end if
next
tj=0
j=k1-1
while j>=0 and tj=0
  if fh(j)<fh(k1)  then
   k2=j
   tj=1
  else
   j=j-1
  end if
wend
if k2>0 then
  fd(i)=fh(k2)
  zdt(i)=k2
else
  fd(i)=fd(i-1)
  zdt(i)=zdt(i-1)+1
end if
j=k2-1
tj=0
while j>0 and tj=0
  if fh(j)<fh(k2)  then
   k3=j
   tj=1
  else
   j=j-1
  end if
wend

if k3>0 then
  ft(i)=fh(k3)
  zqt(i)=k3
else
  ft(i)=ft(i-1)
  zq(i)=zqt(i-1)+1
end if 
next
ffl.vardata("ftf")=ft
ffl.vardata("fdf")=fd
ffl.vardata("zqtf")=zqt
ffl.vardata("zdtf")=zdt
%>

止赢线:ftf,linethick1,colorwhite,LINEDOT;//如果想把止损位提高,可选第二根K线做参考线,把ftf改成fdf就可以了;
顾比倒数:fgf,COLORGREEN;//,LINEDOT