飛狐基本函數(shù)簡(jiǎn)介之繪圖函數(shù)
這組函數(shù)的功能是在主圖或副圖上設(shè)定條件輸出圖象、圖標(biāo)、直線、文字、數(shù)字、指標(biāo)線、指標(biāo)柱等,全部可以單獨(dú)使用。
個(gè)人感覺(jué),飛狐的強(qiáng)大功能,在此組函數(shù)中有淋漓盡致的發(fā)揮。無(wú)論在表面(美感),還是實(shí)質(zhì)(提高工作效率)上,都有良好表現(xiàn)。
毫無(wú)例外的是,這組函數(shù)中,都帶有COND。CONDITION,條件,狀態(tài)。COND在這里可作為條件理解。
為了能找到合適的COND,用于舉例子,請(qǐng)?jiān)试S我先介紹一組概念。
高點(diǎn):在2N+1根K線中,中間這根K線的H,要大于等于左右N根K線的H。在N+1根K線中,有等高點(diǎn)出現(xiàn),取最先出現(xiàn)的。
低點(diǎn):在2N+1根K線中,中間這根K線的L,要小于等于左右N根K線的L。在N+1根K線中,有等低點(diǎn)出現(xiàn),取最先出現(xiàn)的。
峰點(diǎn):高點(diǎn)和低點(diǎn),合稱(chēng)為峰點(diǎn)。
(這個(gè)定義,意合于技術(shù)分析的老祖宗道氏:“只要平均指數(shù)的最高點(diǎn)超過(guò)了前期的最高點(diǎn),它就處于牛市時(shí)期;當(dāng)最低點(diǎn)低于前期的最低點(diǎn)時(shí),它處于熊市時(shí)期。”這里我們撇開(kāi)向上、向下分形和分形峰狀點(diǎn)等概念,以免把概念復(fù)雜化。)
也為了不讓公式一來(lái)就過(guò)于復(fù)雜,我們先取N為2來(lái)做公式。簡(jiǎn)介到后面,可以看到,N是可以作為峰點(diǎn)公式的參數(shù)進(jìn)行調(diào)整的。
公式名稱(chēng):FENG2
公式說(shuō)明:供引用
公式內(nèi)容:
{峰點(diǎn)參數(shù)暫定為2}
A:=REF(H,2);{中間K線的最高價(jià)}
B:=A>=REF(H,4) AND A>=REF(H,3) AND A>=REF(H,1) AND A>=H;{中間K線的最高價(jià)大于等于兩邊共四根K線的最高價(jià)}
D:=BACKSET(B,3);{將當(dāng)前位置和之前2個(gè)周期的數(shù)值設(shè)為1}
HD:FILTER(D,2);{找到高點(diǎn)后,過(guò)濾掉其后2周期內(nèi)可能出現(xiàn)的等高點(diǎn)。輸出高點(diǎn)}
A2:=REF(L,2);{中間K線的最低價(jià)}
B2:=A2<=REF(L,4) AND A2<=REF(L,3) AND A2<=REF(L,1) AND A2<=L;{中間K線的最低價(jià)小于等于兩邊共四根K線的最低價(jià)}
D2:=BACKSET(B2,3);{將當(dāng)前位置和之前2個(gè)周期的數(shù)值設(shè)為1}
LD:FILTER(D2,2);{找到低點(diǎn)后,過(guò)濾掉其后2周期內(nèi)可能出現(xiàn)的等低點(diǎn)。輸出低點(diǎn)}
{后面有些例子,就從這個(gè)公式中引用信號(hào)。}
一、
函數(shù): DRAWICON
參數(shù): 無(wú)
用法: DRAWICON(COND,PRICE,TYPE),當(dāng)COND條件滿(mǎn)足時(shí),在PRICE位置畫(huà)TYPE號(hào)圖標(biāo)。
說(shuō)明: 在圖形上繪制小圖標(biāo),其中TYPE可選7種圖標(biāo),編碼為1-7(1-3為小臉,4、5為上下箭頭,6、7為紅綠小旗)。TYPE為 字符串時(shí)可顯示用戶(hù)自制BMP圖。
示例: DRAWICON(CLOSE>OPEN,LOW,1);表示當(dāng)收陽(yáng)時(shí)在最低價(jià)位置畫(huà)1號(hào)圖
DRAWICON(C>O,L,'MyBMP')表示當(dāng)收陽(yáng)時(shí)在最低價(jià)位置畫(huà)FmlDLL子目錄下的自制圖標(biāo)MyBMP.BMP
1、COND條件,一般是指判斷的結(jié)果,不是0就是1。如用其它數(shù)據(jù),大于等于1的,條件滿(mǎn)足;小于1,條件就不滿(mǎn)足。
2、TYPE圖標(biāo),現(xiàn)在已經(jīng)有12種,用下面的公式,在000829上可以全部顯示出來(lái)。當(dāng)TYPE取大于等于12的數(shù)時(shí),都顯示黃球。
當(dāng)TYPE取0時(shí),顯示的是笑臉(這個(gè)公式中沒(méi)有做進(jìn)去,自己可以試一下)。
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);{主圖疊加}
當(dāng)紅球和綠球連續(xù)顯示時(shí),立體感會(huì)強(qiáng)一些。
DRAWICON(C>=MA(C,30),MA(C,30),10);
DRAWICON(C<MA(C,30),MA(C,30),11);{主圖疊加}
3、PRICE是用于定位圖標(biāo)的位置的。一般用1.01*H,或者0.99*L等?,F(xiàn)在可用ALIGN(0-5)指定對(duì)齊位置。
用這個(gè)公式來(lái)試(主圖疊加)
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;
可以初步得出結(jié)論:
ALIGN0:信號(hào)出現(xiàn)在PRICE的正中;
ALIGN1:信號(hào)出現(xiàn)在PRICE下邊(十分靠近);
ALIGN2:信號(hào)出現(xiàn)在PRICE上邊(十分靠近);
ALIGN3:信號(hào)出現(xiàn)在主圖的中間;
ALIGN4:信號(hào)出現(xiàn)在主圖的最上邊;
ALIGN5:信號(hào)出現(xiàn)在主圖的最下邊;
在高低點(diǎn)上作圖標(biāo),可以使高低點(diǎn)更明確了。
A:="FENG2.LD";
B:="FENG2.HD";
DRAWICON(A,L,11),ALIGN1;
DRAWICON(B,H,10),ALIGN2;{主圖疊加}
4、可以自由調(diào)用MyBMP.BMP圖到顯示位置,大大增強(qiáng)了輸出的效果。你只要看到好看的圖,可以隨時(shí)抓拍過(guò)來(lái),做成BMP文件,放到FmlDLL子目錄下,就可以調(diào)用了。
A:="FENG2.LD";
B:="FENG2.HD";
DRAWICON(A,L,'PIG'),ALIGN1;
DRAWICON(B,H,'PIG'),ALIGN2;{主圖疊加。如果你沒(méi)有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');{主圖疊加。如果你想要這個(gè)公式有顯示,可到樓下下載,解壓縮到FmlDLL子目錄下}
內(nèi)有40個(gè)不同顏色的小球。
二、
函數(shù): DRAWLINE
參數(shù): 無(wú)
用法: DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND),當(dāng)COND1條件滿(mǎn)足時(shí),在PRICE1位置畫(huà)直線起點(diǎn),當(dāng)COND2條件滿(mǎn)足時(shí),在PRICE2位置畫(huà)直線終點(diǎn),EXPAND為延長(zhǎng)類(lèi)型。
說(shuō)明: 在圖形上繪制直線段。
示例: DRAWILINE(HIGH>=HHV(HIGH,20),HIGH,LOW<=LLV(LOW,20),LOW,1);表示在創(chuàng)20天新高與創(chuàng)20天新低之間畫(huà)直線并且向右延長(zhǎng)。
DRAWLINE是唯一一個(gè)一句里面用到兩個(gè)COND的繪圖函數(shù)。因?yàn)樗枰獌蓚€(gè)點(diǎn)來(lái)決定一直線。
COND1相當(dāng)于指定K線位置(橫坐標(biāo)),PRICE1相當(dāng)于是指定價(jià)位(縱坐標(biāo)),這樣一個(gè)點(diǎn)在平面上的位置就決定了。
DRAWLINE是從第一點(diǎn)畫(huà)到第二點(diǎn)的,即有起點(diǎn)與終點(diǎn)的順序關(guān)系:第一點(diǎn)出現(xiàn)的時(shí)間,要在第二點(diǎn)之前。否則線是畫(huà)不出來(lái)的。
EXPAND,擴(kuò)張、發(fā)展,這里是延伸的意思吧。一般取0,不延長(zhǎng);取1,延長(zhǎng)。實(shí)際上是取大于等于1的數(shù)就延長(zhǎng),小于1就不延長(zhǎng)。
DRAWLINE目前支持POINTDOT、LINETHICK、COLOR、SHIFT這四個(gè)描述函數(shù)。
舉個(gè)例子吧。
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ì)線的主觀性頗強(qiáng),只有多設(shè)參數(shù)才能滿(mǎn)足多數(shù)人的要求,以后有機(jī)會(huì)再作介紹。
DRAWLINE畫(huà)出的線,應(yīng)該比手工畫(huà)出的線精確一些。(DRAWLINE畫(huà)線的靈敏度,要比手工畫(huà)線低,所以說(shuō)DRAWLINE畫(huà)出的線精確,就未必對(duì)。)
主要用于畫(huà)斜線,水平線我們一般可以另想辦法。因?yàn)樵趫D中顯示直線,并非DRAWLINE的“專(zhuān)利”。
比如:
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));{主圖疊加}
這里出個(gè)“難題”吧:
怎么在主圖上畫(huà)一根直線?直線的高度是今天收盤(pán)價(jià)。就是這個(gè)樣子的:
三、
函數(shù): DRAWTEXT
參數(shù): 無(wú)
用法: DRAWTEXT(COND,PRICE,TEXT),當(dāng)COND條件滿(mǎn)足時(shí),在PRICE位置書(shū)寫(xiě)文字TEXT,可顯示多行文本,用"\n"換行。
說(shuō)明: 在圖形上顯示文字。
示例: DRAWTEXT(CLOSE/OPEN>1.08,LOW,'大陽(yáng)線');表示當(dāng)日漲幅大于8%時(shí)在最低價(jià)位置顯示'大陽(yáng)線'字樣。
DRAWTEXT(CLOSE/OPEN>1.08,LOW,'好呀\n大漲啦');可顯示多行文本,用"\n"換行;
在某些滿(mǎn)足條件的地方直接顯示文字或字符,比顯示圖標(biāo)要更直觀一些。
此函數(shù)可以用ALIGN來(lái)定位水平位置。而ALIGN用在DRAWICON上定位的是高低的位置。
從下面例子可以看到,ALIGN(0~2)定義水平位置的意義:
ALIGN0:居中;
ALIGN1:偏右;
ALIGN2:偏左。
也可以用SHIFT函數(shù)進(jìn)行向右水平移位。
所顯示的文字或字符,可以用COLOR函數(shù)來(lái)定義顏色。至于文字的大小,則采用系統(tǒng)默認(rèn)的大小,在此函數(shù)中無(wú)法定義。
此函數(shù)單獨(dú)使用有其用途,與DRAWNUMBER配合應(yīng)用時(shí),效果更不錯(cuò)。后面介紹到DRAWNUMBER時(shí)再舉例子。
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);{離目前最近的一個(gè)高點(diǎn)}
D2:=BACKSET(E1,REF(BARSLAST(B),1)+2);
E2:=D2>REF(D2,1);{倒數(shù)第二個(gè)高點(diǎn)}
D3:=BACKSET(E2,REF(BARSLAST(B),1)+2);
E3:=D3>REF(D3,1);{倒數(shù)第三個(gè)高點(diǎn)}
DRAWTEXT(E1,H*1.01,'☆TEXT:'),COLORRED,ALIGN0;
DRAWTEXT(E2,H*1.01,'★TEXT:'),COLORGREEN,ALIGN1;
DRAWTEXT(E3,H*1.01,'▓TEXT:'),COLORYELLOW,ALIGN2;{主圖疊加}
四、
函數(shù): POLYLINE
參數(shù): 無(wú)
用法: POLYLINE(COND,PRICE),當(dāng)COND條件滿(mǎn)足時(shí),以PRICE位置為頂點(diǎn)畫(huà)折線連接。
說(shuō)明: 在圖形上繪制折線段。
示例: POLYLINE(HIGH>=HHV(HIGH,20),HIGH);表示在創(chuàng)20天新高點(diǎn)之間畫(huà)折線。
POLY,多個(gè)的。
支持POINTDOT、LINETHICK、COLOR、SHIFT這四個(gè)描述函數(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ù): STICKLINE
參數(shù): 無(wú)
用法: STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY),當(dāng)COND條件滿(mǎn)足時(shí),在PRICE1和PRICE2位置之間畫(huà)柱狀線,寬度為WIDTH可為0---100(10為標(biāo)準(zhǔn)間距),EMPTH不為0則畫(huà)空心柱。
說(shuō)明: 在圖形上繪制柱線。
示例: STICKLINE(CLOSE>OPEN,CLOSE,OPEN,0.8,1);表示畫(huà)K線中陽(yáng)線的空心柱體部分。
再說(shuō)明三點(diǎn):
1、PRICE1和PRICE2沒(méi)有順序關(guān)系,即何者在前何者在后都不影響語(yǔ)句的執(zhí)行。
2、WIDTH寬度,支持小數(shù)。用1和用0.1,會(huì)有很大的差別。取7時(shí)和主圖的K線寬度差不多。
以下的副圖公式,畫(huà)出的K線,與主圖中顯示的K線差不多。有些“主圖疊加公式”,疊加在副圖中也未嘗不可了。
STICKLINE(C>O OR (C=O AND C>REF(C,1)),O,C,7,1),colorred;{畫(huà)出紅K實(shí)體}
STICKLINE((C>O AND C<>H) OR (C=O AND C>REF(C,1)),C,H,0.1,0),colorred;{畫(huà)出紅K上影線}
STICKLINE((C>O AND L<>O) OR (C=O AND C>REF(C,1)),L,O,0.1,0),colorred;{畫(huà)出紅K下影線}
STICKLINE(C<O OR (C=O AND C<=REF(C,1)),C,O,7,0),colorcyan;{畫(huà)出青K實(shí)體}
STICKLINE(C<O OR (C=O AND C<=REF(C,1)),L,H,0.1,0),colorcyan;{畫(huà)出青K影線。因?yàn)榍郖是實(shí)心的,所以影線從中穿過(guò)}
MA(C,5);
3、用STICKLINE可以用兩種方法做出多色彩K線效果。
一種是橫向的,將K線實(shí)體從O到C分為N等份,每個(gè)小格中放入不同的但比較連續(xù)的顏色。
這里隨便舉個(gè)例子,N取4,只對(duì)陽(yáng)線加了效果。其它變化,道理是一樣的。
A:=C-O;
B:=C>O;
STICKLINE(B,O,O+A/4,8,0),COLORFF99FF;
STICKLINE(B,O+A/4,O+A*2/4,8,0),COLORFF00FF;
STICKLINE(B,O+A*2/4,O+A*3/4,8,0),COLOR9900FF;
STICKLINE(B,O+A*3/4,O+A,8,0),COLOR0000FF;{主圖疊加}
還有一種方法就是縱向的了。先在較寬的K線中加顏色,然后把寬度逐步收窄,再加顏色覆蓋以前的的,這樣從縱向看,一根K線中就有不同顏色了。效果做得好的,可以做到賞心悅目。
B:=C>O;
STICKLINE(B,O,C,8,0),COLORFF99FF;
STICKLINE(B,O,C,6,0),COLORFF00FF
STICKLINE(B,O,C,4,0),COLOR9900FF;
STICKLINE(B,O,C,2,0),COLOR0000FF;{主圖疊加}
六、
函數(shù): DRAWNUMBER(COND,PRICE,NUMBER,PRECISION)
參數(shù): NUMBER(可以為常數(shù)或數(shù)組序列),PRECISION為精度(取值范圍0-3),即顯示到小數(shù)點(diǎn)后PRECISION位。
用法: DRAWNUMBER(COND,PRICE,NUMBER,PRECISION),當(dāng)COND條件滿(mǎn)足時(shí),在PRICE位置書(shū)寫(xiě)數(shù)字
說(shuō)明: 在圖形上顯示數(shù)字。
示例: DRAWNUMBER(CLOSE/OPEN>1.08,HIGH,(CLOSE-OPEN)/OPEN*100,2);表示當(dāng)日漲幅大于8%時(shí)在最低價(jià)位置顯示漲幅(相對(duì)開(kāi)盤(pán)價(jià)的百分比)。
這個(gè)函數(shù)的特色是,在NUMBER位置可以放變量。
NUMBER,數(shù)字。DRAWNUMBER是DRAWTEXT的“兄弟”,也可以用ALIGN(0~2)來(lái)定義水平位置,方法相同。
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);{離目前最近的一個(gè)高點(diǎn)}
D2:=BACKSET(E1,REF(BARSLAST(B),1)+2);
E2:=D2>REF(D2,1);{倒數(shù)第二個(gè)高點(diǎn)}
DRAWTEXT(E1,H*1.02,'高點(diǎn)價(jià):'),COLORGREEN,ALIGN2;
DRAWNUMBER(E1,H*1.02,H,2),COLORGREEN,ALIGN1;
DRAWTEXT(E2,H*1.02,'高點(diǎn)價(jià):'),COLORYELLOW,ALIGN2;
DRAWNUMBER(E2,H*1.02,H,2),COLORYELLOW,ALIGN1;{主圖疊加}
七、
函數(shù): FILLRGN(COND,PRICE1,PRICE2)
參數(shù):
用法: FILLRGN(COND,PRICE1,PRICE2),當(dāng)COND條件滿(mǎn)足時(shí),以COLOR填充PRICE1和PRICE2的區(qū)間
說(shuō)明: 繪制指標(biāo)區(qū)間彩帶。
示例: FILLRGN(MA1>MA2, MA1,MA2),colorred; 表示MA1>MA2時(shí)以紅色填充MA1和MA2之間的區(qū)域。
FILL,充滿(mǎn),填充。RGN可能是REGION,地區(qū),地域。
用這個(gè)函數(shù),再加DRAWICON可以調(diào)用BMP圖象文件的功能,可以作出象風(fēng)景一樣的圖。
這里舉個(gè)簡(jiǎn)單的例子:
A:=MA(C,5);
B:=MA(C,10);
FILLRGN(1,H*1.01,H*1.02),COLORFFFF66;
FILLRGN(A>=B,A,B),COLORMAGENTA;
FILLRGN(A<B,A,B),COLORGREEN;
FILLRGN(1,L*0.99,L*0.98),COLORFF99CC;{主圖疊加}
416
八、
函數(shù): PARTLINE(COND,PRICE)
參數(shù):
用法: PARTLINE(COND,PRICE),滿(mǎn)足COND條件繪制PRICE連線。
說(shuō)明: 分段繪制指標(biāo)線
示例: PARTLINE(C>REF(C,1),C),colorred;表示收盤(pán)大于前收以紅色繪制收盤(pán)價(jià)連線。
PART,部分,局部。值得一提的是,PARTLINE支持多種描述函數(shù),如例所見(jiàn)。
A:=MA(C,5);
B:=MA(C,10);
PARTLINE(A>=B,A),COLORRED,POINTDOT;
PARTLINE(A>=B,B),COLORGREEN,CIRCLEDOT;
PARTLINE(A<B,A),COLORGREEN,CROSSDOT,LINETHICK3;
PARTLINE(A<B,B),COLORRED,SHIFT2;{主圖疊加}
九、
函數(shù): VERTLINE(COND)
參數(shù):
用法: VERTLINE(COND),在COND條件滿(mǎn)足的周期處畫(huà)垂直線
說(shuō)明: 在圖形上繪制垂直線段
示例: DVERTLINE(HIGH>=HHV(HIGH,20);表示在創(chuàng)20天新高時(shí)畫(huà)垂直線
VERTICAL,垂直的。
VERTLINE目前可以用POINTDOT、LINETHICK、COLOR、SHIFT這四個(gè)描述函數(shù)來(lái)描述。
這個(gè)函數(shù),主要是用于畫(huà)線看時(shí)間的。費(fèi)波納契周期,可以用這個(gè)函數(shù)畫(huà)出來(lái)的。
這里舉個(gè)例子,把日K線中每月的第一個(gè)交易日中,畫(huà)一根垂直線。
A:=MONTH>REF(MONTH,1);
VERTLINE(A),COLOR808040,POINTDOT;{主圖疊加}
十、
函數(shù): DRAWYITEXT(COND,PRICE,CODE,TYPE)
參數(shù):
用法: 在COND在圖形上顯示易學(xué)文字,可ALIGN0-3定義對(duì)齊方式。
說(shuō)明: 當(dāng)COND條件滿(mǎn)足時(shí),在PRICE位置書(shū)寫(xiě)TYPE類(lèi)型的CODE的對(duì)應(yīng)文字
TYPE為常數(shù),取0--1,分別表示計(jì)算的是干支、64卦,CODE為對(duì)應(yīng)的代碼
示例: DRAWYITEXT(CLOSE/OPEN>1.05,LOW, GANZHI(DATE*100, 2),0),表示當(dāng)日漲幅大于5%時(shí)在最低價(jià)位置顯示日干支;
DRAWYITEXT(REF(CLOSE,2)>REF(OPEN,2) AND REF(CLOSE,1)>REF(OPEN,1) AND CLOSE>OPEN, LOW, KGUA(1, 1), 1 ),表示連二陽(yáng)時(shí)在最低價(jià)位置顯示K線卦象。
如下例子:K線卦
kk:=KGUA(0,6);
DRAWYITEXT(c>0,mod(BARSCOUNT(c),6),kk,1); {附圖指標(biāo)}
十一、
函數(shù): DRAWBKBMP(COND,BMP)
參數(shù):
用法: 當(dāng)圖形上最后一組COND條件滿(mǎn)足時(shí),以MyBMP做背景:
說(shuō)明: 根據(jù)條件設(shè)置背景圖
示例: 因?yàn)橄到y(tǒng)K線先畫(huà),會(huì)被后來(lái)的指標(biāo)圖覆蓋了
這種公式K線要自己畫(huà),以下供參考
DRAWBKBMP(c>0,'mybmp');
STICKLINE(c>o or c=o and c>ref(c,1),l,h,0.1,0),colorred;
STICKLINE(c>o or c=o and c>ref(c,1),o,c,7,0),colorred;
STICKLINE(c<o or c=o and c<=ref(c,1),l,h,0.1,0),colorcyan;
STICKLINE(c<o or c=o and c<=ref(c,1),o,c,7,0),colorcyan;
把公式設(shè)為主圖、主圖疊加
十二、
函數(shù): DRAWGBK(COND,COLOR1, COLOR2,D)
參數(shù):
用法: 當(dāng)COND條件滿(mǎn)足時(shí),以COLOR1到COLOR2漸變色填充子圖區(qū)域,D=0表示從左到右,D=1表示從上到下
說(shuō)明: 繪制漸變背景色
示例: DRAWGBK(C>O, COLORRGB(255,0,0), COLORRGB(255,255,0),0);
表示圖形上最后一組C>O時(shí)從左到右從紅色到黃色漸變填充子圖。
飛狐基本函數(shù)簡(jiǎn)介之時(shí)間函數(shù)
基本函數(shù)全是遍歷所有從前到后(從第一根到最后一根)K線的,取得每根K線上的時(shí)間,就用時(shí)間函數(shù)了。
飛狐有獨(dú)有的自然日、陰陽(yáng)歷、節(jié)氣、月相、易學(xué)相關(guān)分析,在時(shí)間函數(shù)中就有相應(yīng)的體現(xiàn)。
時(shí)間周期分析是技術(shù)分析的一大分枝吧,江恩等人樂(lè)此不疲。不過(guò)也有不少人不相信。
一、
函數(shù): DAY
參數(shù): 無(wú)
返回: 返回有效值范圍為(1-31).
說(shuō)明: 取得該周期的日期。
函數(shù): WEEKDAY
參數(shù): 無(wú)
返回: 返回有效值范圍為(0-6),0表示星期天
說(shuō)明: 取得該周期的星期數(shù)。
函數(shù): MONTH
參數(shù): 無(wú)
返回: 返回有效值范圍為(1-12)
說(shuō)明: 取得該周期的月份。
函數(shù): YEAR
參數(shù): 無(wú)
返回: 返回有效值范圍為(1970-2038)
說(shuō)明: 取得該周期的年份。
與DATE函數(shù)不同,這些函數(shù)所輸出的數(shù)值,與我們平時(shí)使用時(shí)是真實(shí)對(duì)應(yīng)的,比如DAY返回3,當(dāng)時(shí)就是3號(hào)。
小周期K線中使用大周期的時(shí)間函數(shù)不成問(wèn)題,反之則不行。比如在分筆成交圖中,也可以取得年、月等。
年:YEAR,LINETHICK0;
月:MONTH;
周:WEEKDAY;
日:DAY;
二、
函數(shù): DATE
參數(shù): 無(wú)
返回: 返回有效值范圍為(700101-1341231),表示19700101-20341231
說(shuō)明: 取得該周期從1900以來(lái)的的年月日。
為什么當(dāng)時(shí)設(shè)計(jì)這個(gè)函數(shù)時(shí),不直接取得年月日?不得而知。
后來(lái)還是給發(fā)現(xiàn)了一些蛛絲馬跡,
年月日:DATE+19000000;
年(200)月日:DATE-1000000;
YMD:YEAR*10000+MONTH*1000+DAY;
只有第二句的輸出始終是對(duì)的,其它兩句,輸出可能都會(huì)增1或減1。FH和FXJ一樣,都有這個(gè)問(wèn)題。
這就是DATE不直接取得年月日的原因。對(duì)于其它整數(shù)部分的位數(shù)達(dá)8位的數(shù)的運(yùn)算,我們也可以知道,個(gè)位數(shù)的精確度是有問(wèn)題的。
********************************************
DATE 函數(shù)使用的注意事項(xiàng)
用公式檢測(cè):
DATE+19000000;
1.有些日期結(jié)果不對(duì);
2.DATE+19000000+1;不起作用,只有加2以上才起作用!
是浮點(diǎn)計(jì)算造成的誤差,寫(xiě)公式時(shí)盡量用DATE表述。
只好“壓縮”使用了。
比如大盤(pán)的成交額,不用元為單位,用萬(wàn)元或億元為單位。
數(shù)據(jù)的使用,無(wú)需追求過(guò)多的位數(shù),要看相對(duì)誤差。
目前可以正確處理的整數(shù)部分的位數(shù)達(dá)8位,相對(duì)誤差已經(jīng)非常的小了。
本來(lái)可以顯示小數(shù)的,大概是1a001提了建議后,這類(lèi)數(shù)據(jù)的顯示,限制了小數(shù)部分的顯示了。
只好這樣來(lái)處理了:
mod(YEAR,100)*10000+MONTH*100+DAY
年號(hào)只用2位數(shù)表示。
******************************************
三、
函數(shù): HOUR
參數(shù): 無(wú)
返回
飛狐基本函數(shù)簡(jiǎn)介之引用函數(shù)
引用函數(shù)主要是向前引用數(shù)據(jù)。BACKSET可以理解為向后引用某些判斷信號(hào),并不能引用具體數(shù)據(jù)。
股市技術(shù)分析主要是根據(jù)已經(jīng)發(fā)生的數(shù)據(jù),來(lái)推測(cè)未來(lái)走向的可能,所以引用函數(shù)在公式中應(yīng)用得最多,具體使用時(shí),奧妙也最多。有些東西實(shí)在不能鋪開(kāi)多講,否則篇幅會(huì)了無(wú)窮盡,只能急剎車(chē)。不當(dāng)之處,請(qǐng)各位多多指正。
一、
函數(shù): COUNT(X,N)
參數(shù): X為數(shù)組,N為計(jì)算周期
返回: 返回?cái)?shù)組
說(shuō)明: 統(tǒng)計(jì)N周期中滿(mǎn)足X條件的周期數(shù),若N=0則從第一個(gè)有效值開(kāi)始。
示例: COUNT(CLOSE>OPEN,20)
表示統(tǒng)計(jì)20周期內(nèi)收陽(yáng)的周期數(shù)
函數(shù): SUM(X,N)
參數(shù): X為數(shù)組,N為計(jì)算周期
返回: 返回?cái)?shù)組
說(shuō)明: 統(tǒng)計(jì)N周期中X的總和,N=0則從第一個(gè)有效值開(kāi)始。
示例: SUM(VOL,0)
表示統(tǒng)計(jì)從上市第一天以來(lái)的成交量總和
COUNT,計(jì)數(shù)。SUM,總數(shù)、和。
當(dāng)數(shù)組為邏輯運(yùn)算判斷的結(jié)果時(shí),COUNT和SUM的返回值是一樣的。一般習(xí)慣上,對(duì)于邏輯運(yùn)算信號(hào),用COUNT統(tǒng)計(jì),返回其它數(shù)值的,用SUM統(tǒng)計(jì)。當(dāng)COUNT統(tǒng)計(jì)一般數(shù)值時(shí),數(shù)組大于等于1時(shí),計(jì)入;小于1時(shí),不計(jì)入。這兩個(gè)函數(shù),主要用于統(tǒng)計(jì)。
用COUNT(CROSS(MA(C,5),MA(C,10)),0);就可以統(tǒng)計(jì)出全部的五天均線上穿十天均線的金叉數(shù)。
用SUM(CROSS(MA(C,5),MA(C,10)),0);和以上得出的結(jié)果應(yīng)該是一樣的。
股市的不隨機(jī)規(guī)律,隱藏在統(tǒng)計(jì)概率之中。用這兩個(gè)函數(shù),可以統(tǒng)計(jì)很多概率性的規(guī)律。
比如,以?xún)商斓氖毡P(pán)價(jià)相比,昨天是下跌的,今天的下跌的概率是多少?
A:=C<REF(C,1);
B:=REF(A,1) AND C>REF(C,1);{昨天下跌,今天上漲}
D:=REF(A,1) AND C=REF(C,1);{昨天下跌,今天平盤(pán)}
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;
平盤(pán)概率:100*COUNT(D,0)/F;
從兩市指數(shù)看,昨天下跌,今天下跌的概率始終大于50%。
那么連跌兩天之后,第三天收盤(pán)的各種概率是多少?
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);{前兩天下跌,今天平盤(pán)}
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;
平盤(pán)概率: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);{前三天下跌,今天平盤(pán)}
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;
平盤(pán)概率:100*COUNT(D,0)/F;
規(guī)律就更明顯了。
不要小看這些數(shù)據(jù)。雖然沒(méi)有有些“高手”做出的成功率達(dá)百分之九十左右的公式那么夸張,但很有意義的。要知道股市中的隨機(jī)因素太多,平衡性很強(qiáng),稍稍的統(tǒng)計(jì)偏向,足可作為有用的參考。
這只是簡(jiǎn)單的例子,用這兩個(gè)函數(shù),可以做出很多的有用的統(tǒng)計(jì)數(shù)據(jù)。
多數(shù)的交易系統(tǒng)的“勝率”,可以由此統(tǒng)計(jì)出來(lái)。
出個(gè)“難題”吧:
有個(gè)MA5金叉MA10作為買(mǎi)入條件,死叉為賣(mài)出條件的交易系統(tǒng),試做一個(gè)副圖公式,以每次買(mǎi)一股計(jì)算,統(tǒng)計(jì)出最后的交易結(jié)果(暫不考慮手續(xù)費(fèi))。買(mǎi)入賣(mài)出均以收盤(pán)價(jià)計(jì)算。
二、
函數(shù): REF(X,N)
參數(shù): X為數(shù)組,N為計(jì)算周期
返回: 返回?cái)?shù)組
說(shuō)明: 引用N周期前的X值。
示例: REF(CLOSE,1)
表示上一周期的收盤(pán)價(jià),在日線上就是昨收
REF:REFERENCED,參考的、引用的。
N可以為變量,常用BARSLAST(X)等。
三、
函數(shù): MA(X,N)
參數(shù): X為數(shù)組,N為計(jì)算周期
返回: 返回?cái)?shù)組
說(shuō)明: 求X的N日移動(dòng)平均值。
算法: (X1+X2+X3+...+Xn)/N
示例: MA(CLOSE,10),表示求10日均價(jià)
MA:MOVING AVERAGE,移動(dòng)平均。
目前飛狐的MA(X,N)函數(shù)支持N為序列變量。
這個(gè)簡(jiǎn)單移動(dòng)平均值,僅僅覆蓋最近的N個(gè)周期,并且在每個(gè)周期中分配的權(quán)重是一模一樣的,均為1/N。
移動(dòng)平均線實(shí)質(zhì)上是一種追蹤趨勢(shì)的工具,而且滯后于市場(chǎng)的變化。這些結(jié)果的原因,就是它的計(jì)算方法了。
從輸出看,N所取周期越長(zhǎng),曲線就越平滑。
平滑和敏感是一對(duì)矛盾,請(qǐng)看:
A:MA(C,5);
B:MA(A,5);
D:MA(B,5);{主圖疊加}
輸出線越來(lái)越平滑,但敏感性越來(lái)越差。
兩條簡(jiǎn)單移動(dòng)平均線的交叉,何時(shí)、何地所選的參數(shù)最優(yōu),可以參考飛狐中的“探索最佳參數(shù)”功能。
線性加權(quán)移動(dòng)平均值的算法函數(shù),飛狐并未提供。
以五天的線性加權(quán)移動(dòng)平均的算法為例:
五天線性加權(quán):(C*5+REF(C,1)*4+REF(C,2)*3+REF(C,3)*2+REF(C,4)*1)/(5+4+3+2+1);
MA(C,5);{主圖疊加}
由于算法的原因,線性加權(quán)移動(dòng)平均線由于日子越近的權(quán)重越大,比簡(jiǎn)單移動(dòng)平均線,跟隨趨勢(shì)要緊密一些,敏感一些。
從圖上看,兩者的交叉也是極為敏感的。
四、
函數(shù): EMA(X,N)
參數(shù): X為數(shù)組,N為計(jì)算周期
返回: 返回?cái)?shù)組
說(shuō)明: 求X的N日指數(shù)平滑移動(dòng)平均。
算法: 若Y=EMA(X,N) 則Y=[2*X+(N-1)*Y']/(N+1), 其中Y'表示上一周期Y值。
示例: EMA(CLOSE,30)
表示求30日指數(shù)平滑均價(jià)
EMA中的E,可能是EXPONENT,指數(shù)、冪。
把算法寫(xiě)成這個(gè)樣子:Y=2*X/(N+1)+(N-1)/(N+1)*Y',就可以看出,當(dāng)前周期數(shù)組值所占的權(quán)重是2/(N+1),而上一周期Y值所占的權(quán)重是(N-1)/(N+1)。注意,這兩個(gè)權(quán)重相加,結(jié)果為1:2/(N+1)+(N-1)/(N+1)=1。
由于一個(gè)很經(jīng)典的指標(biāo)指數(shù)平滑異同平均線MACD(1979年就發(fā)明出來(lái)了)里面,要用到EMA,才使EMA還在基本函數(shù)中占有一席之地。后面我們可以看到,用SMA也可以達(dá)到相同的算法。
N可以取到1,不過(guò)輸出就沒(méi)有加權(quán)的效果了。
五、
函數(shù): SMA(X,N,M)
參數(shù): X為數(shù)組,N為計(jì)算周期,M為權(quán)重
返回: 返回?cái)?shù)組
說(shuō)明: 求X的N日移動(dòng)平均,M為權(quán)重。
算法: 若Y=SMA(X,N,M) 則 Y=[M*X+(N-M)*Y')/N, 其中Y'表示上一周期Y值,N必須大于M。
示例: SMA(CLOSE,30,1)
表示求30日移動(dòng)平均價(jià)
SMA中的S,不會(huì)是SIMPLE(簡(jiǎn)單)的意思吧?由于我們習(xí)慣稱(chēng)MA為簡(jiǎn)單移動(dòng)平均線,所以稱(chēng)SMA為什么就大傷腦筋。
我的理解,SMA應(yīng)該稱(chēng)為指數(shù)加權(quán)移動(dòng)平均線。不對(duì)之處請(qǐng)方家指出。
把算法寫(xiě)成這個(gè)樣子:Y=M/N*X+(N-M)/N*Y',就可以看出,當(dāng)前周期數(shù)組值所占的權(quán)重是M/N,而上一周期Y值所占的權(quán)重是(N-M)/N。注意,這兩個(gè)權(quán)重相加,結(jié)果為1:M/N+(N-M)/N=1。
看出來(lái)了吧?SMA(X,N+1,2)=EMA(X,N);
A:SMA(C,N+1,2);
B:EMA(C,N);{N:5,2,99。主圖疊加}
兩條線輸出一樣。在SMA的參數(shù)中,N必須大于M,否則沒(méi)有輸出。
SMA中,數(shù)組每天所占的權(quán)重,是較為復(fù)雜的??偟膩?lái)說(shuō),日子越近,所占的權(quán)重越大,當(dāng)天所占的權(quán)重是M/N,前一天所占的權(quán)重是M*(N-M)/(N*N);日子越遠(yuǎn),所占的權(quán)重就越小,上市第一天的K線數(shù)據(jù)中,在目前還有權(quán)重的體現(xiàn),不過(guò)已經(jīng)非常非常小了。
SMA看似解決了MA的兩大缺點(diǎn):1、只有N天內(nèi)的數(shù)據(jù)占有權(quán)重;2、N天內(nèi)數(shù)據(jù)所占權(quán)重比重一樣。有所得必有所失,SMA自己的缺點(diǎn)體現(xiàn)在光滑有余,敏感不足。
有一項(xiàng)檢測(cè)系統(tǒng)得出的結(jié)論稱(chēng):“簡(jiǎn)單移動(dòng)平均值方法既勝過(guò)線性加權(quán)平均值法,也勝過(guò)指數(shù)加權(quán)平均值法。”(<期貨市場(chǎng)技術(shù)分析>P231),當(dāng)然他們不是檢測(cè)中國(guó)股市。有興趣的朋友,可以用這些移動(dòng)平均函數(shù),做出交易系統(tǒng),然后進(jìn)行檢測(cè)。
六、
函數(shù): DMA(X,A)
參數(shù): X為數(shù)組,A為計(jì)算周期
返回: 返回?cái)?shù)組
說(shuō)明: 求X的動(dòng)態(tài)移動(dòng)平均。
算法: 若Y=DMA(X,A) 則 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必須小于1。
示例: DMA(CLOSE,VOL/CAPITAL)
表示求以換手率作平滑因子的平均價(jià)
呵呵,均線函數(shù)還有。
DMA中的D,是中文的拼音:DONG。也可能是DYNAMIC。
這個(gè)函數(shù),與SMA是一家的,看:
Y=M/N*X+(N-M)/N*Y';
Y=A*X+(1-A)*Y';
前者說(shuō),N必須大于M,后者說(shuō),A必須小于1。然后兩者就一樣了:A=M/N。
說(shuō)“A為計(jì)算周期”似乎不妥,A明明要取小數(shù)才行。DMA在第一根K線就開(kāi)始起算,SMA要到第二根K線開(kāi)始起算。
七、
函數(shù): HHV(X,N)
參數(shù): X為數(shù)組,N為計(jì)算周期
返回: 返回?cái)?shù)組
說(shuō)明: 求N周期內(nèi)X最高值,N=0則從第一個(gè)有效值開(kāi)始。
示例: HHV(HIGH,30)
表示求30日最高價(jià)
函數(shù): HHVBARS(X,N)
返回: X為數(shù)組,N為計(jì)算周期
參數(shù): 返回?cái)?shù)組
說(shuō)明: 求N周期內(nèi)X最高值到當(dāng)前周期數(shù),N=0表示從第一個(gè)有效值開(kāi)始統(tǒng)計(jì)
示例: HHVBARS(HIGH,0)
求得歷史新高到到當(dāng)前的周期數(shù)
這兩個(gè)函數(shù)一起用,可以找到當(dāng)前N天中的最高點(diǎn)。
A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);
B:=COUNT(A,N)=1;{取得前N個(gè)周期內(nèi)的最高點(diǎn)位置}
REF(H,BARSLAST(B));
DRAWICON(B,H,1),ALIGN2;{主圖疊加。N:30,1,9999}
八、
函數(shù): LLV(X,N)
參數(shù): X為數(shù)組,N為計(jì)算周期
返回: 返回?cái)?shù)組
說(shuō)明: 求N周期內(nèi)X最低值,N=0則從第一個(gè)有效值開(kāi)始。
示例: LLV(LOW,0)
表示求歷史最低價(jià)
函數(shù): LLVBARS(X,N)
參數(shù): X為數(shù)組,N為計(jì)算周期
返回: 返回?cái)?shù)組
說(shuō)明: 求N周期內(nèi)X最低值到當(dāng)前周期數(shù),N=0表示從第一個(gè)有效值開(kāi)始統(tǒng)計(jì)
示例: LLVBARS(HIGH,20)
求得20日最低點(diǎn)到當(dāng)前的周期數(shù)
當(dāng)前N天之內(nèi)的最高點(diǎn)和最低點(diǎn)就一目了然了:
A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);
B:=COUNT(A,N)=1;{取得前N個(gè)周期內(nèi)的最高點(diǎn)位置}
REF(H,BARSLAST(B));
DRAWICON(B,H,1),ALIGN2;
A2:=BACKSET(ISLASTPERIOD,LLVBARS(L,N)+1);
B2:=COUNT(A2,N)=1;{取得前N個(gè)周期內(nèi)的最低點(diǎn)位置}
REF(L,BARSLAST(B2));
DRAWICON(B2,L,2),ALIGN1;{主圖疊加。N:30,1,9999}
A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);
B:=COUNT(A,N)=1;{取得前N個(gè)周期內(nèi)的最高點(diǎn)位置}
REF(H,BARSLAST(B));
DRAWICON(B,H,1),ALIGN2;
A2:=BACKSET(ISLASTPERIOD,LLVBARS(L,N)+1);
B2:=COUNT(A2,N)=1;{取得前N個(gè)周期內(nèi)的最低點(diǎn)位置}
REF(L,BARSLAST(B2));
DRAWICON(B2,L,2),ALIGN1;{主圖疊加。N:30,1,9999}
這個(gè)公式求前期高低點(diǎn),在600036等次新股上試調(diào)整參數(shù)就露馬腳了,并不完善。
問(wèn)題出在HHVBARS起算點(diǎn)等原因上。
南客剛發(fā)表了一個(gè)公式,就順手牽羊牽過(guò)來(lái)吧。這個(gè)公式可以說(shuō)是完美解決方案:
HH:HHV(H,N),LINETHICK2;
LL:LLV(L,N),LINETHICK2;{主圖疊加,參數(shù)N:30,1,9999}
<%
VH=FFL.VARDATA("HH")
VL=FFL.VARDATA("LL")
VN=FFL.VARDATA("N")
LAST=UBOUND(VH)
IF VN>LAST THEN VN=LAST+1
FOR I=LAST TO LAST-VN+1 STEP-1
VH(I)=VH(LAST)
VL(I)=VL(LAST)
NEXT
FFL.VARDATA("HH")=VH
FFL.VARDATA("LL")=VL
FFL.VARSTARTINDEX("HH")=LAST-VN+1
FFL.VARSTARTINDEX("LL")=LAST-VN+1
%>
當(dāng)N個(gè)周期之內(nèi),有兩個(gè)最高價(jià),即有等高的情況出現(xiàn),HHVBARS會(huì)返回哪個(gè)最高價(jià)到當(dāng)前的周期數(shù)呢?
用副圖公式觀察一下,N取10:
HHVBARS(H,N);
如圖,我們可以得出結(jié)論,返回的是前一個(gè)最高價(jià)到當(dāng)前的周期數(shù)。
同樣,當(dāng)在N個(gè)周期之內(nèi),有兩個(gè)等低的最低價(jià)出現(xiàn)時(shí),LLVBARS會(huì)返回前一個(gè)最低價(jià)到當(dāng)前的周期數(shù)。
九、
函數(shù): SUMBARS(X,A)
參數(shù): X為數(shù)組
返回: 返回?cái)?shù)組
說(shuō)明: 將X向前累加直到大于等于A,返回這個(gè)區(qū)間的周期數(shù)
示例: SUMBARS(VOL,CAPITAL)
求完全換手到現(xiàn)在的周期數(shù)
這個(gè)函數(shù)好用,在于它不但能精確地得到統(tǒng)計(jì)結(jié)果,而且能得到“模糊”的結(jié)果。
就以SUMBARS(VOL,CAPITAL)為例:
日期數(shù):SUMBARS(VOL,CAPITAL);{返回成交量累加到流通盤(pán)的日期數(shù)}
驗(yàn)證:SUM(V,日期數(shù))/CAPITAL;{把返回的日期數(shù)之內(nèi)的成交量累計(jì),再除以流通盤(pán)}
運(yùn)行的結(jié)果中,我們可以看到,“驗(yàn)證”的輸出,除了SUMBARS起算點(diǎn)附近之外,從來(lái)沒(méi)有小于1的??梢?jiàn)SUMBARS只往多算,不往少算,非常“精明”。
十、
函數(shù): BARSCOUNT(X)
參數(shù): X為數(shù)組
返回: 返回?cái)?shù)組
說(shuō)明: 第一個(gè)有效數(shù)據(jù)到當(dāng)前的天數(shù)
示例: BARSCOUNT(CLOSE)
對(duì)于日線數(shù)據(jù)取得上市以來(lái)總交易日數(shù),對(duì)于分筆成交取得當(dāng)日成交筆數(shù),對(duì)于1分鐘線取得當(dāng)日交易分鐘數(shù)
BARS是什么?我們看到,關(guān)于取得相隔時(shí)間周期的函數(shù)中,多數(shù)以BARS開(kāi)頭。
查字典,BAR的意思有很多,有條、條形、酒巴、巴等。后來(lái)才恍然大悟:相隔時(shí)間周期,不就是中間相隔幾根條形K線么?
BARSCOUNT(X)是第一個(gè)有效數(shù)據(jù)到當(dāng)前的天數(shù)。那么什么是有效數(shù)據(jù)?
A:BACKSET(ISLASTPERIOD,10);
零:BARSCOUNT(A);
很小:BARSCOUNT(C/10000000000000);
負(fù)數(shù):BARSCOUNT(-C);
不存在:BARSCOUNT(MA(C,10));
可見(jiàn),有效數(shù)據(jù)并不是全是大于等于1的數(shù)據(jù),只要有輸出的數(shù)據(jù),不管是零,還是負(fù)數(shù),均為有效數(shù)據(jù)。
而MA(C,10)是從第十根K線開(kāi)始起算的,所以一直要到第十根K線,BARSCOUNT(MA(C,10))才輸出1。
這樣找一些指標(biāo)的起算點(diǎn)時(shí)間位置,用BARSCOUNT函數(shù)就很管用了。
一般找第一根K線的位置,就可以寫(xiě)為BARSCOUNT(C)=1;
十一、
函數(shù): BARSSINCE(X)
參數(shù): X為數(shù)組
返回: 返回?cái)?shù)組
說(shuō)明: 第一次X不為0到現(xiàn)在的天數(shù)
示例: BARSSINCE(HIGH>20)
表示股價(jià)第一次超過(guò)20元時(shí)到當(dāng)前的周期數(shù)
SINCE,自...以后。BARSSINCE和BARSCOUNT很象,不過(guò)它找的是非零信號(hào)。
A:BACKSET(ISLASTPERIOD,10);
零:BARSsince(A);
很小:BARSsince(C/10000000000000);
負(fù)數(shù):BARSsince(-C);
不存在:BARSsince(MA(C,10));
可見(jiàn),零和無(wú)效數(shù)據(jù),均不被計(jì)數(shù)。一般BARSSINCE是針對(duì)邏輯運(yùn)算的結(jié)果的,因?yàn)檫壿嬤\(yùn)算的結(jié)果輸出,不是0,就是1。
十二、
函數(shù): BARSLAST(X)
參數(shù): X為數(shù)組
返回: 返回?cái)?shù)組
說(shuō)明: 上一次X不為0到現(xiàn)在的天數(shù)
示例: BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)
表示上一個(gè)漲停板到當(dāng)前的周期數(shù)
條件滿(mǎn)足的當(dāng)前周期,BARSLAST返回0。
是“不為0”到現(xiàn)在的天數(shù)么?運(yùn)行這個(gè)公式試試:
A:=C>O;
A1:=0.5*A;
A2:=3*A;
A3:=-3*A;
一:BARSLAST(A1);
二:BARSLAST(A2);
三:BARSLAST(A3);
如圖,“一”根本就沒(méi)有輸出。初步可得出結(jié)論:其絕對(duì)值大于等于1的數(shù)組信號(hào),BARSLAST(數(shù)組)才有輸出。
十三、
函數(shù): BACKSET(X,N)
參數(shù): X為數(shù)組,N為正整數(shù)
返回: 返回?cái)?shù)組
說(shuō)明: 若X非0,則將當(dāng)前位置到N周期前的數(shù)值設(shè)為1。
示例: BACKSET(CLOSE>OPEN,2)
若收陽(yáng)則將該周期及前一周期數(shù)值設(shè)為1,否則為0
如果公式檢測(cè)出來(lái)有未來(lái)數(shù)據(jù),則BACKSET是第一個(gè)嫌疑。
BACKSET是往前倒推信號(hào)(數(shù)據(jù)1)的,僅此而已。由于所有基本函數(shù)都是序列變量,所以要用基本函數(shù),把當(dāng)前的數(shù)據(jù)(比如最高價(jià))往前推是做不到的。所以說(shuō),基本函數(shù)要往后引用具體數(shù)據(jù)是做不到的,往后引用信號(hào)是可能用BACKSET做到的。
說(shuō)BACKSET不可或缺,是因?yàn)橛没竞瘮?shù)在找歷史峰點(diǎn)等公式中,如果沒(méi)有它將一籌莫展。
這個(gè)“說(shuō)明: 若X非0,則將當(dāng)前位置到N周期前的數(shù)值設(shè)為1。”有點(diǎn)問(wèn)題,如果數(shù)組X是邏輯運(yùn)算的結(jié)果是對(duì)的,如果不是就難說(shuō)了,比如:
A:BACKSET(0.1*ISLASTPERIOD,10);
B:BACKSET(100*ISLASTPERIOD,20);
D:B>REF(B,1);
“A”的輸出全為0,“B”的輸出就正常了。
十四、
函數(shù): FILTER(X,N)
參數(shù): X為數(shù)組,N為正整數(shù)
返回: 返回?cái)?shù)組
說(shuō)明: 過(guò)濾連續(xù)出現(xiàn)的信號(hào),X滿(mǎn)足條件后,刪除其后N周期內(nèi)的數(shù)據(jù)置為0
示例: FILTER(CLOSE>OPEN,5)
查找陽(yáng)線,5天內(nèi)再次出現(xiàn)的陽(yáng)線不被記錄在內(nèi)
如果說(shuō)BACKSET能夠向后引用信號(hào),那么FILTER就能向后過(guò)濾信號(hào)--即把有效信號(hào)去掉。比如N取3,就把以后3個(gè)周期內(nèi)的有效信號(hào)去掉了,所以從連續(xù)信號(hào)上看,兩個(gè)信號(hào)之間的間隔不可能小于3的。用這個(gè)公式觀察一下就容易明白了:
A:=C>O;
FILTER(A,3);
十五、
舉兩個(gè)綜合運(yùn)用引用函數(shù)的例子。
1、RSI(相對(duì)強(qiáng)弱指標(biāo)(Relative Strenth Index),1978年由韋爾斯·王爾德發(fā)明)
A、飛狐的反趨向指標(biāo)中的RSI是這樣寫(xiě)的:
LC := REF(CLOSE,1);
RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;
RSI2:SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100;
RSI3:SMA(MAX(CLOSE-LC,0),N3,1)/SMA(ABS(CLOSE-LC),N3,1)*100;
{N1:6,2,100 N2:12,2,100 N3:24,2,100}
RSI1、RSI2、RSI3三根線是一樣的算法,只是所取參數(shù)不同。
MAX,在兩者之間取大者。ABS,取絕對(duì)值。以日K周期為例,LC是昨天的收盤(pán)價(jià),C-LC即為兩天之間的收盤(pán)價(jià)差值。
RSI的分母是這個(gè)差值的絕對(duì)值,進(jìn)行指數(shù)加權(quán)平均處理。
RSI的分子是上漲中的差值,進(jìn)行指數(shù)加權(quán)平均處理。
分子所占分母的比重的百分比,即得出RSI的值。
B、原始RSI的算法是這樣的:
設(shè)A為N天內(nèi)上漲收盤(pán)價(jià)的平均值,B為N天內(nèi)下跌收盤(pán)價(jià)的平均值。
RSI=100-100/(1+RS),其中的RS=A/B。
經(jīng)過(guò)化簡(jiǎn),RSI=100*A/(A+B)。寫(xiě)成公式:
LC:=REF(C,1);
D:=IF(C>LC,C-LC,0); E:=IF(C<LC,LC-C,0);
A:=SUM(D,N)/N; B:=SUM(E,N)/N;
RSI:100*A/(A+B); {N:6,2,100}
好了,將兩種算法寫(xiě)在一起:
LC:=REF(C,1);
D:=IF(C>LC,C-LC,0); E:=IF(C<LC,LC-C,0);
A:=SUM(D,N)/N; B:=SUM(E,N)/N;
原始RSI:100*A/(A+B); {N:6,2,100}
飛狐RSI:SMA(MAX(C-LC,0),N,1)/SMA(ABS(C-LC),N,1)*100;
{坐標(biāo)線位置:0; 20; 50; 80; 100; }
如圖,原始RSI要比飛狐RSI要敏感一些,因?yàn)轱w狐的RSI經(jīng)過(guò)了指數(shù)加權(quán)平均處理。
我沒(méi)有說(shuō)指數(shù)加權(quán)平均處理就不好了,經(jīng)過(guò)處理后,指標(biāo)會(huì)平滑、穩(wěn)定一些。
2、參數(shù)可調(diào)整的峰點(diǎn)公式
A:=REF(H,N)=HHV(H,2*N+1);{當(dāng)前位置N天之前的最高價(jià)是最近2*N+1根K線中的最高價(jià)}
B:=FILTER(A,N); {當(dāng)高點(diǎn)附近有等高的K線出現(xiàn)時(shí),會(huì)影響后續(xù)高點(diǎn)的判斷,所以要過(guò)濾}
D:=BACKSET(B,N+1);{將當(dāng)前位置及前N周期的數(shù)值設(shè)為1,所以要用N+1}
HD:=FILTER(D,N); {當(dāng)高點(diǎn)附近有等高的K線出現(xiàn),取第一個(gè),過(guò)濾掉后面N個(gè)周期之內(nèi)出現(xiàn)的}
A2:=REF(L,N)=LLV(L,2*N+1);{求低點(diǎn)的過(guò)程與求高點(diǎn)的過(guò)程同理}
B2:=FILTER(A2,N);
D2:=BACKSET(B2,N+1);{參數(shù)N:1,3,999}
LD:=FILTER(D2,N);{主圖疊加}
DRAWICON(HD,H,10),ALIGN2;{在高點(diǎn)附近顯示紅球}
DRAWICON(LD,L,11),ALIGN1;{在低點(diǎn)附近顯示綠球}
可以說(shuō),這個(gè)公式用了未來(lái)函數(shù)BACKSET,但是用在日K線中,盤(pán)后是沒(méi)有未來(lái)數(shù)據(jù)的,因?yàn)橐玫娜且呀?jīng)發(fā)生過(guò)的不可變的數(shù)據(jù)了。
至于即時(shí)盤(pán)中的未來(lái)數(shù)據(jù),那是說(shuō)不到底的事,基本所有的公式,都有即時(shí)盤(pán)中未來(lái)數(shù)據(jù),詳見(jiàn)簡(jiǎn)介二中的探討說(shuō)明。
紅球綠球作為峰點(diǎn)標(biāo)志,在顯示K線不多的情況下,還比較清楚。但當(dāng)K線數(shù)較多時(shí),因?yàn)榍虻拇笮∈遣蛔兊?,所以看起?lái)比較亂。故可用以下公式:
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