編寫指標公式技巧全集

0001--主圖顯示代碼及板塊    一、顯示板塊    例一:    DRAWTEXT(BARPOS=SYSPARAM(2),H,"N所屬板塊:"+BLKNAME),ALIGN4,COLORYELLOW;    例二:    DRAWTEXT(SYSPARAM(2)=BARPOS,C,"所屬板塊:"+BLKNAME),ALIGN4,COLORYELLOW;    例三:    DRAWTEXT(SYSPARAM(2)=BARSCOUNT(C),H,"[所屬版塊]:"+BLKNAME),ALIGN4,COLORYELLOW;    二、顯示代碼及板塊    S:=STKLABEL;  DRAWTEXT(SYSPARAM(2)=BARPOS,C,S),ALIGN4,COLORYELLOW;  DRAWTEXT(BARPOS=SYSPARAM(2),H,"N所屬板塊:"+BLKNAME),ALIGN4,COLORYELLOW;{N與所屬板塊之間空六格,以顯示代碼}  0031--均線多頭排列    A1:=MA(C,N1);  A2:=MA(C,N2);  A3:=MA(C,N3);  A4:=MA(C,N4);  COUNT(A1>A2 AND A2>A3 AND A3>A4,3);    0032--均線空頭排列    A1:=MA(C,N1);  A2:=MA(C,N2);  A3:=MA(C,N3);  A4:=MA(C,N4);  COUNT(A1< A2 AND A2< A3 AND A3< A4,3);  0033--N日均線向下    AA:=MA(C,N);  BB:=REF(AA,1);  AA< BB  0034--N日均線向上    AA:=MA(C,N);  BB:=REF(AA,1);  AA>BB  0035--N日均線走平    AA:=MA(C,N);  BB:=REF(AA,1);  AA=BB  0036--向前N日至M日出現過均線死叉(P1< P2)    AA:=MA(C,P1);  BB:=MA(C,P2);  CC:=REF(CROSS(BB,AA),N);  COUNT(CC,M);  0037--今日成交量大於N日以來的均量    VOL>MA(VOL,N);  0038--低位密集    A1:=COST(85);  A2:=COST(15);  A3:=A1-A2;  A4:=(A1+A2)/2;  A5:=A3/A4*100<10;  B1:=HHV(H,120);  B2:=LLV(L,120);  B3:=B1-B2;  B4:=(A4-B2)< B3/2;  A5 AND B4;  0039--換手率     VOL/CAPITAL*100;  0040--N日盈虧    V1:=VOL/SUM(VOL,N);  V2:=DMA(CLOSE,V1);  V3:(CLOSE-V2)/V2*100;  0041--曲線疊加    指標線的疊加,是為了方便觀看和比較,沒什麼其他的意義。    一、對指標曲線的變化幅度放大    此法,一線變形,另一線不變,但變形線的走勢與原線完全相似。    舉例:C疊加V    BC:=HHV(C,N)-LLV(C,N);//N一般取常用主圖上的K線數量  BV:=HHV(V,N);  BI:=BC/BV;//疊加比   B:=BI[DATACOUNT];//最後一根K線的疊加比,保證疊加比前後統一  成交量:V,VOLSTICK;  F:=C/REF(C,1);  JC:=REF(C,1)*(1+A*F)*B/A;//A-放大倍數,將C的漲跌幅度F放大  JL:=LLV(JC,N);//平移量。請去掉JC句的=看JL的作用  收盤價:C,LINETHICK0,COLORYELLOW;//只顯示數值,不畫線  PARTLINE(C>0,JC-JL[DATACOUNT]),COLORYELLOW;//收盤價趨勢線,只畫線,不顯示數值    通式:    曲線X疊加曲線Y    BX:=HHV(X,N)-LLV(X,N);  BY:=HHV(Y,N)-LLV(Y,N);  BI:=BX/BY;  B:=BI[DATACOUNT];  FX:=X/REF(X,1);  JX:=REF(X,1)*(1+A*FX)*B/A;  XL:=LLV(JX,N);  曲線Y:Y;  曲線X:X,LINETHICK0;//曲線X的值  PARTLINE(C,JX-XL[DATACOUNT]);//曲線X的線    二、百分比疊加     把兩曲線的波動幅度劃成百分比進行疊加    此法,兩線都變形,但走勢都與原線完全相似。    舉例:C疊加V    HV:=HHV(V,N);  DV:=HV[DATACOUNT];  BV:=100/DV;  V*BV,VOLSTICK;  HC:=HHV(C,N);  LC:=LLV(C,N);  BC:=100/(HC[DATACOUNT]-LC[DATACOUNT]);  (C-LC[DATACOUNT])*BC;    通式一:    曲線X,曲線Y    XH:=HHV(X,N);  XL:=LLV(X,N);  XDH:=XH[DATACOUNT];  XDL:=XL[DATACOUNT];  BX:=100/(XDH-XDL);  曲線X:(X-XDL)*BX;    YH:=HHV(Y,N);  YL:=LLV(Y,N);  YDH:=YH[DATACOUNT];  YDL:=YL[DATACOUNT];  BY:=100/(YDH-YDL);  曲線Y:(Y-YDL)*BY;    通式二:    X曲線+Y曲線    N:=SYSPARAM(3)-SYSPARAM(2);  X:=.........; {.........為X曲線定義}  XH:=HHV(X,N);  XL:=LLV(X,N);  XDH:=XH[SYSPARAM(3)];  XDL:=XL[SYSPARAM(3)];  BX:=100/(XDH-XDL);  曲線X:(X-XDL)*BX;    Y:=.........;{.........為Y曲線定義}  YH:=HHV(Y,N);  YL:=LLV(Y,N);  YDH:=YH[SYSPARAM(3)];  YDL:=YL[SYSPARAM(3)];  BY:=100/(YDH-YDL);  曲線Y:(Y-YDL)*BY;    三、固定位置疊加    此法應用不多,僅舉例。    例一:    主圖成交量(V疊加C)    {M:960,1,2000}  R0:=M/1000;R:=(L-R0*SYSPARAM(5))/V;  R1:=LLV(R,SYSPARAM(3)-SYSPARAM(2));R2:=R1[SYSPARAM(3)];  R3:=LLV(L-R2*V,SYSPARAM(3)-SYSPARAM(2));  R4:=R3[SYSPARAM(3)];R5:=(R2*V+R4)*0.995;  STICKLINE(C>=REF(C,1),R5,R0*SYSPARAM(5),6,1)COLORRED;  STICKLINE(C< REF(C,1),R5,R0*SYSPARAM(5),6,0)COLORCYAN;  PARTLINE(V>=0,R0*SYSPARAM(5)) COLORWHITE;  PARTLINE(R5>0,MA(R5,5));  PARTLINE(R5>0,MA(R5,10));  PARTLINE(R5>0,MA(R5,20));    例二:    INPUT:N(10,2,999);  M:=SYSPARAM(3)-SYSPARAM(2);  X:=C;  Y:=SUM(IF(CLOSE>REF(CLOSE,1),VOL/CAPITAL,IF(CLOSE<REF(CLOSE,1),-VOL/CAPITAL,0)),0);  XH:=HHV(X,M); XL:=LLV(X,M); XDH:=XH[SYSPARAM(3)];XDL:=XL[SYSPARAM(3)];  BX:=100/(XDH-XDL);  收盤:C,LINETHICK0,;  收盤↑:PARTLINE(X>REF(X,1),(X-XDL)*BX),COLORRED;  收盤↓:PARTLINE(X< REF(X,1),(X-XDL)*BX),COLORCYAN;  YH:=HHV(Y,M); YL:=LLV(Y,M); YDH:=YH[SYSPARAM(3)];YDL:=YL[SYSPARAM(3)];  BY:=100/(YDH-YDL);  TY:=(Y-YDL)*BY;  OBV值:Y*1000,LINETHICK0,COLOR007BFF;  OBV線↑:PARTLINE(Y>REF(Y,1),(Y-YDL)*BY),COLORYELLOW;  OBV線↓:PARTLINE(Y< REF(Y,1),(Y-YDL)*BY),COLOR009F00;  A1:=REF(TY,N)=HHV(TY,2*N+1); B1:=FILTER(A1,N);C1:=BACKSET(B1,N+1); HD:=FILTER(C1,N);  A2:=REF(TY,N)=LLV(TY,2*N+1); B2:=FILTER(A2,N);C2:=BACKSET(B2,N+1); LD:=FILTER(C2,N);  AA:=REF(TY,BARSLAST(HD));BB:=REF(TY,BARSLAST(LD));A1:=REF(Y,BARSLAST(HD))*1000;B1:=REF(Y,BARSLAST(LD))*1000;  T1:=BARSLAST(HD)< BARSLAST(LD) AND NOT(HD) ;  T2:=BARSLAST(HD)>BARSLAST(LD) AND NOT(LD);  PARTLINE(T1,AA),COLORMAGENTA,LINETHICK2;  PARTLINE(T2,BB),COLORGREEN,LINETHICK2;  DRAWNUMBER(T1=0 AND REF(T1,1)>0,REF(AA,1)+0.1,A1,2);  DRAWNUMBER(T2=0 AND REF(T2,1)>0,REF(BB,1)+0.1,B1,2);    DRAWNUMBER(ISLASTBAR ANDT1>0,REF(AA,1)+0.1,A1,2),COLORYELLOW;  DRAWNUMBER(ISLASTBAR ANDT2>0,REF(BB,1)+0.1,B1,2),COLORMAGENTA;  0042--均線變色    MA05:MA(CLOSE,5);  MA30:MA(CLOSE,30);    IF(MA05< MA30,MA05,MA30),COLORGREEN;  IF(MA05< MA30,MA30,MA05),COLORRED;  IF(MA05>MA30,MA30,MA30),COLORBLUE;    DRAWICON(CROSS(MA05,MA30),L*0.98,4);  DRAWICON(CROSS(MA30,MA05),H*1.02,5);

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;    0軸上三次金叉    COUNT(CROSS(DIF,DEA) AND DEA>0,20)=3 AND CROSS(DIF,DEA)AND  DEA>0;    0軸上四次金叉    COUNT(CROSS(DIF,DEA) AND DEA>0,20)=4 AND CROSS(DIF,DEA) ANDDEA>0;    二次金叉    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 OROPENMINUTES(TIME)=40 OR OPENMINUTES(TIME)=55 OROPENMINUTES(TIME)=70 OR OPENMINUTES(TIME)=85 OROPENMINUTES(TIME)=100 OR OPENMINUTES(TIME)=115 OROPENMINUTES(TIME)=130 OR OPENMINUTES(TIME)=145 OROPENMINUTES(TIME)=160 OR OPENMINUTES(TIME)=175 OROPENMINUTES(TIME)=190 OR OPENMINUTES(TIME)=205 OROPENMINUTES(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 ANDH15>C15,HH15,C15,0.1,0),COLORRED;  STICKLINE(C15>O15 ANDO15>L15,O15,LL15,0.1,0),COLORRED;  STICKLINE(C15<=O15,C15,O15,10,0),COLORGREEN;  STICKLINE(C15<=O15 ANDC15>L15,C15,LL15,0.1,0),COLORGREEN;  STICKLINE(C15<=O15 ANDH15>O15,HH15,O15,0.1,0),COLORGREEN;    註:以大陸股市為例,四小時,其他市場如超過四小時,可在中間語句「TI:=」中以15為係數順序加足,如:OR 250 OR265……等等。    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;

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;    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);    說明:上面公式的運算,是以周周期時間數列數據運算的。

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))*100LINETHICK0;{:=運算過程不顯示值與圖}  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線序號}

[color=Indigo]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;    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--跨周期引用數據     (一)指針線公式的運算,大部份都是代入開、高、低、收、量等數據去運%C[/color]

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#WEEKOR 或者 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) ANDA>=H;{中間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) ANDA2<=L;{中間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}

推薦閱讀:

利用均線指標和KD組合波段操作模型
胖不胖可不是體重說了算,關鍵要測這 7 個指標
世界名企KPI績效管理操作手冊之關鍵績效指標體系建立
中老年發福指數 | 快對照這7項硬指標,儂超標了伐?
指標精解第一篇:捕撈季節

TAG:公式 | 技巧 | 指標 |