最新公告
  • 欢迎您光临九毛八公式指标网www.9m8.cn,本站全新改版试运行,期间内容全部免费,欢迎下载!欢迎加入本站VIP
  • 大智慧公式源码编程技巧235例之二

    正文概述    2024-04-14 21:34:50  
    0070--五彩K线常用颜色
    0071--公式设定注意事项
    0072--交易系统公式交易类型
    0073--可供引用的周期类型
    0074--引用表达式
    0075--符号一览表
    0076--横向统计
    0077--扩展数据
    0078--峰点公式
    0079--窄幅整理
    0080--N天前到M天前之间的最高价
    0081--某时间段最高价
    0082--二十日内是否有过涨停
    0083--放量创新高
    0084--突破长期平台整理
    0085--尾盘大单拉升或打压
    0086--MACD柱状体变宽语法
    0087--傅立叶变换
    0088--周期切换
    0089--公历农历
    0090--添加自己的特色指针子选单
    0091--5日均线转折价
    0092--平均真实波幅 ATR BANDS
    0093--SYSPARAM(1)函数的说明
    0094--真实波幅AND平均真实波幅。
    0095--条件成立当日低点向后划水平线直到水平线跌破。
    0096--分析周期切换 均线参数自动切换(1)
    0097--分析周期切换 均线参数自动切换(2)
    0098--调用某某公式内的时间数列线
    0099--三角函数AND角度线
    0100--个股和大盘联动K线

    0051--基本配色:灰色峰

    灰色峰 ((16色)白色-黑色)

    VarA:=EMA(REF(CLOSE,1),4);
    色彩峰:=(SMA(MAX(CLOSE-VarA,0),6,1)/SMA(ABS(CLOSE-VarA),6,1)*100);

    STICKLINE(色彩峰 0,0,色彩峰,5,0),COLORFFFFFF;{白色}
    STICKLINE(色彩峰 0,0,色彩峰*0.9,5,0),COLOREEEEEE;
    STICKLINE(色彩峰 0,0,色彩峰*0.85,5,0),COLORDDDDDD;
    STICKLINE(色彩峰 0,0,色彩峰*0.8,5,0),COLORCCCCCC;
    STICKLINE(色彩峰 0,0,色彩峰*0.75,5,0),COLORBBBBBB;
    STICKLINE(色彩峰 0,0,色彩峰*0.7,5,0),COLORAAAAAA;
    STICKLINE(色彩峰 0,0,色彩峰*0.65,5,0),COLOR999999;
    STICKLINE(色彩峰 0,0,色彩峰*0.6,5,0),COLOR888888;
    STICKLINE(色彩峰 0,0,色彩峰*0.55,5,0),COLOR777777;
    STICKLINE(色彩峰 0,0,色彩峰*0.5,5,0),COLOR666666;
    STICKLINE(色彩峰 0,0,色彩峰*0.45,5,0),COLOR555555;
    STICKLINE(色彩峰 0,0,色彩峰*0.4,5,0),COLOR444444;
    STICKLINE(色彩峰 0,0,色彩峰*0.35,5,0),COLOR333333;
    STICKLINE(色彩峰 0,0,色彩峰*0.3,5,0),COLOR222222;
    STICKLINE(色彩峰 0,0,色彩峰*0.25,5,0),COLOR111111;
    STICKLINE(色彩峰 0,0,色彩峰*0.2,5,0),COLOR000000;{黑色}

    -------------------------------------------------------------------------------
    0052--基本配色:绿蓝峰

    绿蓝峰 ((16色)翠绿-深蓝)

    VarA:=EMA(REF(CLOSE,1),4);
    色彩峰:=(SMA(MAX(CLOSE-VarA,0),6,1)/SMA(ABS(CLOSE-VarA),6,1)*100);

    STICKLINE(色彩峰 0,0,色彩峰,5,0),COLOR66FF00;{翠绿}
    STICKLINE(色彩峰 0,0,色彩峰*0.9,5,0),COLOR66EE00;
    STICKLINE(色彩峰 0,0,色彩峰*0.85,5,0),COLOR66DD00;
    STICKLINE(色彩峰 0,0,色彩峰*0.8,5,0),COLOR66CC00;
    STICKLINE(色彩峰 0,0,色彩峰*0.75,5,0),COLOR66BB00;
    STICKLINE(色彩峰 0,0,色彩峰*0.7,5,0),COLOR66AA00;
    STICKLINE(色彩峰 0,0,色彩峰*0.65,5,0),COLOR669900;
    STICKLINE(色彩峰 0,0,色彩峰*0.6,5,0),COLOR668800;
    STICKLINE(色彩峰 0,0,色彩峰*0.55,5,0),COLOR667700;
    STICKLINE(色彩峰 0,0,色彩峰*0.5,5,0),COLOR666600;
    STICKLINE(色彩峰 0,0,色彩峰*0.45,5,0),COLOR665500;
    STICKLINE(色彩峰 0,0,色彩峰*0.4,5,0),COLOR664400;
    STICKLINE(色彩峰 0,0,色彩峰*0.35,5,0),COLOR663300;
    STICKLINE(色彩峰 0,0,色彩峰*0.3,5,0),COLOR662200;
    STICKLINE(色彩峰 0,0,色彩峰*0.25,5,0),COLOR661100;
    STICKLINE(色彩峰 0,0,色彩峰*0.2,5,0),COLOR660000;{深蓝}

    -------------------------------------------------------------------------------
    0053--随机K线最高、最低价向右平行线

    DRAWSL(SYSPARAM(1)=BARPOS,REF(L,SYSPARAM(1)=SUM(1,0)-1),0,0,1),COLORGREEN;
    DRAWSL(SYSPARAM(1)=BARPOS,REF(H,SYSPARAM(1)=SUM(1,0)-1),0,0,1),COLORRED;
    -------------------------------------------------------------------------------
    0054--显示无数条线

    例一:

    {先显示200条黄色的}
    A1:POLYLINE(C 0,C+0.01),COLORYELLOW;
    A2:=POLYLINE(C 0,C+0.02);
    A3:=POLYLINE(C 0,C+0.03);

    A199:=POLYLINE(C 0,C+1.99):
    A200:POLYLINE(C 0,C+2) COLORYELLOW;
    {再显示200条绿色的}
    B1:POLYLINE(C 0,C+2.01) COLORGREEN;
    B2:=POLYLINE(C 0,C+2.02) ;
    B3:=POLYLINE(C 0,C+2.03) ;

    B199:=POLYLINE(C 0,C+3.99):
    B200:POLYLINE(C 0,C+4) COLORGREEN;
    {想显示别的颜色继续 }

    例二:

    {先显示200条黄色的}
    A1:=POLYLINE(C 0,C+0.01);
    A2:=POLYLINE(C 0,C+0.02);
    A3:=POLYLINE(C 0,C+0.03);

    A199:=POLYLINE(C 0,C+1.99);
    A200:=POLYLINE(C 0,C+2);
    A1 OR A2 OR A3 OR OR A199 OR A200,COLORYELLOW;
    {再显示200条绿色的}
    B1:=POLYLINE(C 0,C+2.01);
    B2:=POLYLINE(C 0,C+2.02) ;
    B3:=POLYLINE(C 0,C+2.03) ;

    B199:=POLYLINE(C 0,C+3.99):
    B200:=POLYLINE(C 0,C+4) ;
    B1 OR B2 OR B3 OR OR B199 OR B200,COLORGREEN;
    {想显示别的颜色继续 }
    -------------------------------------------------------------------------------
    0055--底背离

    LLV(L,60)=L) AND NOT(LLV(DEA,60)=DEA);
    -------------------------------------------------------------------------------
    0056--顶背离

    HHV(H,60)=H) AND NOT(HHV(DEA,60)=DEA);
    -------------------------------------------------------------------------------
    0057--N次金叉、死叉

    0轴上二次金叉

    COUNT(CROSS(DIF,DEA) AND DEA 0,20)=2 AND CROSS(DIF,DEA) AND
    DEA

    0轴上三次金叉

    COUNT(CROSS(DIF,DEA) AND DEA 0,20)=3 AND CROSS(DIF,DEA) AND
    DEA

    0轴上四次金叉

    COUNT(CROSS(DIF,DEA) AND DEA 0,20)=4 AND CROSS(DIF,DEA) AND DEA

    二次金叉

    EXPLAIN(COUNT(CROSS(DIF,DEA),20)=2 AND CROSS(DIF,DEA);

    二次死叉

    COUNT(CROSS(DEA,DIF),20)=2 AND CROSS(DEA,DIF);
    -------------------------------------------------------------------------------
    0058--5分钟副图显示15分钟K线

    建公式:0015

    C15:CLOSE;
    O15:OPEN;
    H15:HIGH;
    L15:LOW;

    建公式:十五K线

    C15:= 0015.C15#MIN15
    O15:= 0015.O15#MIN15
    H15:= 0015.H15#MIN15
    L15:= 0015.L15#MIN15

    TI:=OPENMINUTES(TIME)=10 OR OPENMINUTES(TIME)=25 OR OPENMINUTES(TIME)=40 OR OPENMINUTES(TIME)=55 OR OPENMINUTES(TIME)=70 OR OPENMINUTES(TIME)=85 OR OPENMINUTES(TIME)=100 OR OPENMINUTES(TIME)=115 OR OPENMINUTES(TIME)=130 OR OPENMINUTES(TIME)=145 OR OPENMINUTES(TIME)=160 OR OPENMINUTES(TIME)=175 OR OPENMINUTES(TIME)=190 OR OPENMINUTES(TIME)=205 OR OPENMINUTES(TIME)=220 OR OPENMINUTES(TIME)=235;

    HH15:=IF(TI,H15,C15);
    LL15:=IF(TI,L15,C15);

    STICKLINE(C15 O15,C15,O15,10,0),COLORRED;
    STICKLINE(C15 O15 AND H15 C15,HH15,C15,0.1,0),COLORRED;
    STICKLINE(C15 O15 AND O15 L15,O15,LL15,0.1,0),COLORRED;
    STICKLINE(C15 =O15,C15,O15,10,0),COLORGREEN;
    STICKLINE(C15 =O15 AND C15 L15,C15,LL15,0.1,0),COLORGREEN;
    STICKLINE(C15 =O15 AND H15 O15,HH15,O15,0.1,0),COLORGREEN;

    注:以大陆股市为例,四小时,其他市场如超过四小时,可在中间语句 TI:= 中以15为系数顺序加足,如:OR 250 OR 265 等等。

    -------------------------------------------------------------------------------
    0059--移动成本

    不知道函数算法,计算误差在所难免。调整参数 % 可看到不同的移动成本。

    ///筹码%
    INPUT:%(90,1,100);
    A:=AMOUNT/V/100;
    成本:FLOOR(COST(50-%/2)*100)/100,COLORYELLOW,LINETHICK0;
    ~:CEILING(COST(50+%/2)*100)/100,COLORYELLOW,LINETHICK0;
    集中度:INTPART((~-成本)/(~+成本)*1000)/10,COLORGREEN;
    平均成本:ROUND(COST(50)*100)/100,LINETHICK0;
    穿透力:(WINNER(C)-REF(WINNER(C),1))/V*CAPITAL,LINETHICK0;//计算误差大
    //穿透力2:(WINNER(C)-WINNER(O))/V*CAPITAL,LINETHICK0;//这一写法还是误差大
    获利比例:ROUND(WINNER(C)*1000)/10,LINETHICK0;
    { www.9m8.cn 九毛八公式指标网_股票}

    -------------------------------------------------------------------------------
    0060--妙用SUMBARS()函数

    SUMBARS(X,N)

    函数的用法如下:

    向前累加到指定值到现在的周期数。

    用法:

    SUMBARS(X,A)

    将X向前累加直到大于等于A,返回这个区间的周期数

    例如:

    SUMBARS(VOL,CAPITAL)

    1、设计一个指标,计算当日成交量是几天内的最高成交量?

    2、设计一个指标,计算当日最高价是几天内的最高价?

    提示:直接用HHV()函数无法得到正确结果。

    例一:

    B:=HHV(H,0);
    A:=IF(BARPOS=1,B[DATACOUNT]*1.2,H);
    价:SUMBARS(REF(A,1)-A,0);

    U:=HHV(V,0);
    S:=IF(BARPOS=1,U[DATACOUNT]*1.2,V);
    量:SUMBARS(REF(S,1)-S,0);

    或:

    VH:=HHV(VOL,0);
    FV:=IF(BARPOS=1,VH[DATACOUNT]*1.2,VOL); //VH[DATACOUNT]是历史最高成交量
    量创新高周期数:SUMBARS(REF(FV,1)-FV,0);
    {这里的关键是 REF(FV,1)-FV ,想想看写成 FV-REF(FV,1) 行不行?}

    另一种写法:

    VH:=HHV(VOL,0);
    FV:=VOL;
    FV[1]:=VH[DATACOUNT]*1.2; //VH[DATACOUNT]是历史最高成交量
    量创新高周期数:SUMBARS(REF(FV,1)-FV,0);
    {这里的关键是 REF(FV,1)-FV ,想想看写成 FV-REF(FV,1) 行不行?}

    代码已经成功了,原理是什么呢?

    假设某日成交量是3日内的最大成交量,则必有:

    REF(VOL,3)-VOL =0

    等价于:

    (REF(VOL,3)-REF(VOL,2))+(REF(VOL,2)-REF(VOL,1))+(REF(VOL,1)-VOL) =0

    意思就是说, 昨成交量与今成交量之差 逐日累加,直到某日累加和大于等于0,则这之间的天数,就是所要求的日数。

    我们再来看看SUMBARS()函数的含义:

    SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数。

    显然上面的式子:

    (REF(VOL,3)-REF(VOL,2))+(REF(VOL,2)-REF(VOL,1))+(REF(VOL,1)-VOL) =0

    可以写成:

    SUMBARS(REF(VOL,1)-VOL, 0);

    为何第1周期的成交量要替换成比所有成交量都大的数值?最后,再来思考一个问题,把题目中的求 最大 ,改成求 最小 ,即多少天内是最小的?

    例二:

    B:=HHV(H,0);
    A:=IF(BARPOS=1,9999,H);
    Z:SUMBARS(REF(A,1)-A,0);
    DRAWNUMBER(BARPOS=SYSPARAM(1),1,Z,0)ALIGN4,COLORWHITE;

    U:=HHV(V,0);
    S:=IF(BARPOS=1,999999999999,V)
    Y:SUMBARS(REF(S,1)-S,0);
    DRAWNUMBER(BARPOS=SYSPARAM(1),1,Y,0)ALIGN3,COLORYELLOW;

    例三:

    HH:=IF(BARSCOUNT(C)=1,9999,H);
    ZH:SUMBARS(REF(HH,1)-HH,0);//价创了N周期新高

    VH:=IF(BARSCOUNT(C)=1,99999999,V);
    HV:SUMBARS(REF(VH,1)-VH,0);//量创了N周期新高

    LL:=IF(BARSCOUNT(C)=1,0,L);
    ZL:SUMBARS(LL-REF(LL,1),0);//价创了N周期新低

    VL:=IF(BARSCOUNT(C)=1,0,V);
    LV:SUMBARS(VL-REF(VL,1),0);//量创了N周期新低

    附注:

    用99999999等具体数值,最好是尽可能大的数值(比如单精数的上限),否则仍有可能无法全部完成计算,比如上证指数的年线,成交量最大时,仍然超过了99999999。

    倒数第6天的最高价格怎么表示?

    FH:=HIGH;
    FH[DATACOUNT-5]; //倒数第6天的最高价格。

    [DATACOUNT]

    返回K线的数量,即总共有多少根K线。

    -------------------------------------------------------------------------------
    0061--取得K线的序号

    取得K线的序号,正序有下面几种方法:(从1数起)

    BARPOS;

    SX:BARSCOUNT(CLOSE);

    SY:SUM(1,0);

    DATACOUNT;{不随光标变动,只显示最后K线序号}

    逆序可用下列方法取得:(从1数起)

    (DATACOUNT-BARPOS)+1;

    (DATACOUNT-BARSCOUNT(CLOSE))+1;

    (DATACOUNT-SUM(1,0))+1;

    -------------------------------------------------------------------------------
    0062--变量宣告

    指定叙述:经过指定宣告后,才认识AA、BB、CC,否则会出现 未定义的标示符号 。所谓 定义 ,程序语言的用语,就叫做 变量宣告 。

    AA:OPEN;{宣告OPEN,指定给AA 输出的表达式}

    BB:HIGH,LINETHICK0;{宣告HIGH,指定给BB 输出的表达式 秀数值但不秀线图}

    CC:=CLOSE;{宣告CLOSE,指定给CC 不输出的表达式 不秀数值也不秀线图}

    DD:(AA+BB+CC)/3;{;分号,告诉程序要换行执行了}

    EE:=(AA+CC)/2;
    PARTLINE(CLOSE 0,EE);{秀线图但不秀数值}

    注:{ }大括号内或在//后面,可用来输入公式批注。

    -------------------------------------------------------------------------------
    0063--跨周期引用数据

    (一)指针线公式的运算,大部份都是代入开、高、低、收、量等数据去运算的。

    (二)开、高、低、收、量又分成下面四种型式出现:

    开、高、低、收、量(基本的日K线数据)
    开、高、低、收、量(周K线数据)
    开、高、低、收、量(月K线数据)
    开、高、低、收、量(年K线数据)

    (三)所以当指针线公式运算,要代入下面数据时:

    开、高、低、收、量(周K线数据)
    开、高、低、收、量(月K线数据)

    #WEEK 和 #MONTH 就会派上用场。

    (四)举例:

    公式A.建立一个专门被用来引用(QUOTE)的公式区。

    公式名称:QU

    A1:(OPEN+HIGH+LOW+CLOSE)/4;

    说明:上面公式的运算,是代入开、高、低、收(当前周期K线数据)运算的。

    公式B.

    公式名称:AA

    AA: QU.A1#WEEK

    说明:将下面公式的运算,代入开、高、低、收(周K线数据)运算。

    (OPEN+HIGH+LOW+CLOSE) / 4

    公式C.

    公式名称:BB

    BB: QU.A1#MONTH

    说明:将下面公式的运算,代入开、高、低、收(月K线数据)运算。

    (OPEN+HIGH+LOW+CLOSE)/4

    附注:

    可供引用的周期类型有:

    MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH

    分别表示将1,5,15,30,60分钟K线数据,以及日,周,月K线数据,代入被引用的公式,进行运算。

    意义:

    可将大周期内跑的数据,引用到小周期内来跑。将小周期内跑的数据,引用到大周期内来跑,就会有问题,因为时间横坐标不一样了。

    公式(1):先建立即将被引用的表达式

    将公式建立在:技术指针 ( ●主图叠加 ○主图 )

    公式名称:NH

    AA:=HIGH REF(HIGH,1);{不输出的表达式,如果被引用还是会变成不输出的表达式}
    BB:=BARSLAST(AA=1);
    CC:REF(HIGH,BB); {输出的表达式,如果被引用还是会变成输出的表达式}

    说明:

    上面公式的运算,是以当周期时间数列数据运算的。

    公式(2):

    将公式建立在:技术指针 ( ●主图叠加 ○主图 )

    公式名称:NHH

    AA: NH.AA#WEEK {不输出的表达式}
    BB: NH.BB#WEEK
    CC: NH.CC#WEEK {输出的表达式}
    DRAWNUMBER(ISLASTBAR,CC,CC,2);
    { www.9m8.cn 九毛八公式指标网_股票指标公式}

    说明:

    上面公式的运算,是以周周期时间数列数据运算的。


    -------------------------------------------------------------------------------
    0064--未来数据、未知数据

    写公式,首先要对已知数据(过去式)、未知数据(未完成式、现在进行式)有通盘的认知。

    可将 未来 分为两种情况:

    1、实时行情中:在一根K线。

    以实时行情中的当前日K线为例。除了O之外,其它H、L、C全有未来之嫌。因为在收盘之前,拉高、打压是司空见惯的事,谁也不能保证H、L不会创出当天的新高和新低,更不用说C了。又如日线周期公式 C REF(C,1); ,前一分钟信号成立,后一分钟可能信号就不成立了。另外,如引用了周K和月K数据,因为当前周K和月K还在变动之中,所以也是未来资料。

    2、盘后中:在多根K线。

    因为在盘后,日K中的四大要素O、H、L、C就没有未来之可能了。在盘后,除了周五之外,引用的周K指针也是未来数据。除了在月末,引用的月K指针也是未来数据。

    总而言之,指针公式就分这两种:

    线图信号的确定 全都用已知数据(过去式)来决定。
    线图信号的确定 有用到未知数据(未完成式、现在进行式)来决定。

    ZIG函数

    ZX:ZIG(CLOSE,8);

    最近这次峰点、谷点的确定,也常处在未完成式的状态中。

    打个比喻,线图信号的确定 有用到未知数据(未完成式、现在进行式),例如,在实时盘中一根日K线的收盘价变来变去,指针线图当然随之而起舞。

    ZIG函数只是把格局放大,N的日K组合而成的一根多日K线,这一根多日K线的收盘价变来变去,指针线图当然随之而起舞。

    -------------------------------------------------------------------------------
    0065--主图KD

    在主图上,坐标是以K线的价格为主。如何将在0与100中游走的KD指针附加上去,这是写作指针的基本逻辑观念的运用。

    PARAM#1( N,9,2,100 )
    PARAM#2( M1,3,1,40 )
    PARAM#3( M2,3,1,40 )

    RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100 LINETHICK0;{:=运算过程不显示值与图}
    K:SMA(RSV,3,1),LINETHICK0,COLORWHITE;{LINETHICK0只显值不显图}
    D:SMA(K,3,1),LINETHICK0,COLORYELLOW;

    HH:=SYSPARAM(4);{主图可见K线最高价}
    LL:=SYSPARAM(5);{主图可见K线最低价}

    KK:=K/100*(HH-LL)+LL;
    DD:=D/100*(HH-LL)+LL;

    PARTLINE(1=1,KK),COLORWHITE; {条件成立时,则显示图线形}
    PARTLINE(C 0,DD),COLORYELLOW;

    C;{显示收盘价的值与图线形}
    PARTLINE(C =REF(C,1),C),COLORRED;{显示收盘价的图改成涨红跌绿联机图}
    PARTLINE(C REF(C,1),C),COLORGREEN;

    -------------------------------------------------------------------------------
    0066--描绘K线

    例一:普通

    将下列公式建立在:技术指针 ( ○主图叠加 ●主图 )

    公式名称:KL

    STICKLINE( ISUP , HIGH , LOW , 0.1 , 0 ) , COLORRED ;
    STICKLINE( ISUP , CLOSE , OPEN , 8 , 1 ) , COLORRED ;
    STICKLINE( ISDOWN , HIGH , LOW , 0.1 , 0 ) , COLORCYAN ;
    STICKLINE( ISDOWN , CLOSE , OPEN , 8 , 0 ) , COLORCYAN ;

    STICKLINE( ISEQUAL AND C REF( C , 1 ) , HIGH , LOW , 0.1 , 0 ) , COLORRED ;
    STICKLINE( ISEQUAL AND C REF( C , 1 ) , CLOSE , OPEN , 8 , 0 ) , COLORRED ;
    STICKLINE( ISEQUAL AND C =REF( C , 1 ) , HIGH , LOW , 0.1 , 0 ) , COLORCYAN ;
    STICKLINE( ISEQUAL AND C =REF( C , 1 ) , CLOSE , OPEN , 8 , 0 ) , COLORCYAN ;

    X:=BARSCOUNT( CLOSE ) ;

    {以下是描绘第一个交易日的K线,以补前面含盖的不足}

    STICKLINE( ISEQUAL AND X = 1 , HIGH, LOW, 0.1, 0 ) , COLORRED ;
    STICKLINE( ISEQUAL AND X = 1 , CLOSE , OPEN , 8 , 0 ) , COLORRED ;

    说明:

    ISUP函数:相当于 IF( CLOSE OPEN , 1 , 0 )。

    ISEQUAL函数:相当于 IF( CLOSE=OPEN , 1 , 0 )。

    ISDOWN函数:相当于 IF( CLOSE OPEN , 1 , 0 )。

    STICKLINE函数,画出来的对象有重叠覆盖性: 后画的对象可覆盖先画的对象。

    例二:配色

    STICKLINE( ISUP , HIGH , LOW , 0.1 , 0 ),COLOR04FEFC ;
    STICKLINE( ISUP , CLOSE , OPEN , 8 , 0 ),COLOR0466FC ;
    STICKLINE( ISUP , CLOSE , OPEN , 3 , 0 ),COLOR04FEFC ;
    STICKLINE( ISDOWN , HIGH , LOW , 0.1 , 0 ),COLORFCFE04 ;
    STICKLINE( ISDOWN , CLOSE , OPEN , 8 , 0 ),COLORFC6604 ;
    STICKLINE( ISDOWN , CLOSE , OPEN , 3 , 0 ),COLORFCFE04 ;

    STICKLINE( ISEQUAL AND C REF( C , 1 ) , HIGH , LOW , 0.1 , 0 ),COLOR04FEFC ;
    STICKLINE( ISEQUAL AND C REF( C , 1 ) , CLOSE , OPEN , 8 , 0 ),COLOR0466FC ;
    STICKLINE( ISEQUAL AND C REF( C , 1 ) , CLOSE , OPEN , 3 , 0 ),COLOR04FEFC ;
    STICKLINE( ISEQUAL AND C =REF( C , 1 ) , HIGH , LOW , 0.1 , 0 ),COLORFCFE04 ;
    STICKLINE( ISEQUAL AND C =REF( C , 1 ) , CLOSE , OPEN , 8 , 0 ),COLORFC6604 ;
    STICKLINE( ISEQUAL AND C =REF( C , 1 ) , CLOSE , OPEN , 3 , 0 ),COLORFCFE04 ;

    X:=BARSCOUNT( CLOSE ) ;

    {以下是描绘第一个交易日的K线,以补前面含盖的不足}

    STICKLINE( ISEQUAL AND X = 1 , HIGH, LOW, 0.1, 0 ),COLOR04FEFC ;
    STICKLINE( ISEQUAL AND X = 1 , CLOSE , OPEN , 8 , 1 ),COLOR0466FC ;
    STICKLINE( ISEQUAL AND X = 1 , CLOSE , OPEN , 3 , 1 ),COLOR04FEFC ;

    -------------------------------------------------------------------------------
    0067--分时K线当天K线序号

    范例:开盘第一根分时K线,指定一个值=1给它,其它为0。

    XA:REF(DATE,1) DATE, STICK;

    范例:每天的分时K线,指定它的当天K线序号给它

    XA:=REF(DATE,1) DATE, STICK;

    XB:BARSLAST(XA=1) + 1 ,STICK;

    应用:每天在分时K线,累计成交张数

    XA:=REF(DATE,1) DATE , STICK;

    XB:=BARSLAST(XA=1) + 1 ,STICK;

    SV:SUM( VOL , XB ) ;

    范例:标记今天分时K线的今天K线序号。过了午夜12点,就又要等早盘开盘后序号数字才会出现

    XA:=CURRENTDATE=DATE ;
    XB:=REF(XA , 1) XA ;

    XC:HHVBARS(XB , 0) + XA ;

    应用:13均线今天当下最后数值向后延申,画平台线。

    XA:=CURRENTDATE=DATE ;
    XB:=REF(XA , 1) XA ;

    XC:=HHVBARS(XB , 0) + XA ;

    XD:=MA(C,13);

    XE:=REFX(XD , 300);
    XF:IF(XC =0 , XE , 0) ,LINETHICK0,COLOR99FFFF;
    PARTLINE(XC =1 , XF) ,COLOR99FFFF;

    -------------------------------------------------------------------------------
    0068--系统参数函数

    这组函数,应用在取得当前可视主图区内的一些数字信息,如下所示:

    1.当前十字光标所在位置,那根K线的序号;
    2.当前可视主图区,最初那根K线的序号;
    3.当前可视主图区,最后那根K线的序号;
    4.当前可视主图区,最高价;
    5.当前可视主图区,最低价。

    注:但须调出十字光标后,这组函数才能发生作用。否则回传的值是不确定的。

    SYSPARAM(1)
    SYSPARAM(2)
    SYSPARAM(3)
    SYSPARAM(4)
    SYSPARAM(5)

    函数:SYSPARAM(1)
    说明: 回传当前 十字光标所在位置那根K线的序号

    函数:SYSPARAM(2)
    说明: 回传当前可视主图区 最初那根K线的序号

    函数:SYSPARAM(3)
    说明: 回传当前可视主图区 最后那根K线的序号

    函数:SYSPARAM(4)
    说明: 回传当前可视主图区 最高价

    函数:SYSPARAM(5)
    说明: 回传当前可视主图区 最低价

    范例:

    将公式建立在:技术指针 ( ●主图叠加 ○主图 )

    SS:=SYSPARAM( 1 ) ;
    DD:=SUM( 1 , 0 ) ;

    CC:CLOSE * 1.07 , LINETHICK0 , COLORYELLOW ;

    PARTLINE( SS =DD , CC ) , COLORYELLOW ;

    注:

    DD:SUM( 1 , 0 ) ;
    SS:SYSPARAM( 1 ) ;

    上面两者,显然有明显的不同之处。

    1.DD是一组变量型时间数列,代表K线的序号。

    2.SS是隐含有N组常数型时间数列(N=这支股票的K线总数)。

    DD:SUM(1,0)

    以数学的二维空间F(X)=Y表示:Y=X

    SS:SYSPARAM(1)

    以数学的二维空间F(X)=Y表示,其中A属正整数:Y=A

    SUM(1,0)=SYSPARAM(1)意指,下面两条线交叉成立的那一点:

    Y=X

    Y=A

    范例:

    MA1:=MA(CLOSE,5);
    MA2:=MA(CLOSE,13);

    XA:=CROSS(MA1,MA2) ;

    XB:IF(XA=1,SUM(1,0),0);{条件成立时回传它的K线序号}

    -------------------------------------------------------------------------------
    0069--概率统计

    COUNT,计数。SUM,总数、和。

    当数组为逻辑运算判断的结果时,COUNT和SUM的返回值是一样的。一般习惯上,对于逻辑运算信号,用COUNT统计,返回其它数值的,用SUM统计。

    当COUNT统计一般数值时,数组大于等于1时,计入;小于1时,不计入。这两个函数,主要用于统计。

    用COUNT(CROSS(MA(C,5),MA(C,10)),0);就可以统计出全部的五天均线上穿十天均线的金叉数。

    用SUM(CROSS(MA(C,5),MA(C,10)),0);和以上得出的结果应该是一样的。

    股市的不随机规律,隐藏在统计概率之中。用这两个函数,可以统计很多概率性的规律。

    比如,以两天的收盘价相比,昨天是下跌的,今天的下跌的概率是多少?

    A:=C REF(C,1);
    B:=REF(A,1) AND C REF(C,1);{昨天下跌,今天上涨}
    D:=REF(A,1) AND C=REF(C,1);{昨天下跌,今天平盘}
    E:=REF(A,1) AND C REF(C,1);{昨天下跌,今天下跌}
    F:=COUNT(B,0)+COUNT(D,0)+COUNT(E,0);
    上升概率:100*COUNT(B,0)/F;
    下跌概率:100*COUNT(E,0)/F;
    平盘概率:100*COUNT(D,0)/F;

    从两市指数看,昨天下跌,今天下跌的概率始终大于50%。那么连跌两天之后,第三天收盘的各种概率是多少?

    A:=C REF(C,1) AND REF(C,1) REF(C,2);
    B:=REF(A,1) AND C REF(C,1);{前两天下跌,今天上涨}
    D:=REF(A,1) AND C=REF(C,1);{前两天下跌,今天平盘}
    E:=REF(A,1) AND C REF(C,1);{前两天下跌,今天下跌}
    F:=COUNT(B,0)+COUNT(D,0)+COUNT(E,0);
    上升概率:100*COUNT(B,0)/F;
    下跌概率:100*COUNT(E,0)/F;
    平盘概率:100*COUNT(D,0)/F;

    从指数的输出看,概率更明显了。连跌三天之后呢?

    A:=C REF(C,1) AND REF(C,1) REF(C,2) AND REF(C,2) REF(C,3);
    B:=REF(A,1) AND C REF(C,1);{前三天下跌,今天上涨}
    D:=REF(A,1) AND C=REF(C,1);{前三天下跌,今天平盘}
    E:=REF(A,1) AND C REF(C,1);{前三天下跌,今天下跌}
    F:=COUNT(B,0)+COUNT(D,0)+COUNT(E,0);
    上升概率:100*COUNT(B,0)/F;
    下跌概率:100*COUNT(E,0)/F;
    平盘概率:100*COUNT(D,0)/F;

    规律就更明显了。

    不要小看这些数据。虽然没有有些 高手 做出的成功率达百分之九十左右的公式那么夸张,但很有意义的。要知道股市中的随机因素太多,平衡性很强,稍稍的统计偏向,足可作为有用的参考。

    这只是简单的例子,用这两个函数,可以做出很多的有用的统计数据。多数的交易系统的 胜率 ,可以由此统计出来。

    统计:

    A:=CROSS(C,MA(C,3));
    B:=CROSS(MA(C,3),C);
    D:B*(C-REF(C,BARSLAST(A)));
    月:SUM(D,20);
    季:SUM(D,60);
    半:SUM(D,120);
    年:SUM(D,250);
    总和:SUM(D,0);
    -------------------------------------------------------------------------------
    0070--五彩K线常用颜色
    黑色 COLORBLACK 蓝色 COLORBLUE
    棕色 COLORBROWN 青色 COLORCYAN
    灰色 COLORGRAY 绿色 COLORGREEN
    晶红 COLORMAGENTA 红色 COLORRED
    白色 COLORWHITE 黄色 COLORYELLOW

    -------------------------------------------------------------------------------
    0071--分析家公式设定注意事项
    参数 最多四个参数,每个有最大和最小及缺省值,须有自己名称
    注释 用大括号括起来放在被注释语句之后
    公式名称 由字母或数字组成,在同类公式中必须唯一,最多九个字符
    中间公式 使用 := 来定义名字,不能与系统提供的函数同名
    Param#1-4 对应于参数1-4,大小写敏感
    坐标线位置 最多七个,用分号分隔
    组合公式设置 小公式间用分号隔开
    绘图参数使用 将其插入到指标公式的后面,用逗号分隔开
    区分多条指标线 在指标公式前写上名称并加上一个冒号
    指标线名字的使用 可以当函数名用
    指标线绘制的极限 可同图显示16条指标线
    五彩颜色参数使用 将其插入到指标公式的后面,用逗号分隔开

    -------------------------------------------------------------------------------
    0072--交易系统公式交易类型

    ENTERLONG 多头买入 ENTERSHORT 空头买入
    EXITLONG 多头卖出 EXITSHORT 空头卖出

    -------------------------------------------------------------------------------
    0073--可供引用的周期类型

    MIN1 1分钟线 MIN60 60分钟线
    MIN5 5分钟线 DAY 日线
    MIN15 15分钟线 WEEK 周线
    MIN30 30分钟线 MONTH 月线

    -------------------------------------------------------------------------------
    0074--引用表达式

    引用指标公式 公式名称.指标线名称(参数表)

    引用交易系统公式 SYSTEM.公式名称.交易类型(参数表)
    引用条件选股公式 EXPLORER.公式名称(参数表)
    跨周期引用公式 各种类型公式名称#周期类型(参数表)
    引用任意股票的数据 股票代码$数据名称
    引用扩展数据 EXTDATA(N) 分析家N=1-11 飞狐N=1-13
    引用横向统计日线数据(1-N) ESTDATA(N)
    引用类函数第二个变量参数 类函数名称(第一参数,变量名或变量表达式)

    -------------------------------------------------------------------------------
    0075--符号一览表

    符号 名称 举例 符号 名称 举例
    + 加 X + Y 并且 X Y Y Z
    - 减 X - Y || 或者 X Y || Y Z
    * 乘 X * Y $ 修饰符号 000014$CLOSE
    / 除 X / Y ( 括号 HIGH/(CLOSE+OPEN)
    小于 X Y ) 反括号 HIGH/(CLOSE+OPEN)
    大于 X Y , 逗号 MA(Close,3)
    = 小于等于 X = Y : 输出 输出:CLOSE+OPEN
    = 大于等于 X = Y := 赋值 变量1:=HIGH
    = 等于 X = Y 双引号 000014$OPEN
    {} 注释符号 {注释部分} . 点号 KDJ.K
    // 注释符号 //注释部分 ; 分号 A:=CLOSE;
    AND 并且 X Y AND Y Z # 变周期符号 TMP1:=CLOSE#WEEK
    OR 或者 X Y OR Y Z ## 变周期前一 VOL##DAY
    非 X Y 单引号 大阳线

    -------------------------------------------------------------------------------
    0076--横向统计

    函数:ESTDATA(N)
    描述:取得横向统计日线数据(1-N)
    类别:扩展数据
    参数:N

    说明:在[横向统计管理]中定义并计算数据(本函数仅在日线分析周期有效)。

    用基本公式做出的主图公式和副图公式,显示在个股或指数中,是纵向的,遍历当时显示的个股或指数中的每根K线。然后指标大小、变化、交叉情况等,都体现在某一个股或指数中。甲股和乙股,哪个KDJ中的K值大?用纵向变量(指标),原来就一点招数都没有。又比如,两市A股中,今天有几只个股的收盘价在10日均线之上,用纵向变量(指标)也没有办法,因为纵向变量(指标)只能在某一个股或指数中才可以比较。而多股间横向的比较和统计,是很有参考价值的。所以,相对于原来的纵向变量(指标),就有了横向变量这一说。

    横向指标用在公式中,也是遍历每根K线的,与一般的基本函数的遍历有点不同,因为它的数据来源不同,是对应于每根K线的日子以及哪个日子中对应板块中的个股数和选择条件等。

    横向统计涉及全场数据的计算,而且可以增加到数千项之多,运算量惊人,目前无法做到实时刷新(动态显示),只能手工刷新(建议盘后进行)。

    横向变量主要用于盘后。要动态刷新,目前没有即时刷新的设置,可能考虑到计算量较大吧。要是不怕麻烦,过几分钟就刷新一下(刷新一次,就相当于重新计算一遍),也可以看到 动态 涨跌值排名。

    横向变量在公式中的输出,与K线的日子有绝对的关系,与当时显示的个股或指数没有多大关系,在某个股中的输出和其他任一个股中的输出都一样。

    横向变量所用的统计方法,是对所选板块中的个股或指数,进行全盘的统计。最近所加的 最大值 、 最小值 是两个极值,是对排序头尾的取值。而要取横向排序中的第二名、第三名,单用横向变量目前还做不到。但不排除此功能以后会开发出来。

    排名名次要用扩展数据!横向变量目前做不到。

    如果做横向变量或扩展数据,在当时选择的计算周期如果是日线,则今天刷新, 原本排列 就保存在昨天。横向变量实际上即是横向的,从时间上又是纵向的。

    扩展数据是横向的,引用时从时间上又是纵向的。

    -------------------------------------------------------------------------------
    0077--扩展数据

    函数:EXTDATA(N)
    描述:取得日线扩展数据(1-13); 分析家N取1--11
    类别:扩展数据
    参数:N取1--13

    说明:在[扩展数据管理]中定义并计算数据(本函数仅在日线分析周期有效)。

    有些数据,非常重要,可是随着时间的推移,就再也找不到了。比如说某个股一天之中的总成交次数,又比如说某个股在上个月的1号,涨幅排名是第几?这些信息,要么以后就查不到了,要么在公式中也无法引用。而扩展数据库能解决这些问题。扩展数据库能够随日线保存这些数据,而且是计算好了的结果,所以引用时速度也很快。

    扩展数据有两个用处:1、保存计算值。2、保存计算值的排名结果。目前飞狐的扩展数据,可以最多做13个。太多了好像也没有多大意思,因为扩展数据计算历史数据有点慢,而且也较占空间。历史的数据量大,当然慢了。可是计算好之后,以后只要更新当天的,速度还是较快的。计算扩展数据,某个股,一个交易日,一次只能得到一个结果数据,而且所选之指标,也应该是唯一的。

    想保存所有分笔成交记录?扩展数据是做不到的。

    缺省数据:某一天,或者说个股停盘等原因,没有计算结果,系统就将缺省数据保存到扩展数据库中。

    在进行排序时,有两种排序方式,一种为0-N自然排序,一种为1-1000归一化排序,区别在于:自然排序按自然数来排列名次,排名在第几结果就是几,第一名,返回0;第二名,返回1;第N名,返回N-1。而归一化排序时将排序归一化到0-1000之间,第一位为0,最后一位为1000,采用公式 排名*1000/参加排名的股票数 来进行计算。归一化排序的好处是,不随股票数目的增加而对排序结果有较大的影响。

    怎么引用扩展数据?EXTDATA(N);N指引用第几组扩展数据,从1到13。比如把分笔成交次数的扩展数据建立在第一组中,引用时,就用EXTDATA(1);这个公式,在某个股中,就输出此股在当天的总成交次数。扩展数据,有横向的性质,特别是用排名时。同时又是纵向的,只要有数据,以前的日子里,也可以返回所得值。而且从理论上说,扩展数据库是可以永远保存的。由于计算量较大,目前扩展数据不支持即时刷新。不过可以手工刷新。

    -------------------------------------------------------------------------------
    0078--峰点公式

    为了能找到合适的COND,用于举例子,先介绍一组概念:

    高点:在2N+1根K线中,中间这根K线的H,要大于等于左右N根K线的H。在N+1根K线中,有等高点出现,取最先出现的。
    低点:在2N+1根K线中,中间这根K线的L,要小于等于左右N根K线的L。在N+1根K线中,有等低点出现,取最先出现的。
    峰点:高点和低点,合称为峰点。

    这个定义,意合于技术分析的老祖宗道氏: 只要平均指数的最高点超过了前期的最高点,它就处于牛市时期;当最低点低于前期的最低点时,它处于熊市时期。 这里我们撇开向上、向下分形和分形峰状点等概念,以免把概念复杂化。

    也为了不让公式一来就过于复杂,我们先取N为2来做公式。简介到后面,可以看到,N是可以作为峰点公式的参数进行调整的。

    公式名称:FENG2
    公式说明:供引用
    公式内容:

    {峰点参数暂定为2}
    A:=REF(H,2);{中间K线的最高价}
    B:=A =REF(H,4) AND A =REF(H,3) AND A =REF(H,1) AND A {中间K线的最高价大于等于两边共四根K线的最高价}
    D:=BACKSET(B,3);{将当前位置和之前2个周期的数值设为1}
    HD:FILTER(D,2);{找到高点后,过滤掉其后2周期内可能出现的等高点。输出高点}
    A2:=REF(L,2);{中间K线的最低价}
    B2:=A2 =REF(L,4) AND A2 =REF(L,3) AND A2 =REF(L,1) AND A2 {中间K线的最低价小于等于两边共四根K线的最低价}
    D2:=BACKSET(B2,3);{将当前位置和之前2个周期的数值设为1}
    LD:FILTER(D2,2);{找到低点后,过滤掉其后2周期内可能出现的等低点。输出低点}
    {后面有些例子,就从这个公式中引用信号。}

    用法: DRAWICON(COND,PRICE,TYPE),当COND条件满足时,在PRICE位置画TYPE号图标。15种图标编码为1-15(1-3为小脸,4-5为上下箭头,6-7为红绿小旗,8-9为三角形,10-12为信号灯,13-15为O、X、四方形)。TYPE为字符串时可显示用户自制BMP图。

    示例:DRAWICON(CLOSE OPEN,LOW,4)表示当收阳时在最低价位置画4号图标。

    DRAWICON(C O, L, MyBMP )表示当收阳时在最低价位置画FmlDLL子目录下的自制图标MyBMP.BMP。

    1、COND条件,一般是指判断的结果,不是0就是1。如用其它数据,大于等于1的,条件满足;小于1,条件就不满足。

    2、TYPE图标,现在已经有12种,用下面的公式,在000829上可以全部显示出来。当TYPE取大于等于12的数时,都显示黄球。

    当TYPE取0时,显示的是笑脸(这个公式中没有做进去,自己可以试一下)。

    B:= FENG2.HD
    D:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1);
    A:=D REF(D,1);
    DRAWICON(REF(A,1),1.05*H,1);
    DRAWICON(REF(A,2),1.05*H,2);
    DRAWICON(REF(A,3),1.05*H,3);
    DRAWICON(REF(A,4),1.05*H,4);
    DRAWICON(REF(A,5),1.05*H,5);
    DRAWICON(REF(A,6),1.05*H,6);
    DRAWICON(REF(A,7),1.05*H,7);
    DRAWICON(REF(A,8),1.05*H,8);
    DRAWICON(REF(A,9),1.05*H,9);
    DRAWICON(REF(A,10),1.05*H,10);
    DRAWICON(REF(A,11),1.05*H,11);
    DRAWICON(REF(A,12),1.05*H,12);
    DRAWICON(REF(A,13),1.05*H,13);
    DRAWICON(REF(A,14),1.05*H,100);{主图叠加}
    当红球和绿球连续显示时,立体感会强一些。
    DRAWICON(C =MA(C,30),MA(C,30),10);
    DRAWICON(C MA(C,30),MA(C,30),11);{主图叠加}

    3、PRICE是用于定位图标的位置的。一般用1.01*H,或者0.99*L等。现在可用ALIGN(0-5)指定对齐位置。

    用这个公式来试(主图叠加)

    B:= FENG2.HD
    D:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1);
    A:=D REF(D,1);
    E:=REF(H,1);
    DRAWICON(A,E,10),ALIGN0;
    DRAWICON(A,E,11),ALIGN1;
    DRAWICON(A,E,12),ALIGN2;
    DRAWICON(A,E,3),ALIGN3;
    DRAWICON(A,E,4),ALIGN4;
    DRAWICON(A,E,5),ALIGN5;

    可以初步得出结论:

    ALIGN0:信号出现在PRICE的正中;
    ALIGN1:信号出现在PRICE下边(十分靠近);
    ALIGN2:信号出现在PRICE上边(十分靠近);
    ALIGN3:信号出现在主图的中间;
    ALIGN4:信号出现在主图的最上边;
    ALIGN5:信号出现在主图的最下边;

    在高低点上作图标,可以使高低点更明确了。

    A:= FENG2.LD
    B:= FENG2.HD
    DRAWICON(A,L,11),ALIGN1;
    DRAWICON(B,H,10),ALIGN2;{主图叠加}

    4、可以自由调用MyBMP.BMP图到显示位置,大大增强了输出的效果。你只要看到好看的图,可以随时抓拍过来,做成BMP文件,放到FmlDLL子目录下,就可以调用了。

    A:= FENG2.LD
    B:= FENG2.HD
    DRAWICON(A,L, PIG ),ALIGN1;
    DRAWICON(B,H, PIG ),ALIGN2;{主图叠加。如果你没有PIG.BMP文件,则不可显示。}
    DRAWICON(1,MA(C,5), S28
    DRAWICON(1,MA(C,10), S31
    DRAWICON(1,MA(C,20), S14
    DRAWICON(1,MA(C,30), S25 {主图叠加。如果你没有PIG.BMP文件,则不可显示。}

    举个例子:

    A:= FENG2.LD
    B:= FENG2.HD
    DRAWICON(A,L,11),ALIGN1;
    DRAWICON(B,H,10),ALIGN2;
    D:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1);
    E:=D REF(D,1);
    F:=BACKSET(E,REF(BARSLAST(B),1)+2);
    G:=F REF(F,1);
    DRAWLINE(G,H,E,H,1),pointdot,linethick1,coloryellow;{主图叠加}

    这根线有些趋势线的意思了。由于趋势线的主观性颇强,只有多设参数才能满足多数人的要求。

    DRAWLINE画出的线,应该比手工画出的线精确一些(DRAWLINE画线的灵敏度,要比手工画线低,所以说DRAWLINE画出的线精确,就未必对)。

    主要用于画斜线,水平线我们一般可以另想办法。因为在图中显示直线,并非DRAWLINE的 专利 。

    比如:

    A:= FENG2.LD
    B:= FENG2.HD
    D:=BACKSET(ISLASTPERIOD,BARSLAST(A)+1);
    E:=D REF(D,1);
    F:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1);
    G:=F REF(F,1);
    前高:REF(H,BARSLAST(G));
    前低:REF(L,BARSLAST(E));{主图叠加}

    说明:在图形上显示数字
    用法: DRAWNUMBER(COND,PRICE,NUMBER,PRECISION),当COND条件满足时,在PRICE位置书写数字NUMBER(可以为常数或数组序列),PRECISION为小数显示位数(取值范围0-3)。可ALIGN0-5定义对齐方式。
    示例:DRAWNUMBER(CLOSE/OPEN 1.08,HIGH,(CLOSE-REF(C,1))/REF(C,1)*100,2)表示当日涨幅大于8%时在最高价位置显示涨幅(相对开盘价的百分比)。

    这个函数的特色是,在NUMBER位置可以放变量。

    NUMBER,数字。DRAWNUMBER是DRAWTEXT的 兄弟 ,也可以用ALIGN(0-5)来定义水平位置,方法相同。

    A:= FENG2.LD
    B:= FENG2.HD
    DRAWICON(A,L,11),ALIGN1;
    DRAWICON(B,H,10),ALIGN2;
    D1:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1);
    E1:=D1 REF(D1,1);{离目前最近的一个高点}
    D2:=BACKSET(E1,REF(BARSLAST(B),1)+2);
    E2:=D2 REF(D2,1);{倒数第二个高点}
    DRAWTEXT(E1,H*1.02, 高点价: ),COLORGREEN,ALIGN2;
    DRAWNUMBER(E1,H*1.02,H,2),COLORGREEN,ALIGN1;
    DRAWTEXT(E2,H*1.02, 高点价: ),COLORYELLOW,ALIGN2;
    DRAWNUMBER(E2,H*1.02,H,2),COLORYELLOW,ALIGN1;{主图叠加}

    A:= FENG2.LD
    B:= FENG2.HD
    DRAWICON(A,L,11),ALIGN1;
    DRAWICON(B,H,10),ALIGN2;
    D1:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1);
    E1:=D1 REF(D1,1);{离目前最近的一个高点}
    D2:=BACKSET(E1,REF(BARSLAST(B),1)+2);
    E2:=D2 REF(D2,1);{倒数第二个高点}
    D3:=BACKSET(E2,REF(BARSLAST(B),1)+2);
    E3:=D3 REF(D3,1);{倒数第三个高点}
    DRAWTEXT(E1,H*1.01, ☆TEXT: ),COLORRED,ALIGN0;
    DRAWTEXT(E2,H*1.01, ★TEXT: ),COLORGREEN,ALIGN1;
    DRAWTEXT(E3,H*1.01, ?TEXT: ),COLORYELLOW,ALIGN2;{主图叠加}

    描述:绘制折线段
    类别:绘图
    说明:在图形上绘制折线段
    用法: POLYLINE(COND,PRICE),当COND条件满足时,以PRICE位置为顶点画折线连接。
    示例:POLYLINE(HIGH =HHV(HIGH,10),HIGH)表示在创10天新高点之间画折线。
    POLY,多个的。

    支持POINTDOT、LINETHICK、COLOR、SHIFT这四个描述函数。

    A:= FENG2.LD
    B:= FENG2.HD
    DRAWICON(A,L,11),ALIGN1;
    DRAWICON(B,H,10),ALIGN2;
    POLYLINE(A,L),POINTDOT,COLORGREEN;
    POLYLINE(B,H),LINETHICK2,COLORMAGENTA;{主图叠加}

    参数可调整的峰点公式:

    A:=REF(H,N)=HHV(H,2*N+1);{当前位置N天之前的最高价是最近2*N+1根K线中的最高价}
    B:=FILTER(A,N); {当高点附近有等高的K线出现时,会影响后续高点的判断,所以要过滤}
    D:=BACKSET(B,N+1);{将当前位置及前N周期的数值设为1,所以要用N+1}
    HD:=FILTER(D,N); {当高点附近有等高的K线出现,取第一个,过滤掉后面N个周期之内出现的}
    A2:=REF(L,N)=LLV(L,2*N+1);{求低点的过程与求高点的过程同理}
    B2:=FILTER(A2,N);
    D2:=BACKSET(B2,N+1);{参数N:1,3,999}
    LD:=FILTER(D2,N);{主图叠加}
    DRAWICON(HD,H,10),ALIGN2;{在高点附近显示红球}
    DRAWICON(LD,L,11),ALIGN1;{在低点附近显示绿球}

    可以说,这个公式用了BACKSET,但是用在日K线中,盘后是没有未来数据的,因为引用的全是已经发生过的不可变的数据了。

    至于即时盘中的未来数据,那是说不到底的事,基本所有的公式,都有即时盘中未来数据。

    红球绿球作为峰点标志,在显示K线不多的情况下,还比较清楚。但当K线数较多时,因为球的大小是不变的,所以看起来比较乱。故可用以下公式:

    A:=REF(H,N)=HHV(H,2*N+1); B:=FILTER(A,N); D:=BACKSET(B,N+1); HD:=FILTER(D,N);
    A2:=REF(L,N)=LLV(L,2*N+1);B2:=FILTER(A2,N); D2:=BACKSET(B2,N+1);LD:=FILTER(D2,N);
    STICKLINE(REF(HD,1),REF(H,1),REF(H,1),18,0),COLORMAGENTA;
    STICKLINE(REF(LD,1),REF(L,1),REF(L,1),18,0),COLORGREEN;

    函数:HHVBARS(X,N)
    描述:上一高点位置
    类别:引用
    参数:X为数组,N为计算周期
    返回:返回数组
    说明:求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计
    示例:HHVBARS(HIGH,0)求得历史新高到当前的周期数

    HHV、HHVBARS这两个函数一起用,可以找到当前N天中的最高点。

    A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);
    B:=COUNT(A,N)=1;{取得前N个周期内的最高点位置}
    REF(H,BARSLAST(B));
    DRAWICON(B,H,1),ALIGN2;{主图叠加。N:30,1,9999}

    函数:LLVBARS(X,N)
    描述:上一低点位置
    类别:引用
    参数: 无
    返回: 无
    说明:求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计
    示例:LLVBARS(HIGH,10)求得10日最低点到当前的周期数

    当前N天之内的最高点和最低点就一目了然了:

    A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);
    B:=COUNT(A,N)=1;{取得前N个周期内的最高点位置}
    REF(H,BARSLAST(B));
    DRAWICON(B,H,1),ALIGN2;
    A2:=BACKSET(ISLASTPERIOD,LLVBARS(L,N)+1);
    B2:=COUNT(A2,N)=1;{取得前N个周期内的最低点位置}
    REF(L,BARSLAST(B2));
    DRAWICON(B2,L,2),ALIGN1;{主图叠加。N:30,1,9999}

    这个公式求前期高低点,在600036等次新股上试调整参数就露马脚了,并不完善。问题出在HHVBARS起算点等原因上。

    下面这个公式可以说是完美解决方案:

    HH:HHV(H,N),LINETHICK2;
    LL:LLV(L,N),LINETHICK2;{主图叠加,参数N:30,1,9999}


    当N个周期之内,有两个最高价,即有等高的情况出现,HHVBARS会返回哪个最高价到当前的周期数呢?

    用副图公式观察一下,N取10:

    HHVBARS(H,N);

    我们可以得出结论,返回的是前一个最高价到当前的周期数。同样,当在N个周期之内,有两个等低的最低价出现时,LLVBARS会返回前一个最低价到当前的周期数。

    -------------------------------------------------------------------------------
    0079--窄幅整理

    (HHV(C,20)-LLV(C,20)/C 0.08;

    -------------------------------------------------------------------------------
    0080--N天前到M天前之间的最高价

    REF(HHV(H,20),40);

    -------------------------------------------------------------------------------
    0081--某时间段最高价

    HH:=IF(YEAR=1998 AND MONTH =8 AND MONTH =12,H,0);
    HHV(HH,0);{此例求1998年8月1日到1998年12月31日间的最高价}

    -------------------------------------------------------------------------------
    0082--二十日内是否有过涨停

    TT:=C/REF(C,1) 1.095;
    COUNT(TT,20)

    -------------------------------------------------------------------------------
    0083--放量创新高

    AA:=MA(V,5);
    BB:=REF(AA,2);
    CC:=HHV(C,30);
    AA/BB 2 AND C=CC;

    -------------------------------------------------------------------------------
    0084--突破长期平台整理

    V1:=MA(V,5);
    V2:=V/REF(V1,1);
    PZ1:=MA(C,150);
    PZ2:=HHV(H,150);
    PZ3:=LLV(L,150);
    PZ4:=(PZ2-PZ1)/PZ1;
    PZ5:=(PZ1-PZ3)/PZ1;
    PZ:=REF(PZ4,1) 0.15 AND REF(PZ5,1) 0.15;
    TP1:=HHV(H,150);
    TP:=H=TP1;
    V2 =2 AND PZ AND TP

    -------------------------------------------------------------------------------
    0085--尾盘大单拉升或打压

    AA:=TIME =145500;
    BB:=SUM(V,0)/240;//当天均量
    CC:=SUM(V,10)/10;//10分钟内的成交均量
    DD:=REF(C,10);
    AA AND CC/BB 3 AND C/DD 1.02;

    -------------------------------------------------------------------------------
    0086--MACD柱状体变宽语法

    Moving Average Convergence/Divergence , MACD , 移动平均收敛/发散指针

    Param(LONG , 26 ,20 100)
    Param(SHORT , 12 , 5 ,40)
    Param(M , 9 , 2 , 60)

    DIFF:EMA( CLOSE , SHORT ) - EMA( CLOSE , LONG) ,LINETHICK0,COLOR99FFFF;
    DEA:EMA( DIFF , M ) ,LINETHICK0,COLORFF9966;
    MACD: 2 * ( DIFF - DEA ) ,LINETHICK0,COLOR9966FF;

    STICKLINE(MACD 0,0,MACD,6,1) ,COLOR9966FF;
    STICKLINE(MACD =0,0,MACD,6,1) ,COLORCCFF66;

    PARTLINE(C 0,DIFF) ,COLOR99FFFF;
    PARTLINE(C 0,DEA) ,COLORFF9966;

    英译:

    DIFF=Difference = 差异=差离值
    DEA=Difference Exponential Average= 差异的指数平滑移动平均=差离值平均值
    MACD=Moving Average Convergence/Divergence = 移动平均收敛/发散

    利用快速和慢速两条指数平滑移动平均线,计算两者之间的差离值DIFF

    再利用差离值DIFF,来计算差离值平均值DEA

    本公式MACD柱状,即可明显体现出了DIFF与DEA两者的收敛交会与发散分离的情况,
    用以研判买进或卖出的时机

    -------------------------------------------------------------------------------
    0087--傅立叶变换

    用法:FFT(X , N)

    傅立叶变换,对数列X进行傅立叶变换,或变换处理后反变换

    示例:

    当N=0时,对数列X进行傅立叶变换;
    当N=1时,对数列X进行傅立叶变换后,再反变换回来,与原X一致;
    当N 1时,对数列X进行傅立叶变换后,舍去周期小于N的成分后再反变换回来;

    傅立叶变换是最常用的积分变换。原理和对数变换等差不多,广泛应用于工程技术领域。可傅立叶变换的算法,涉及高等数学的微积分知识,非三言两语说得清楚。

    傅立叶变换的应用方面:把FFT(CLOSE,30),在主图中上移、下移之后,可以构成非常光滑的信道。

    AA:FFT(CLOSE,30);
    XX:AA*1.05;
    YY:AA*0.95;

    -------------------------------------------------------------------------------
    0088--周期切换

    函数: DATATYPE
    别名: DATAPERIOD,、数据周期类型
    用法:
    DATATYPE
    回传值竹范围为0-11
    分别表示分笔成交、1分钟、5分钟、15分钟、30分钟、60分钟、
    日、周、月、年、多日、多分钟

    范例:切换到日线时跑最高价、切换到周线时跑最低价。考虑到什么周期秀什么线的问题

    XH:=IF( DATATYPE=6 , 1 , 0 ) ;
    XL:=IF( DATATYPE=7 , 1 , 0 ) ;

    AA:=MA(C , XH)/MA(C , XH) ;
    BB:=MA(C , XL)/MA(C , XL) ;

    HH:=HIGH ;
    LL:=LOW ;

    日线最高价:AA*HH , COLORGREEN ;
    周线最低价:BB*LL , COLORYELLOW ;

    范例:切换到指数类STKTYPE=0 跑10均线,切换到个股类STKTYPE=5 跑30均线。

    XA:=IF( STKTYPE=0 , 1 , 0 ) ;
    XB:=IF( STKTYPE=5 , 1 , 0 ) ;

    AA:=IF( XA=1 , MA(C,10) , 0 ) ;
    BB:=IF( XB=1 , MA(C,30) , 0 ) ;

    指针线:AA+BB ;

    范例:标记当天分时K线的当天K线序号。过了午夜12点,就又要等早盘开盘后序号数字才会出现

    XA:=CURRENTDATE=DATE ;
    XB:=REF(XA , 1) XA ;

    XC:HHVBARS(XB , 0) + XA ;

    应用:13均线当天当下最后数值向后延申,画平台线。

    XA:=CURRENTDATE=DATE ;
    XB:=REF(XA , 1) XA ;

    XC:=HHVBARS(XB , 0) + XA ;

    XD:=MA(C,13);

    XE:=REFX(XD , 300);
    XF:IF(XC =0 , XE , 0) ,LINETHICK0,COLOR99FFFF;
    PARTLINE(XC =1 , XF) ,COLOR99FFFF;

    -------------------------------------------------------------------------------
    0089--公历农历

    范例:公历日期

    YY:=YEAR*10000;
    MM:=MONTH*100;
    DD:=DAY ;

    公历日期:YY+MM+DD ,LINETHICK0;

    范例:农历日期

    LY:=LYEAR*10000;
    LM:=LMONTH*100;
    LD:=LDAY;

    农历日期:LY+LM+LD ,LINETHICK0;

    范例:两个日期相差天数 横坐标切换 自然日坐标和交易日坐标效果不一样

    两日期相差天数A: DATEDIFF(1020929,1021003),LINETHICK0;
    两日期相差天数B: DATEDIFF(LSOLARTERMDATE(1), DATE),LINETHICK0;

    范例:9点:30分:59秒以前的分时K线,指定一个值=1给它,其它为=0

    N:=30;
    XA:IF((HOUR=8) OR (HOUR=9 AND MINUTE =0 AND MINUTE =N) , 1 , 0 ) , STICK ;

    上面和下面的语法,其意义相同:

    范例:9点:30分:59秒 以前的分时K线 ,指定一个值=1给它,其它为=0

    N:=30;
    XA:(HOUR=8) OR (HOUR=9 AND MINUTE =0 AND MINUTE =N) , STICK ;

    范例:开盘第一根分时K线,指定一个值=1给它,其它为0

    XA:REF(DATE,1) DATE , STICK;

    范例:每天的分时K线,指定它的当天K线序号给它

    XA:=REF(DATE,1) DATE , STICK;

    XB:BARSLAST(XA=1) + 1 ,STICK;

    -------------------------------------------------------------------------------
    0090--添加自己的特色指针子选单

    方法如下:

    在C:CHIEFOXSYSTEM下建立SPECINDI.INI文件,例如其内容如下:

    [特色指针]
    追涨体系=0,RSI;0,KDJ;
    条件选股=0,BIAS;3,K110;2,BIAS

    打开记事本,输入上面文字后,存盘时记得扩展名由TXT 改为INI

    批注:

    各指针间以分号相隔。

    指针名称逗号前的数字表示公式类型:

    0:技术指针,1:条件选股 2:交易系统 3:五彩K线

    再启动看看:

    功能选单:特色 特色指针,将会出现子选单 追涨体系 、 条件选股 。

    -------------------------------------------------------------------------------
    0091--5日均线转折价

    将公式建立在:技术指针( ○主图 ●主图叠加 )

    公式名称:KKK27
    参数PARAM( N,5,2,300 )

    MMA:MA( CLOSE , N ) ;
    RMA:=REF( MMA , 1 ) ;

    MMB:=MA( CLOSE , N-1 ) ;
    RMB:=REF( MMB , 1 ) ;

    均线今转折:( RMA * N ) - ( RMB * ( N-1) ) , LINETHICK5 , POINTDOT ;

    均线明转折:( MMA * N ) - ( MMB * ( N-1 ) ) , LINETHICK5 , POINTDOT ;

    说明:
    1. REF( X , N ) 函数:将线图 X 向右平移 N 周期。

    2. X , SHIFT N 函数:将线图 X 向右平移 N 周期。(这两者之间的差别验证看看就知道了)

    3.

    收盘站在转折价之上 均线将走正斜率。
    收盘等于转折价 均线将走零斜率。
    收盘落入转折价之下 均线将走负斜率。

    5日均线

    使CROSS(CLOSE , MA( CLOSE , 5 ) )成立转折价

    将公式建立在:技术指针( ○主图 ●主图叠加 )

    公式名称:KKK40
    参数PARAM( N,5,2,300 )

    MMA:MA (CLOSE , N ) ;

    TT:=MA( C , N-1 ) ;
    DD:=REF( TT , 1 ) ;

    PARTLINE( CLOSE 0, DD ) , CROSSDOT , COLOR6A9BFF ;
    PARTLINE( CLOSE 0 , TT ) , CROSSDOT , COLORFFAB60 ;

    EXPLAINEX( CLOSE 0 , 均线今转折 , DD , 2 , 0 ) , COLOR6A9BFF;
    EXPLAINEX( CLOSE 0 , 均线明转折 , TT , 2 , 0 ) , COLORFFAB60 ;

    说明:

    BB=MA( C , 4 )
    RB=REF( BB , 1 )



    今转折价为 CC

    CC=(4*RB) / 5 + (CC) / 5

    5*CC=4*RB + CC ;

    4*CC=4*RB

    CC=RB

    同理可证:



    明转折价为MM

    MM=BB

    5日均线

    使CROSS(CLOSE , MA( CLOSE , 5 ) )成立 转折价(含周均线)

    将公式建立在:技术指针( ○主图 ●主图叠加 ) 先建立即将被引用的表达式

    公式名称:KKK45
    参数PARAM( N,5,2,300 )

    MMA:MA (CLOSE , N ) ;

    TT:MA( C , N-1 ) ;
    DD:REF( TT , 1 ) ;

    将公式建立在:技术指针( ○主图 ●主图叠加 )

    公式名称:KKK45.1
    参数PARAM( N,5,2,300 )

    MMA: KKK45.MMA (N) ;
    MMW: KKK45.MMA#WEEK (N) ;

    TT:= KKK45.TT (N) ;
    DD:= KKK45.DD (N) ;

    WT:= KKK45.TT#WEEK (N) ;
    WD:= KKK45.DD#WEEK (N) ;

    PARTLINE( CLOSE 0, DD ) , CROSSDOT , COLOR6A9BFF ;
    PARTLINE( CLOSE 0 , TT ) , CROSSDOT , COLORFFAB60 ;

    PARTLINE( CLOSE 0, WD ) , CROSSDOT , COLOR88FB66 ;
    PARTLINE( CLOSE 0, WT ) , CROSSDOT , COLORB982FD;

    EXPLAINEX( CLOSE 0 , 均线今转折 , DD , 2 , 0 ) , COLOR6A9BFF;
    EXPLAINEX( CLOSE 0 , 均线明转折 , TT , 2 , 0 ) , COLORFFAB60 ;

    EXPLAINEX( CLOSE 0 , N均线今周转折 , WD , 2 , 0 ) , COLOR88FB66 ;
    EXPLAINEX( CLOSE 0 , 均线下周转折 , WT , 2 , 0 ) , COLORB982FD ;


    -------------------------------------------------------------------------------
    0092--平均真实波幅 ATR BANDS

    METASTOCK FORMULAS
    ATR BANDS

    STDHA := MOV(C,20,E)+2*ATR(20) ;
    STDLA := MOV(C,20,E)-2*ATR(20) ;
    STDHA;
    STDLA

    真实波幅TRUE RANGE是以下三者最大的一项:

    (A). 当天最高价至最低价的幅度。
    (B). 当天最高价至昨天收盘价的幅度。
    (C). 当天最低价与昨天收盘价的幅度。

    公式名称:KKK43
    将公式建立在:技术指针 ( ○主图 ●主图叠加 )

    RC:=REF( C , 1 ) , LINETHICK0 ;

    XA:=IF( RC H , RC , 0 ) ;
    XB:=IF( H =RC AND RC L , H , 0 ) ;
    XC:=IF( RC =L , H , 0 ) ;

    XD:=XA+XB+XC ;

    YA:=IF( RC H , L , 0 ) ;
    YB:=IF( H =RC AND RC L , L , 0 ) ;
    YC:=IF( RC =L , RC , 0 ) ;

    YD:=YA+YB+YC ;

    ATR:=SMA( (XD - YD) , 20 , 1 ) ;

    STDHA:EMA( C , 20 ) + 2*ATR ;
    STDLA:EMA( C , 20 ) - 2*ATR ;

    -------------------------------------------------------------------------------
    0093--SYSPARAM(1)函数的说明

    SYSPARAM(1)函数:主要应用在,线图会随十字游标的移动而变化。

    公式名称:KKK12
    将公式建立在:技术指针 ( ○主图 ●主图叠加 )

    SS:=SYSPARAM( 1 ) ;
    DD:=SUM( 1 , 0 ) ;

    CC:CLOSE * 1.07 , LINETHICK0 , COLORYELLOW ;

    PARTLINE( SS =DD , CC ) , COLORYELLOW ;

    注:

    DD:SUM( 1 , 0 ) ;
    SS:SYSPARAM( 1 ) ;

    上面两者,显然有明显的不同之处。

    1. DD是一条变量型时间数列 代表K线的序号下标。

    2. SS是一组包含N 条的常数型时间数列( N=这支股票的K线总数)。

    -------------------------------------------------------------------------------
    0094--真实波幅AND平均真实波幅。

    真实波幅TRUE RANGE是以下三者最大的一项:

    (A). 当天最高价至最低价的幅度。
    (B). 当天最高价至昨天收盘价的幅度。
    (C). 当天最低价与昨天收盘价的幅度。

    将公式建立在:技术指针( ○主图 ●主图叠加 )
    公式名称:KKK36

    收盘价:CLOSE , POINTDOT , LINETHICK6 ;

    RC:REF( C , 1 ) , LINETHICK0 ;

    XA:=IF( RC H , RC , 0 ) ;
    XB:=IF( H =RC AND RC L , H , 0 ) ;
    XC:=IF( RC =L , H , 0 ) ;

    XD:XA+XB+XC ;

    YA:=IF( RC H , L , 0 ) ;
    YB:=IF( H =RC AND RC L , L , 0 ) ;
    YC:=IF( RC =L , RC , 0 ) ;

    YD:YA+YB+YC ;

    ATR:SMA( ( XD - YD ) , 14 , 1 ) , LINETHICK0 ;

    真实波幅TRUE RANGE是以下三者最大的一项:

    (A). 当天最高价至最低价的幅度。
    (B). 当天最高价至昨天收盘价的幅度。
    (C). 当天最低价与昨天收盘价的幅度。

    将公式建立在:技术指针( ○主图 ●主图叠加 )
    公式名称:KKK36

    收盘价:CLOSE , POINTDOT , LINETHICK6 ;

    RC:REF( C , 1 ) , LINETHICK0 ;

    XA:=IF( RC =H , RC , 0 ) ;
    XB:=IF( RC H , H , 0 ) ;

    XD:XA+XB ;

    YA:=IF( RC L , L , 0 ) ;
    YB:=IF( RC =L , RC , 0 ) ;

    YD:YA+YB ;

    TR:SMA( ABS( XD - YD ) , 14 , 1 ) , LINETHICK0 ;


    -------------------------------------------------------------------------------
    0095--条件成立当日低点向后划水平线直到水平线跌破。

    条件A,例如CROSS( K , 80 ),

    在 条件A 成立的当天取当根K棒的 最低价X 作为 水平直线 的起点,然后一直随着未来的K棒自动向右延伸, 直到 有一天的 收盘价小于 当初条件成立时的那个 最低价X 时,这一条 水平直线 便到了终点。

    将下面公式建立在:技术指针( ○主图 ●主图叠加 )
    公式名称:KKK29

    参数PARAM( N,9,1,100 )
    参数PARAM( M1,3,2,40 )
    参数PARAM( M2,3,2,40 )

    RSV:=( CLOSE-LLV(LOW,N) ) / ( HHV(HIGH,N)-LLV(LOW,N) ) * 100 ;
    K:=SMA( RSV , M1 , 1 ) , COLORRED ;
    D:=SMA( K , M2 , 1 ) , COLORYELLOW ;

    AA:=CROSS( K , 80 ) ;

    BB:=BARSLAST( AA=1 ) ;
    DD:=REF( LOW , BB ) ;

    EE:=CROSS( DD , CLOSE ) ;

    FF:=SUM( EE , BB ) ;
    GG:=( REF( FF , 1 )=0 AND FF=1 ) ;

    HH:=( REF(DD,1)=DD ) ;
    PARTLINE( HH=1 , DD ) ;

    DRAWLINE( AA=1 , DD , GG=1 , DD , 0 ) , COLORC080FF ;

    -------------------------------------------------------------------------------
    0096--分析周期切换 均线参数自动切换(1)

    日线 MA5,MA10,MA20,MA30,MA72
    周线 MA6,MA12,MA24,MA72
    其它周期参数,自行类推。

    将公式建立在:技术指针( ○主图 ●主图叠加 )
    公式名称:KKK25.2 (完成品)

    XA:=IF( DATAPERIOD=6 , 5 , 0 ) ;
    XB:=IF( DATAPERIOD=6 , 10 , 0 ) ;
    XC:=IF( DATAPERIOD=6 , 20 , 0 ) ;
    XD:=IF( DATAPERIOD=6 , 30 , 0 ) ;
    XE:=IF( DATAPERIOD=6 , 72 , 0 ) ;

    TT:=SUM( 1 , 0 ) ;

    A1:=ISLASTBAR ;
    A2:=BACKSET( A1=1 , TT-4 ) ;
    A3:=BARSLAST( A2=1 ) ;

    X1:=A3 + 1 ;
    MA5:MA( C , XA ) * X1 ;

    B1:=ISLASTBAR ;
    B2:=BACKSET( B1=1 , TT-9 ) ;
    B3:=BARSLAST( B2=1 ) ;

    X2:=B3 + 1 ;
    MA10:MA( C , XB ) * X2 ;

    C1:=ISLASTBAR ;
    C2:=BACKSET( C1=1 , TT-19 ) ;
    C3:=BARSLAST( C2=1 ) ;

    X3:=C3 + 1 ;
    MA20:MA( C , XC ) * X3 ;

    D1:=ISLASTBAR ;
    D2:=BACKSET( D1=1 , TT-29 ) ;
    D3:=BARSLAST( D2=1 ) ;

    X4:=D3 + 1 ;
    MA30:MA( C , XD ) * X4 ;

    E1:=ISLASTBAR ;
    E2:=BACKSET( E1=1 , TT-71 ) ;
    E3:=BARSLAST( E2=1 ) ;

    X5:=E3 + 1 ;
    MA72:MA( C , XE ) * X5 ;

    YA:=IF( DATAPERIOD=7 , 6 , 0 ) ;
    YB:=IF( DATAPERIOD=7 , 12 , 0 ) ;
    YC:=IF( DATAPERIOD=7 , 24 , 0 ) ;
    YD:=IF( DATAPERIOD=7 , 72 , 0 ) ;

    A11:=ISLASTBAR ;
    A22:=BACKSET( A11=1 , TT-5 ) ;

    A33:=BARSLAST( A22=1 ) ;

    Y1:=A33 + 1 ;
    MB6:MA( C , YA ) * Y1 ;

    B11:=ISLASTBAR ;
    B22:=BACKSET( B11=1 , TT-11 ) ;

    B33:=BARSLAST( B22=1 ) ;

    Y2:=B33 + 1 ;
    MB12:MA( C , YB ) * Y2 ;

    C11:=ISLASTBAR ;
    C22:=BACKSET( C11=1 , TT-23 ) ;

    C33:=BARSLAST( C22=1 ) ;

    Y3:=C33 + 1 ;
    MB24:MA( C , YC ) * Y3 ;

    D11:=ISLASTBAR ;
    D22:=BACKSET( D11=1 , TT-71 ) ;

    D33:=BARSLAST( D22=1 ) ;

    Y4:=D33 + 1 ;
    MB72:MA( C , YD ) * Y4 ;

    说明:

    只显示后面15(预设)天的线图(不使用VBS):

    将下列公式建立在:技术指针 ( ●主图 ○主图叠加 )
    公式名称:KKK17.1

    参数PARAM( N、15、1、300 )

    AA:=ISLASTBAR ;

    BB:=BACKSET( AA=1 , N ) ;

    Y:=BARSLAST( BB=1 ) ;

    X:=Y + 1 ;

    OO:OPEN * X ;

    MM:MA( CLOSE , 5 ) * X ;

    将公式建立在:技术指针( ○主图 ●主图叠加 )
    公式名称:KKK25 (半成品)

    XA:=IF( DATAPERIOD=6 , 5 , 0 ) ;
    XB:=IF( DATAPERIOD=6 , 10 , 0 ) ;
    XC:=IF( DATAPERIOD=6 , 20 , 0 ) ;
    XD:=IF( DATAPERIOD=6 , 30 , 0 ) ;
    XE:=IF( DATAPERIOD=6 , 72 , 0 ) ;

    MA5:MA( C , XA ) ;
    MA10:MA( C , XB ) ;
    MA20:MA( C , XC ) ;
    MA30:MA( C , XD ) ;
    MA72:MA( C , XE ) ;

    YA:=IF( DATAPERIOD=7 , 6 , 0 ) ;
    YB:=IF( DATAPERIOD=7 , 12 , 0 ) ;
    YC:=IF( DATAPERIOD=7 , 24 , 0 ) ;
    YD:=IF( DATAPERIOD=7 , 72 , 0 ) ;

    MB6:MA( C , YA ) ;
    MB12:MA( C , YB ) ;
    MB24:MA( C , YC ) ;
    MB72:MA( C , YD ) ;

    注:

    当前分析周期类型: DATAPERIOD ;

    DATAPERIOD 函数 回传值的范围介于 0 -- 10 之间 。分别代表 当前分析周期类型。

    0 分笔成交
    1 1 分钟线
    2 5 分钟线
    3 15分钟线
    4 30分钟线
    5 60分钟线
    6 日线
    7 周线
    8 月线
    9 年线
    10 多日线

    小技巧:

    在图形分析窗口可用 键盘精灵 切换分析周期。

    -------------------------------------------------------------------------------
    0097--分析周期切换 均线参数自动切换(2)

    日线 MA5,MA10,MA20,MA30,MA72
    周线 MA6,MA12,MA24,MA72
    其它周期参数,自行类推。

    将公式建立在:技术指针( ○主图 ●主图叠加 )
    公式名称:KKK25.5 (完成品)

    XA:=( DATAPERIOD=6 )*5 ;
    XB:=( DATAPERIOD=6 )*10 ;
    XC:=( DATAPERIOD=6 )*20 ;
    XD:=( DATAPERIOD=6 )*30 ;
    XE:=( DATAPERIOD=6 )*72 ; {常数型 时间数列 ,将之代入 MA函数 会正确}

    MA5:MA( C , XA ) ;
    MA10:MA( C , XB ) ;
    MA20:MA( C , XC ) ;
    MA30:MA( C , XD ) ;
    MA72:MA( C , XE ) ;

    YA:=( DATAPERIOD=7 )*6 ;
    YB:=( DATAPERIOD=7 )*12 ;
    YC:=( DATAPERIOD=7 )*24 ;
    YD:=( DATAPERIOD=7 )*72 ;

    MB6:MA( C , YA ) ;
    MB12:MA( C , YB ) ;
    MB24:MA( C , YC ) ;
    MB72:MA( C , YD ) ;

    将公式建立在:技术指针( ○主图 ●主图叠加 )
    公式名称:KKK25 (半成品)

    XA:=IF( DATAPERIOD=6 , 5 , 0 ) ;
    XB:=IF( DATAPERIOD=6 , 10 , 0 ) ;
    XC:=IF( DATAPERIOD=6 , 20 , 0 ) ;
    XD:=IF( DATAPERIOD=6 , 30 , 0 ) ;
    XE:=IF( DATAPERIOD=6 , 72 , 0 ) ;

    {有点变量型时间数列的味道,因为IF函数在做怪,将之代入MA函数会失真}

    MA5:MA( C , XA ) ;
    MA10:MA( C , XB ) ;
    MA20:MA( C , XC ) ;
    MA30:MA( C , XD ) ;
    MA72:MA( C , XE ) ;

    YA:=IF( DATAPERIOD=7 , 6 , 0 ) ;
    YB:=IF( DATAPERIOD=7 , 12 , 0 ) ;
    YC:=IF( DATAPERIOD=7 , 24 , 0 ) ;
    YD:=IF( DATAPERIOD=7 , 72 , 0 ) ;

    MB6:MA( C , YA ) ;
    MB12:MA( C , YB ) ;
    MB24:MA( C , YC ) ;
    MB72:MA( C , YD ) ;

    注:

    当前分析周期类型: DATAPERIOD ;

    PP:( DATAPERIOD=6 ) ; { PP为常数型时间数列 }

    -------------------------------------------------------------------------------
    0098--调用某某公式内的时间数列线

    公式名称:BB

    SS:=HIGH REF( HIGH , 1 ) ; {不输出的表达式,如果被引用还是会变成不输出的表达式}

    RR:REF( HIGH , 6 ) ; {输出的表达式,如果被引用还是会变成输出的表达式}

    公式名称: BBQ

    TT: BB.SS {不输出的表达式}

    PP: BB.RR {输出的表达式}

    1. 调用公式BB内的SS时间数列。调用公式BB内的RR时间数列。
    2. 当SS线内存有预设参数时,例如有两个参数,可视情况写成PP: BB.SS (N,M) 。

    3. 例如 K:= KD.K ( 10 , 4 , 0 ) ; 调用公式 KD 内的 K 时间数列 。
    3. 例如 D:= KD.D ( 10 , 4 , 4 ) ; 调用公式 KD 内的 D 时间数列 。

    4. 例如 K:= KD.K 使用公式 KD 预设的参数 ,( 9 , 3 , 0 )。
    4. 例如 K:= KD.D 使用公式 KD 预设的参数 ,( 9 , 3 , 3 )。

    公式名称:KD

    参数PARAM( N,9,1,100 )
    参数PARAM( M1,3,2,40 )
    参数PARAM( M2,3,2,40 )

    RSV:=( CLOSE-LLV( LOW , N ) ) / ( HHV( HIGH , N )-LLV( LOW , N ) )*100 ;
    K:SMA( RSV , M1 , 1 ) ; {K数列内包含了两个参数因子:N,M1}
    D:SMA( K , M2 , 1 ) ; {D数列内包含了三个参数因子:N,M1,M2}

    (1) 多头: 周线9K 9D时选出日线9K 9D的股票
    (2) 空头: 周线9K 9D时选出日线9K 9D的股票

    公式A. 先建立即将被引用的表达式
    建立一个专门被用来引用(QUOTE)的公式区。

    将公式建立在:技术指针( ●主图 ○主图叠加 )
    公式名称:KDD

    参数PARAM( N,9,1,100 )
    参数PARAM( M1,3,2,40 )
    参数PARAM( M2,3,2,40 )

    RSV:=( CLOSE-LLV(LOW,N) ) / ( HHV(HIGH,N)-LLV(LOW,N) ) * 100 ;
    K:SMA( RSV , M1 , 1 ) , COLORRED ;
    D:SMA( K , M2 , 1 ) , COLORYELLOW ;

    公式B.

    将公式建立在:技术指针( ●主图 ○主图叠加 )
    公式名称:KDD1

    K: KDD.K
    D: KDD.D

    WK: KDD.K#WEEK
    WD: KDD.D#WEEK

    公式B.

    将公式建立在:条件选股
    公式名称:KDD2(多头)

    K:= KDD.K
    D:= KDD.D

    WK:= KDD.K#WEEK
    WD:= KDD.D#WEEK

    K D AND WK WD

    公式C.

    将公式建立在:条件选股
    公式名称:KDD3(空头)

    K:= KDD.K
    D:= KDD.D

    WK:= KDD.K#WEEK
    WD:= KDD.D#WEEK

    K D AND WK WD

    -------------------------------------------------------------------------------
    0099--三角函数AND角度线

    A 的对边长度 = A

    B 的对边长度 = B

    C 的对边长度 = C 斜边

    u=3.14159

    1 度 = ( u / 180 ) 弧度

    B = 22.5 度 = ( 1 / 8 ) * u 弧度
    B = 45 度 = ( 1 / 4 ) * u 弧度

    SIN( B ) = B / C

    COS( B ) = A / C

    TAN( B ) = B / A B = A * TAN( B )

    将公式建立在:技术指针( ○主图 ●主图叠加 )
    公式名称:KKK30

    AA:=SUM( 1 , 0 ) - 1 ;

    BB22: AA * TAN( ( 1 / 8 ) * 3.14159 ) ;

    BB45: AA * TAN( ( 1 / 4 ) * 3.14159 ) ;

    将公式建立在:技术指针( ○主图 ●主图叠加 )
    公式名称:KKK30.1

    参数PARAM( N、45、0、80 ) 预设为45度。

    AA:=SUM( 1 , 0 ) - 1 ;

    BB: AA* TAN( N * ( 3.14159 / 180 ) ) ;

    -------------------------------------------------------------------------------
    0100--个股和大盘联动K线

    渗入 总报酬率 的观念,就可画出个股和大盘联动K线。

    公式名称:KKK4
    将公式建立在:技术指针 ( ○主图 ●主图叠加 )

    参数PARAM( N,30,1,300 )
    参数PARAM( M,1,0,1 )

    AA:=SUM( 1 , 0 ) ;

    BB:=IF( AA=1 , 1 , 0 ) ;

    TT:=ISLASTBAR ;

    DD:=BACKSET( TT=1 , N + 1 ) ;

    EE:=BACKSET( TT=1 , N ) , LINETHICK0 ;

    FF:=IF( DD EE , 1 , 0 ) ;

    GG:=IF( M=1 , FF , BB ) ;

    PP:=BARSLAST( GG=1 ) , LINETHICK0; ;

    X:=REF( INDEXC , PP ) ;

    Y:=REF( CLOSE , PP ) ;

    OO:( INDEXO / X ) * Y , LINETHICK0 ;

    HH:( INDEXH / X ) * Y , LINETHICK0 ;

    LL:( INDEXL / X ) * Y , LINETHICK0 ;

    CC:( INDEXC / X ) * Y , LINETHICK0 ;

    CC%:( INDEXC / X ) - 1 , LINETHICK0 ; { 基准日至今,大盘总报酬率 }

    DC%:( CLOSE / Y ) - 1 , LINETHICK0 ; { 基准日至今,个股总报酬率 }

    STICKLINE( CC OO , HH , LL , 0.1 , 0 ) , COLORRED ;

    STICKLINE( CC OO , CC , OO , 7 , 1 ) , COLORRED ;

    STICKLINE( CC =OO , HH , LL , 0.1 , 0 ) , COLORCYAN ;

    STICKLINE( CC =OO , CC , OO , 7 , 0 ) , COLORCYAN ;

    说明:

    1. 从后面算来(第N+1日) 为基准日。例如,N=10;

    2. 求算从后面算来(N日) 个股和大盘指数的联动K线:

    (每日大盘开盘指数/基准日当天的大盘收盘指数)*基准日当天的收盘价

    (每日大盘最高盘指数/基准日当天的大盘收盘指数)*基准日当天的收盘价

    (每日大盘最低盘指数/基准日当天的大盘收盘指数)*基准日当天的收盘价

    (每日大盘收盘指数/基准日当天的大盘收盘指数)*基准日当天的收盘价

    3. 公式的用意是:

    以基准日为基准至今:大盘总报酬率多少,个股的总报酬率就多少。联动在一起。

    九毛八公式指标,一个优质的公式指标平台!
    九毛八公式指标 » 大智慧公式源码编程技巧235例之二 加入收藏