加载中…
正文 字体大小:

backset()函数的高级用法

(2009-03-21 09:20:24)
标签:

杂谈

分类: 公式
backset()函数的高级用法
    作者:南客(飞狐首席技术支持专家)    发帖时间:2003-7-6
    帖子来源:http://bbs.macd.cn/viewthread.php?tid=259779

    一、问题:如何在最后一根K线的前第6天,作上标记?
    1、先建立一个名为backset-test的公式,代码如下:
    islastbar{该周期是否最后一个周期。最后一个周期返回值为1,其余为0}

    观察指标线的图形,正如注释所述,最后一天显示为1,这个1我们可理解为信号(条件)成立。其余时间,指标的数值为0,可理解为信号(条件)不成立。

   2、巧用backset()函数:
    ①bacdset(x,n)注释:向前赋值,若X非0则把当前周期及前N-1周期的数值设置为1;
    ②示例:把信号向前移。
   tj1:=islastbar;{最后一天的条件}
    tj2:backset(tj1,6);
    观察tj2指标线图,发现最后6天的tj2信号都是1,即一个高度为1的矩形。公式中,还无法判断哪天是倒数第6天。

    3、显然倒数第6天,是上面矩形的前沿,如何在公式中,表达这个矩形的前沿?
   容易想到的办法:
    ①倒数第6天的当天,tj2为1,更早的1天tj2=0,因此可以编出如下代码:
    tj1:=islastbar;{最后一天的条件}
    tj2:=backset(tj1,6);
    tj3:tj2 and ref(tj2,1)=0;

    ②倒数第6天的当天,tj2为1,更早的1天tj2=0,即当天tj2比早一天的tj2更大,因此可以编出如下代码:
   tj1:=islastbar;{最后一天的条件}
    tj2:=backset(tj1,6);
    tj3:tj2>ref(tj2,1);

    ③倒数第6天的当天,tj2为1,更早的1天tj2=0,可以想象为tj2指标线上穿了一条高度为0.5的水平线,因此可以编出如下代码:
   tj1:=islastbar;{最后一天的条件}
    tj2:=backset(tj1,6);
    tj3:cross(tj2,0.5);

    ④巧用filter()过滤函数,filter(x,N),若X非0,可以让X保持当天的值不变,且过滤其后N个周期使之数值为0。
    tj1:=islastbar;{最后一天的条件}
    tj2:=backset(tj1,6);
    tj3:filter(tj2,5);{第1次的tj2保持为1不变,其后的5个周期过滤为0}

    这样就初步找到了4种方法,可以标记倒数第6天,若想用图标来标记的话,代码例举如下:
    tj1:=islastbar;{最后一天的条件}
    tj2:=backset(tj1,6);
    tj3:=tj2>ref(tj2,1);
    drawicon(tj3,L,1);

    二、精彩公式代码欣赏:
    1、清扬兄的波浪公式{大量应用了backset()函数技巧,使用了Dll,需要的 可以到巫山论坛,向清扬兄要文件}:
    HD:="jgb.HD"(N);LD:="jgb.LD"(N);
    DRAWLINE(LD,L,HD,H,0),COLORFF9900;DRAWLINE    (HD,H,LD,L,0),COLORFF9900;
    J1:=BACKSET(ISLASTBAR,MIN(BARSLAST(HD),BARSLAST(LD))+1);    J2:=J1>REF(J1,1);
    DRAWLINE(J2,IF(HD,H,L),ISLASTBAR,IF(BARSLAST(HD)>BARSLAST(LD),H,L),0),COLORFF9900;
    R1:=BACKSET(ISLASTBAR,BARSLAST(HD)+1); S1:=R1>REF(R1,1); {前一高}
    T1:=BACKSET(ISLASTBAR,BARSLAST(LD)+1); U1:=T1>REF(T1,1); {前一低}
    R2:=BACKSET(S1,REF(BARSLAST(HD),1)+2); S2:=R2>REF(R2,1); {前二高}
    T2:=BACKSET(U1,REF(BARSLAST(LD),1)+2); U2:=T2>REF(T2,1); {前二低}
    短高:REF(H,BARSLAST(S1)),LINETHICK1;   短低:REF(L,BARSLAST(U1)),LINETHICK1;
    短比:(C-短低)/(短高-短低),LINETHICK0;
