編寫指標公式技巧全集
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項硬指標,儂超標了伐?
※指標精解第一篇:捕撈季節