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日出現(xiàn)過均線死叉(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線數(shù)量
BV:=HHV(V,N);
BI:=BC/BV;//疊加比
B:=BI[DATACOUNT];//最后一根K線的疊加比,保證疊加比前后統(tǒng)一
成交量:V,VOLSTICK;
F:=C/REF(C,1);
JC:=REF(C,1)*(1+A*F)*B/A;//A-放大倍數(shù),將C的漲跌幅度F放大
JL:=LLV(JC,N);//平移量。請去掉JC句的=看JL的作用
收盤價:C,LINETHICK0,COLORYELLOW;//只顯示數(shù)值,不畫線
PARTLINE(C>0,JC-JL[DATACOUNT]),COLORYELLOW;//收盤價趨勢線,只畫線,不顯示數(shù)值
通式:
曲線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 AND T1>0,REF(AA,1)+0.1,A1,2),COLORYELLOW;
DRAWNUMBER(ISLASTBAR AND T2>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) AND DEA>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 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為系數(shù)順序加足,如:OR 250 OR 265……等等。
0059--移動成本
不知道函數(shù)算法,計算誤差在所難免。調整參數(shù)“%”可看到不同的移動成本。
///籌碼%
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--移動成本
不知道函數(shù)算法,計算誤差在所難免。調整參數(shù)“%”可看到不同的移動成本。
///籌碼%
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()函數(shù)
SUMBARS(X,N)
函數(shù)的用法如下:
向前累加到指定值到現(xiàn)在的周期數(shù)。
用法:
SUMBARS(X,A)
將X向前累加直到大于等于A,返回這個區(qū)間的周期數(shù)
例如:
SUMBARS(VOL,CAPITAL)
1、設計一個指標,計算當日成交量是幾天內的最高成交量?
2、設計一個指標,計算當日最高價是幾天內的最高價?
提示:直接用HHV()函數(shù)無法得到正確結果。
例一:
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]是歷史最高成交量
量創(chuàng)新高周期數(shù):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]是歷史最高成交量
量創(chuàng)新高周期數(shù):SUMBARS(REF(FV,1)-FV,0);
{這里的關鍵是 REF(FV,1)-FV ,想想看寫成 FV-REF(FV,1) 行不行?}
代碼已經(jīng)成功了,原理是什么呢?
假設某日成交量是3日內的最大成交量,則必有:
REF(VOL,3)-VOL>=0
等價于:
(REF(VOL,3)-REF(VOL,2))+(REF(VOL,2)-REF(VOL,1))+(REF(VOL,1)-VOL) >=0
意思就是說,“昨成交量與今成交量之差”逐日累加,直到某日累加和大于等于0,則這之間的天數(shù),就是所要求的日數(shù)。
我們再來看看SUMBARS()函數(shù)的含義:
SUMBARS(X,A):將X向前累加直到大于等于A,返回這個區(qū)間的周期數(shù)。
顯然上面的式子:
(REF(VOL,3)-REF(VOL,2))+(REF(VOL,2)-REF(VOL,1))+(REF(VOL,1)-VOL)>=0
可以寫成:
SUMBARS(REF(VOL,1)-VOL, 0);
為何第1周期的成交量要替換成比所有成交量都大的數(shù)值?最后,再來思考一個問題,把題目中的求“最大”,改成求“最小”,即多少天內是最小的?
例二:
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);//價創(chuàng)了N周期新高
VH:=IF(BARSCOUNT(C)=1,99999999,V);
HV:SUMBARS(REF(VH,1)-VH,0);//量創(chuàng)了N周期新高
LL:=IF(BARSCOUNT(C)=1,0,L);
ZL:SUMBARS(LL-REF(LL,1),0);//價創(chuàng)了N周期新低
VL:=IF(BARSCOUNT(C)=1,0,V);
LV:SUMBARS(VL-REF(VL,1),0);//量創(chuàng)了N周期新低
附注:
用99999999等具體數(shù)值,最好是盡可能大的數(shù)值(比如單精數(shù)的上限),否則仍有可能無法全部完成計算,比如上證指數(shù)的年線,成交量最大時,仍然超過了99999999。
倒數(shù)第6天的最高價格怎么表示?
FH:=HIGH;
FH[DATACOUNT-5]; //倒數(shù)第6天的最高價格。
[DATACOUNT]
返回K線的數(shù)量,即總共有多少根K線。
0061--取得K線的序號
取得K線的序號,正序有下面幾種方法:(從1數(shù)起)
BARPOS;
SX:BARSCOUNT(CLOSE);
SY:SUM(1,0);
DATACOUNT;{不隨光標變動,只顯示最后K線序號}
逆序可用下列方法取得:(從1數(shù)起)
(DATACOUNT-BARPOS)+1;
(DATACOUNT-BARSCOUNT(CLOSE))+1;
(DATACOUNT-SUM(1,0))+1;
0062--變量宣告
指定敘述:經(jīng)過指定宣告后,飛狐才認識AA、BB、CC,否則會出現(xiàn)"未定義的標示符號"。所謂"定義",程序語言的用語,就叫做"變量宣告"?! ?
AA:OPEN;{宣告OPEN,指定給AA→輸出的表達式}
BB:HIGH,LINETHICK0;{宣告HIGH,指定給BB→輸出的表達式→秀數(shù)值但不秀線圖}
CC:=CLOSE;{宣告CLOSE,指定給CC→不輸出的表達式→不秀數(shù)值也不秀線圖}
DD:(AA+BB+CC)/3;{;分號,告訴程序要換行執(zhí)行了}
EE:=(AA+CC)/2;
PARTLINE(CLOSE>0,EE);{秀線圖但不秀數(shù)值}
注:{ }大括號內或在//后面,可用來輸入公式批注。
0063--跨周期引用數(shù)據(jù)
(一)指針線公式的運算,大部份都是代入開、高、低、收、量等數(shù)據(jù)去運算的。
(二)開、高、低、收、量又分成下面四種型式出現(xiàn):
開、高、低、收、量(基本的日K線數(shù)據(jù))
開、高、低、收、量(周K線數(shù)據(jù))
開、高、低、收、量(月K線數(shù)據(jù))
開、高、低、收、量(年K線數(shù)據(jù))
(三)所以當指針線公式運算,要代入下面數(shù)據(jù)時:
開、高、低、收、量(周K線數(shù)據(jù))
開、高、低、收、量(月K線數(shù)據(jù))
#WEEK 和 #MONTH 就會派上用場。
(四)舉例:
公式A.建立一個專門被用來引用(QUOTE)的公式區(qū)?! ?
公式名稱:QU
A1:(OPEN+HIGH+LOW+CLOSE)/4;
說明:上面公式的運算,是代入開、高、低、收(當前周期K線數(shù)據(jù))運算的。
公式B.
公式名稱:AA
AA:"QU.A1#WEEK";
說明:將下面公式的運算,代入開、高、低、收(周K線數(shù)據(jù))運算。
(OPEN+HIGH+LOW+CLOSE) / 4
公式C.
公式名稱:BB
BB:"QU.A1#MONTH";
說明:將下面公式的運算,代入開、高、低、收(月K線數(shù)據(jù))運算。
(OPEN+HIGH+LOW+CLOSE)/4
附注:
可供引用的周期類型有:
MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH
分別表示將1,5,15,30,60分鐘K線數(shù)據(jù),以及日,周,月K線數(shù)據(jù),代入被引用的公式,進行運算。
意義:
可將大周期內跑的數(shù)據(jù),引用到小周期內來跑。將小周期內跑的數(shù)據(jù),引用到大周期內來跑,就會有問題,因為時間橫坐標不一樣了。
公式(1):先建立即將被引用的表達式
將公式建立在:技術指針 ( ●主圖疊加 ○主圖 )
公式名稱:NH
AA:=HIGH< REF(HIGH,1);{不輸出的表達式,如果被引用還是會變成不輸出的表達式}
BB:=BARSLAST(AA=1);
CC:REF(HIGH,BB); {輸出的表達式,如果被引用還是會變成輸出的表達式}
說明:
上面公式的運算,是以當周期時間數(shù)列數(shù)據(jù)運算的。
公式(2):
將公式建立在:技術指針 ( ●主圖疊加 ○主圖 )
公式名稱:NHH
AA:"NH.AA#WEEK";{不輸出的表達式}
BB:"NH.BB#WEEK";
CC:"NH.CC#WEEK";{輸出的表達式}
DRAWNUMBER(ISLASTBAR,CC,CC,2);
說明:上面公式的運算,是以周周期時間數(shù)列數(shù)據(jù)運算的。
0064--未來數(shù)據(jù)、未知數(shù)據(jù)
寫公式,首先要對已知數(shù)據(jù)(過去式)、未知數(shù)據(jù)(未完成式、現(xiàn)在進行式)有通盤的認知。
可將"未來"分為兩種情況:
1、實時行情中:在一根K線。
以實時行情中的當前日K線為例。除了O之外,其它H、L、C全有未來之嫌。因為在收盤之前,拉高、打壓是司空見慣的事,誰也不能保證H、L不會創(chuàng)出當天的新高和新低,更不用說C了。又如日線周期公式"C>REF(C,1);",前一分鐘信號成立,后一分鐘可能信號就不成立了。另外,如引用了周K 和月K數(shù)據(jù),因為當前周K和月K還在變動之中,所以也是未來資料。
2、盤后中:在多根K線。
因為在盤后,日K中的四大要素O、H、L、C就沒有未來之可能了。在盤后,除了周五之外,引用的周K指針也是未來數(shù)據(jù)。除了在月末,引用的月K指針也是未來數(shù)據(jù)。
總而言之,指針公式就分這兩種:
線圖信號的確定→全都用已知數(shù)據(jù)(過去式)來決定。
線圖信號的確定→有用到未知數(shù)據(jù)(未完成式、現(xiàn)在進行式)來決定。
ZIG函數(shù)
ZX:ZIG(CLOSE,8);
最近這次峰點、谷點的確定,也常處在未完成式的狀態(tài)中。
打個比喻,線圖信號的確定→有用到未知數(shù)據(jù)(未完成式、現(xiàn)在進行式),例如,在實時盤中一根日K線的收盤價變來變去,指針線圖當然隨之而起舞。
ZIG函數(shù)只是把格局放大,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;{顯示收盤價的圖改成漲紅跌綠聯(lián)機圖}
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函數(shù):相當于 IF( CLOSE>OPEN , 1 , 0 )?! ?
ISEQUAL函數(shù):相當于 IF( CLOSE=OPEN , 1 , 0 )?! ?
ISDOWN函數(shù):相當于 IF( CLOSE < OPEN , 1 , 0 )。
STICKLINE函數(shù),畫出來的對象有重疊覆蓋性:→后畫的對象可覆蓋先畫的對象。
例二:配色
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線,累計成交張數(shù)
XA:=REF(DATE,1)<>DATE , STICK;
XB:=BARSLAST(XA=1) + 1 ,STICK;
SV:SUM( VOL , XB ) ;
范例:標記今天分時K線的今天K線序號。過了午夜12點,就又要等早盤開盤后序號數(shù)字才會出現(xiàn)
XA:=CURRENTDATE=DATE ;
XB:=REF(XA , 1)<>XA ;
XC:HHVBARS(XB , 0) + XA ;
應用:13均線今天當下最后數(shù)值向后延申,畫平臺線。
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--系統(tǒng)參數(shù)函數(shù)
這組函數(shù),應用在取得當前可視主圖區(qū)內的一些數(shù)字信息,如下所示:
1.當前十字光標所在位置,那根K線的序號;
2.當前可視主圖區(qū),最初那根K線的序號;
3.當前可視主圖區(qū),最后那根K線的序號;
4.當前可視主圖區(qū),最高價;
5.當前可視主圖區(qū),最低價。
注:但須調出十字光標后,這組函數(shù)才能發(fā)生作用。否則回傳的值是不確定的?!?
SYSPARAM(1)
SYSPARAM(2)
SYSPARAM(3)
SYSPARAM(4)
SYSPARAM(5)
函數(shù):SYSPARAM(1)
說明: 回傳當前 十字光標所在位置那根K線的序號
函數(shù):SYSPARAM(2)
說明: 回傳當前可視主圖區(qū) 最初那根K線的序號
函數(shù):SYSPARAM(3)
說明: 回傳當前可視主圖區(qū) 最后那根K線的序號
函數(shù):SYSPARAM(4)
說明: 回傳當前可視主圖區(qū) 最高價
函數(shù):SYSPARAM(5)
說明: 回傳當前可視主圖區(qū) 最低價
范例:
將公式建立在:技術指針 ( ●主圖疊加 ○主圖 )
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是一組變量型時間數(shù)列,代表K線的序號。
2.SS是隱含有N組常數(shù)型時間數(shù)列(N=這支股票的K線總數(shù))。
DD:SUM(1,0)
以數(shù)學的二維空間F(X)=Y表示:Y=X
SS:SYSPARAM(1)
以數(shù)學的二維空間F(X)=Y表示,其中A屬正整數(shù):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--移動成本
不知道函數(shù)算法,計算誤差在所難免。調整參數(shù)“%”可看到不同的移動成本。
///籌碼%
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()函數(shù)
SUMBARS(X,N)
函數(shù)的用法如下:
向前累加到指定值到現(xiàn)在的周期數(shù)。
用法:
SUMBARS(X,A)
將X向前累加直到大于等于A,返回這個區(qū)間的周期數(shù)
例如:
SUMBARS(VOL,CAPITAL)
1、設計一個指標,計算當日成交量是幾天內的最高成交量?
2、設計一個指標,計算當日最高價是幾天內的最高價?
提示:直接用HHV()函數(shù)無法得到正確結果。
例一:
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]是歷史最高成交量
量創(chuàng)新高周期數(shù):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]是歷史最高成交量
量創(chuàng)新高周期數(shù):SUMBARS(REF(FV,1)-FV,0);
{這里的關鍵是 REF(FV,1)-FV ,想想看寫成 FV-REF(FV,1) 行不行?}
代碼已經(jīng)成功了,原理是什么呢?
假設某日成交量是3日內的最大成交量,則必有:
REF(VOL,3)-VOL>=0
等價于:
(REF(VOL,3)-REF(VOL,2))+(REF(VOL,2)-REF(VOL,1))+(REF(VOL,1)-VOL) >=0
意思就是說,“昨成交量與今成交量之差”逐日累加,直到某日累加和大于等于0,則這之間的天數(shù),就是所要求的日數(shù)。
我們再來看看SUMBARS()函數(shù)的含義:
SUMBARS(X,A):將X向前累加直到大于等于A,返回這個區(qū)間的周期數(shù)。
顯然上面的式子:
(REF(VOL,3)-REF(VOL,2))+(REF(VOL,2)-REF(VOL,1))+(REF(VOL,1)-VOL)>=0
可以寫成:
SUMBARS(REF(VOL,1)-VOL, 0);
為何第1周期的成交量要替換成比所有成交量都大的數(shù)值?最后,再來思考一個問題,把題目中的求“最大”,改成求“最小”,即多少天內是最小的?
例二:
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);//價創(chuàng)了N周期新高
VH:=IF(BARSCOUNT(C)=1,99999999,V);
HV:SUMBARS(REF(VH,1)-VH,0);//量創(chuàng)了N周期新高
LL:=IF(BARSCOUNT(C)=1,0,L);
ZL:SUMBARS(LL-REF(LL,1),0);//價創(chuàng)了N周期新低
VL:=IF(BARSCOUNT(C)=1,0,V);
LV:SUMBARS(VL-REF(VL,1),0);//量創(chuàng)了N周期新低
附注:
用99999999等具體數(shù)值,最好是盡可能大的數(shù)值(比如單精數(shù)的上限),否則仍有可能無法全部完成計算,比如上證指數(shù)的年線,成交量最大時,仍然超過了99999999。
倒數(shù)第6天的最高價格怎么表示?
FH:=HIGH;
FH[DATACOUNT-5]; //倒數(shù)第6天的最高價格。
[DATACOUNT]
返回K線的數(shù)量,即總共有多少根K線。
0061--取得K線的序號
取得K線的序號,正序有下面幾種方法:(從1數(shù)起)
BARPOS;
SX:BARSCOUNT(CLOSE);
SY:SUM(1,0);
DATACOUNT;{不隨光標變動,只顯示最后K線序號}
逆序可用下列方法取得:(從1數(shù)起)
(DATACOUNT-BARPOS)+1;
(DATACOUNT-BARSCOUNT(CLOSE))+1;
(DATACOUNT-SUM(1,0))+1;
0062--變量宣告
指定敘述:經(jīng)過指定宣告后,飛狐才認識AA、BB、CC,否則會出現(xiàn)"未定義的標示符號"。所謂"定義",程序語言的用語,就叫做"變量宣告"?! ?
AA:OPEN;{宣告OPEN,指定給AA→輸出的表達式}
BB:HIGH,LINETHICK0;{宣告HIGH,指定給BB→輸出的表達式→秀數(shù)值但不秀線圖}
CC:=CLOSE;{宣告CLOSE,指定給CC→不輸出的表達式→不秀數(shù)值也不秀線圖}
DD:(AA+BB+CC)/3;{;分號,告訴程序要換行執(zhí)行了}
EE:=(AA+CC)/2;
PARTLINE(CLOSE>0,EE);{秀線圖但不秀數(shù)值}
注:{ }大括號內或在//后面,可用來輸入公式批注。
0063--跨周期引用數(shù)據(jù)
(一)指針線公式的運算,大部份都是代入開、高、低、收、量等數(shù)據(jù)去運%C[/color]
0069--概率統(tǒng)計
COUNT,計數(shù)。SUM,總數(shù)、和。
當數(shù)組為邏輯運算判斷的結果時,COUNT和SUM的返回值是一樣的。一般習慣上,對于邏輯運算信號,用COUNT統(tǒng)計,返回其它數(shù)值的,用SUM統(tǒng)計。
當COUNT統(tǒng)計一般數(shù)值時,數(shù)組大于等于1時,計入;小于1時,不計入。這兩個函數(shù),主要用于統(tǒng)計。
用COUNT(CROSS(MA(C,5),MA(C,10)),0);就可以統(tǒng)計出全部的五天均線上穿十天均線的金叉數(shù)。
用SUM(CROSS(MA(C,5),MA(C,10)),0);和以上得出的結果應該是一樣的。
股市的不隨機規(guī)律,隱藏在統(tǒng)計概率之中。用這兩個函數(shù),可以統(tǒng)計很多概率性的規(guī)律。
比如,以兩天的收盤價相比,昨天是下跌的,今天的下跌的概率是多少?
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;
從兩市指數(shù)看,昨天下跌,今天下跌的概率始終大于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;
從指數(shù)的輸出看,概率更明顯了。連跌三天之后呢?
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;
規(guī)律就更明顯了。
不要小看這些數(shù)據(jù)。雖然沒有有些“高手”做出的成功率達百分之九十左右的公式那么夸張,但很有意義的。要知道股市中的隨機因素太多,平衡性很強,稍稍的統(tǒng)計偏向,足可作為有用的參考。
這只是簡單的例子,用這兩個函數(shù),可以做出很多的有用的統(tǒng)計數(shù)據(jù)。多數(shù)的交易系統(tǒng)的"勝率",可以由此統(tǒng)計出來。
統(tǒng)計:
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--分析家公式設定注意事項
參數(shù) 最多四個參數(shù),每個有最大和最小及缺省值,須有自己名稱
注釋 用大括號括起來放在被注釋語句之后
公式名稱 由字母或數(shù)字組成,在同類公式中必須唯一,最多九個字符
中間公式 使用":="來定義名字,不能與系統(tǒng)提供的函數(shù)同名
Param#1-4 對應于參數(shù)1-4,大小寫敏感
坐標線位置 最多七個,用分號分隔
組合公式設置 小公式間用分號隔開
繪圖參數(shù)使用 將其插入到指標公式的后面,用逗號分隔開
區(qū)分多條指標線 在指標公式前寫上名稱并加上一個冒號
指標線名字的使用 可以當函數(shù)名用
指標線繪制的極限 可同圖顯示16條指標線
五彩顏色參數(shù)使用 將其插入到指標公式的后面,用逗號分隔開
0072--交易系統(tǒng)公式交易類型
ENTERLONG 多頭買入 ENTERSHORT 空頭買入
EXITLONG 多頭賣出 EXITSHORT 空頭賣出
0073--可供引用的周期類型
MIN1 1分鐘線 MIN60 60分鐘線
MIN5 5分鐘線 DAY 日線
MIN15 15分鐘線 WEEK 周線
MIN30 30分鐘線 MONTH 月線
0074--引用表達式
引用指標公式 公式名稱.指標線名稱(參數(shù)表)
引用交易系統(tǒng)公式 SYSTEM.公式名稱.交易類型(參數(shù)表)
引用條件選股公式 EXPLORER.公式名稱(參數(shù)表)
跨周期引用公式 各種類型公式名稱#周期類型(參數(shù)表)
引用任意股票的數(shù)據(jù) 股票代碼$數(shù)據(jù)名稱
引用擴展數(shù)據(jù) EXTDATA(N) 分析家N=1-11 飛狐N=1-13
引用橫向統(tǒng)計日線數(shù)據(jù)(1-N) ESTDATA(N)
引用類函數(shù)第二個變量參數(shù) 類函數(shù)名稱(第一參數(shù),變量名或變量表達式)
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--橫向統(tǒng)計
函數(shù):ESTDATA(N)
描述:取得橫向統(tǒng)計日線數(shù)據(jù)(1-N)
類別:擴展數(shù)據(jù)
參數(shù):N
說明:在[橫向統(tǒng)計管理]中定義并計算數(shù)據(jù)(本函數(shù)僅在日線分析周期有效)。
用基本公式做出的主圖公式和副圖公式,顯示在個股或指數(shù)中,是縱向的,遍歷當時顯示的個股或指數(shù)中的每根K線。然后指標大小、變化、交叉情況等,都體現(xiàn)在某一個股或指數(shù)中。甲股和乙股,哪個KDJ中的K值大?用縱向變量(指標),原來就一點招數(shù)都沒有。又比如,兩市A股中,今天有幾只個股的收盤價在 10日均線之上,用縱向變量(指標)也沒有辦法,因為縱向變量(指標)只能在某一個股或指數(shù)中才可以比較。而多股間橫向的比較和統(tǒng)計,是很有參考價值的。所以,相對于原來的縱向變量(指標),就有了橫向變量這一說。
橫向指標用在公式中,也是遍歷每根K線的,與一般的基本函數(shù)的遍歷有點不同,因為它的數(shù)據(jù)來源不同,是對應于每根K線的日子以及哪個日子中對應板塊中的個股數(shù)和選擇條件等。
橫向統(tǒng)計涉及全場數(shù)據(jù)的計算,而且可以增加到數(shù)千項之多,運算量驚人,目前無法做到實時刷新(動態(tài)顯示),只能手工刷新(建議盤后進行)。
橫向變量主要用于盤后。要動態(tài)刷新,目前沒有即時刷新的設置,可能考慮到計算量較大吧。要是不怕麻煩,過幾分鐘就刷新一下(刷新一次,就相當于重新計算一遍),也可以看到"動態(tài)"漲跌值排名。
橫向變量在公式中的輸出,與K線的日子有絕對的關系,與當時顯示的個股或指數(shù)沒有多大關系,在某個股中的輸出和其他任一個股中的輸出都一樣。
橫向變量所用的統(tǒng)計方法,是對所選板塊中的個股或指數(shù),進行全盤的統(tǒng)計。最近所加的"最大值"、"最小值"是兩個極值,是對排序頭尾的取值。而要取橫向排序中的第二名、第三名,單用橫向變量目前還做不到。但不排除此功能以后會開發(fā)出來。
排名名次要用擴展數(shù)據(jù)!橫向變量目前做不到。
如果做橫向變量或擴展數(shù)據(jù),在當時選擇的計算周期如果是日線,則今天刷新,"原本排列"就保存在昨天。橫向變量實際上即是橫向的,從時間上又是縱向的。
擴展數(shù)據(jù)是橫向的,引用時從時間上又是縱向
0077--擴展數(shù)據(jù)
函數(shù):EXTDATA(N)
描述:取得日線擴展數(shù)據(jù)(1-13); 分析家N取1--11
類別:擴展數(shù)據(jù)
參數(shù):N取1--13
說明:在[擴展數(shù)據(jù)管理]中定義并計算數(shù)據(jù)(本函數(shù)僅在日線分析周期有效)。
有些數(shù)據(jù),非常重要,可是隨著時間的推移,就再也找不到了。比如說某個股一天之中的總成交次數(shù),又比如說某個股在上個月的1號,漲幅排名是第幾?這些信息,要么以后就查不到了,要么在公式中也無法引用。而擴展數(shù)據(jù)庫能解決這些問題。擴展數(shù)據(jù)庫能夠隨日線保存這些數(shù)據(jù),而且是計算好了的結果,所以引用時速度也很快。
擴展數(shù)據(jù)有兩個用處:1、保存計算值。2、保存計算值的排名結果。目前飛狐的擴展數(shù)據(jù),可以最多做13個。太多了好象也沒有多大意思,因為擴展數(shù)據(jù)計算歷史數(shù)據(jù)有點慢,而且也較占空間。歷史的數(shù)據(jù)量大,當然慢了??墒怯嬎愫弥?,以后只要更新當天的,速度還是較快的。計算擴展數(shù)據(jù),某個股,一個交易日,一次只能得到一個結果數(shù)據(jù),而且所選之指標,也應該是唯一的。
想保存所有分筆成交記錄?擴展數(shù)據(jù)是做不到的。
缺省數(shù)據(jù):某一天,或者說個股停盤等原因,沒有計算結果,系統(tǒng)就將缺省數(shù)據(jù)保存到擴展數(shù)據(jù)庫中。
在進行排序時,有兩種排序方式,一種為0-N自然排序,一種為1-1000歸一化排序,區(qū)別在于:自然排序按自然數(shù)來排列名次,排名在第幾結果就是幾,第一名,返回0;第二名,返回1;第N名,返回N-1。而歸一化排序時將排序歸一化到0-1000之間,第一位為0,最后一位為1000,采用公式" 排名*1000/參加排名的股票數(shù)"來進行計算。歸一化排序的好處是,不隨股票數(shù)目的增加而對排序結果有較大的影響。
怎么引用擴展數(shù)據(jù)?EXTDATA(N);N指引用第幾組擴展數(shù)據(jù),從1到13。比如把分筆成交次數(shù)的擴展數(shù)據(jù)建立在第一組中,引用時,就用 EXTDATA(1);這個公式,在某個股中,就輸出此股在當天的總成交次數(shù)。擴展數(shù)據(jù),有橫向的性質,特別是用排名時。同時又是縱向的,只要有數(shù)據(jù),以前的日子里,也可以返回所得值。而且從理論上說,擴展數(shù)據(jù)庫是可以永遠保存的。由于計算量較大,目前擴展數(shù)據(jù)不支持即時刷新。不過可以手工刷新。
0078--峰點公式
為了能找到合適的COND,用于舉例子,先介紹一組概念:
高點:在2N+1根K線中,中間這根K線的H,要大于等于左右N根K線的H。在N+1根K線中,有等高點出現(xiàn),取最先出現(xiàn)的。
低點:在2N+1根K線中,中間這根K線的L,要小于等于左右N根K線的L。在N+1根K線中,有等低點出現(xiàn),取最先出現(xiàn)的。
峰點:高點和低點,合稱為峰點。
這個定義,意合于技術分析的老祖宗道氏:"只要平均指數(shù)的最高點超過了前期的最高點,它就處于牛市時期;當最低點低于前期的最低點時,它處于熊市時期。"這里我們撇開向上、向下分形和分形峰狀點等概念,以免把概念復雜化。
也為了不讓公式一來就過于復雜,我們先取N為2來做公式。簡介到后面,可以看到,N是可以作為峰點公式的參數(shù)進行調整的。
公式名稱:FENG2
公式說明:供引用
公式內容:
{峰點參數(shù)暫定為2}
A:=REF(H,2);{中間K線的最高價}
B:=A>=REF(H,4) AND A>=REF(H,3) AND A>=REF(H,1) AND A>=H;{中間K線的最高價大于等于兩邊共四根K線的最高價}
D:=BACKSET(B,3);{將當前位置和之前2個周期的數(shù)值設為1}
HD:FILTER(D,2);{找到高點后,過濾掉其后2周期內可能出現(xiàn)的等高點。輸出高點}
A2:=REF(L,2);{中間K線的最低價}
B2:=A2<=REF(L,4) AND A2<=REF(L,3) AND A2<=REF(L,1) AND A2<=L;{中間K線的最低價小于等于兩邊共四根K線的最低價}
D2:=BACKSET(B2,3);{將當前位置和之前2個周期的數(shù)值設為1}
LD:FILTER(D2,2);{找到低點后,過濾掉其后2周期內可能出現(xiàn)的等低點。輸出低點}
{后面有些例子,就從這個公式中引用信號。}
用法: 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。如用其它數(shù)據(jù),大于等于1的,條件滿足;小于1,條件就不滿足。
2、TYPE圖標,現(xiàn)在已經(jīng)有12種,用下面的公式,在000829上可以全部顯示出來。當TYPE取大于等于12的數(shù)時,都顯示黃球。
當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);{主圖疊加}
當紅球和綠球連續(xù)顯示時,立體感會強一些。
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等。現(xiàn)在可用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:信號出現(xiàn)在PRICE的正中;
ALIGN1:信號出現(xiàn)在PRICE下邊(十分靠近);
ALIGN2:信號出現(xiàn)在PRICE上邊(十分靠近);
ALIGN3:信號出現(xiàn)在主圖的中間;
ALIGN4:信號出現(xiàn)在主圖的最上邊;
ALIGN5:信號出現(xiàn)在主圖的最下邊;
在高低點上作圖標,可以使高低點更明確了。
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;{主圖疊加}
這根線有些趨勢線的意思了。由于趨勢線的主觀性頗強,只有多設參數(shù)才能滿足多數(shù)人的要求。
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));{主圖疊加}
說明:在圖形上顯示數(shù)字
用法: DRAWNUMBER(COND,PRICE,NUMBER,PRECISION),當COND條件滿足時,在PRICE位置書寫數(shù)字NUMBER(可以為常數(shù)或數(shù)組序列),PRECISION為小數(shù)顯示位數(shù)(取值范圍0-3)??葾LIGN0-5定義對齊方式。
示例:DRAWNUMBER(CLOSE/OPEN>1.08,HIGH,(CLOSE-REF(C,1))/REF(C,1)*100,2)表示當日漲幅大于8%時在最高價位置顯示漲幅(相對開盤價的百分比)。
這個函數(shù)的特色是,在NUMBER位置可以放變量。
NUMBER,數(shù)字。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);{倒數(shù)第二個高點}
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);{倒數(shù)第二個高點}
D3:=BACKSET(E2,REF(BARSLAST(B),1)+2);
E3:=D3>REF(D3,1);{倒數(shù)第三個高點}
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)表示在創(chuàng)10天新高點之間畫折線。
POLY,多個的。
支持POINTDOT、LINETHICK、COLOR、SHIFT這四個描述函數(shù)。
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;{主圖疊加}
參數(shù)可調整的峰點公式:
A:=REF(H,N)=HHV(H,2*N+1);{當前位置N天之前的最高價是最近2*N+1根K線中的最高價}
B:=FILTER(A,N); {當高點附近有等高的K線出現(xiàn)時,會影響后續(xù)高點的判斷,所以要過濾}
D:=BACKSET(B,N+1);{將當前位置及前N周期的數(shù)值設為1,所以要用N+1}
HD:=FILTER(D,N); {當高點附近有等高的K線出現(xiàn),取第一個,過濾掉后面N個周期之內出現(xiàn)的}
A2:=REF(L,N)=LLV(L,2*N+1);{求低點的過程與求高點的過程同理}
B2:=FILTER(A2,N);
D2:=BACKSET(B2,N+1);{參數(shù)N:1,3,999}
LD:=FILTER(D2,N);{主圖疊加}
DRAWICON(HD,H,10),ALIGN2;{在高點附近顯示紅球}
DRAWICON(LD,L,11),ALIGN1;{在低點附近顯示綠球}
可以說,這個公式用了未來函數(shù)BACKSET,但是用在日K線中,盤后是沒有未來數(shù)據(jù)的,因為引用的全是已經(jīng)發(fā)生過的不可變的數(shù)據(jù)了。
至于即時盤中的未來數(shù)據(jù),那是說不到底的事,基本所有的公式,都有即時盤中未來數(shù)據(jù)。
紅球綠球作為峰點標志,在顯示K線不多的情況下,還比較清楚。但當K線數(shù)較多時,因為球的大小是不變的,所以看起來比較亂。故可用以下公式:
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;
函數(shù):HHVBARS(X,N)
描述:上一高點位置
類別:引用
參數(shù):X為數(shù)組,N為計算周期
返回:返回數(shù)組
說明:求N周期內X最高值到當前周期數(shù),N=0表示從第一個有效值開始統(tǒng)計
示例:HHVBARS(HIGH,0)求得歷史新高到當前的周期數(shù)
HHV、HHVBARS這兩個函數(shù)一起用,可以找到當前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}