DRAWLINE(S2,H,S1,H,1);          DRAWLINE(U2,L,U1,L,1);
    V1:=LINEVALUE(S2,H,S1,H,0,1);   V2:=LINEVALUE(U2,L,U1,L,0,1);
DRAWICON(CROSS(C,V1),V1,4);     DRAWICON(CROSS(V2,C),V2,5);
DRAWICON(CROSS(C,短高),短高,4);  DRAWICON(CROSS(短低,C),短低,5);

    A3:=H
    B3:=REF(H,REF(BARSLAST(HD),1)+1)>REF(H,REF(BARSLAST(HD),1)+2+REF(BARSLAST(HD),REF(BARSLAST(HD),1)+2));
    D3:=A3 AND B3 AND HD; E3:=BACKSET(D3,REF(BARSLAST(HD),1)+2);   
    HZ:=E3>REF(E3,1);{找出全部长期高点}
    A4:=L>REF(L,REF(BARSLAST(LD),1)+1);
    B4:=REF(L,REF(BARSLAST(LD),1)+1)
    D4:=A4 AND B4 AND LD; E4:=BACKSET(D4,REF(BARSLAST(LD),1)+2);    LZ:=E4>REF(E4,1);{找出全部长期低点}
    R3:=BACKSET(ISLASTBAR,BARSLAST(HZ)+1); S3:=R3>REF(R3,1); {前一长高}
    T3:=BACKSET(ISLASTBAR,BARSLAST(LZ)+1); U3:=T3>REF(T3,1); {前一长低}
    长高:REF(H,BARSLAST(S3)),LINETHICK2;   长低:REF(L,BARSLAST(U3)),LINETHICK2;
    长比:(C-长低)/(长高-长低),LINETHICK0;
    PARTLINE(1,长低+(长高-长低)/2),COLORRED; PARTLINE(1,长低+(长高-长低)/3),POINTDOT,COLORDDDDDD;
    PARTLINE(1,长低+2*(长高-长低)/3),POINTDOT,COLORDDDDDD;

    {下面做大盘叠加,从可见的第一根K线开始。}
    A:=BARSCOUNT(C)=SYSPARAM(2); B:=BARSLAST(A); CC:=REF    (INDEXC,B)/REF(C,B);
    DD1:=INDEXO/CC; DD2:=INDEXH/CC; DD3:=INDEXL/CC; DD4:=INDEXC/CC;
    STICKLINE(M AND DD4>=REF(DD4,1),DD3,DD1,0.1,0),COLORFF66FF;
    STICKLINE(M AND DD4>=REF(DD4,1),DD4,DD2,0.1,0),COLORFF66FF;
    STICKLINE(M AND DD4>=REF(DD4,1),DD1,DD4,7,1),COLORFF66FF;
   STICKLINE(M AND DD4
   STICKLINE(M AND DD4
    背离系数:100*(C-DD4)/DD4,LINETHICK0;

    三、本坛公式高手yyzzqq的精彩代码(macd金叉与死叉之间的最大值)
    A1:=CROSS("MACD.MACD",0);
    A2:=BARSLAST(A1);
    A3:=HHVBARS("MACD.MACD" ,A2+1);
    A4:=BACKSET(REF(A3>=1,1) AND  "MACD.MACD"<0,A3);
    A5:=BACKSET(REF(A4=0,1) AND A4=1,2);
    最大值:IF(FILTER(A5,2),"MACD.MACD",0);
    DRAWICON(最大值>0,最大值,1);

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
后一篇:公式一
  • 评论加载中,请稍候...
发评论

       

    验证码: 请点击后输入验证码 收听验证码

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    后一篇 >公式一
      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有