2008-12-20 10:08:15 飛狐基本函數(shù)簡介之邏輯函數(shù)這組函數(shù)全部用于邏輯判斷,所得結果非0即1。
一、 函數(shù): IF(X,A,B) 參數(shù): X、A、B為數(shù)組或常數(shù) 返回: 返回數(shù)組 說明: 若X不為0則返回A,否則返回B 示例: IF(CLOSE>OPEN,HIGH,LOW) 表示該周期收陽則返回最高值,否則返回最低值 IF,如果。 這個函數(shù)妙用無窮,例子舉不勝舉。這里只提要注意的幾點。 1、用以下公式來測試,發(fā)現(xiàn)N取10,在最后一根K線還能輸出1,N取11就輸出0了。說明“X不為0”的極限值是0.1。 IF(ISLASTPERIOD/N,1,0);{參數(shù)N:10,1,999} 2、A和B兩者,要求是有效值。如果A是有效值,B是無效值,在X滿足條件的情況下,也未必能返回A。 IF(C>O,MA(C,5),MA(C,100000000)); 二、 函數(shù): CROSS(A,B) 參數(shù): A、B為數(shù)組或常數(shù) 返回: 返回數(shù)組 說明: 表示當A從下方向上穿過B時返回1,否則返回0 示例: CROSS(MA(CLOSE,5),MA(CLOSE,10)) 表示5日均線與10日均線交金叉 CROSS,交叉。 這個“說明: 表示當A從下方向上穿過B時返回1,否則返回0 ”要咬文嚼字的話,要說成這樣: 當上一個周期A<B,而當前周期A>B時,CROSS(A,B)返回1,否則返回0。 為什么要這樣說呢?因為“從下方向上穿過”是個模糊說法,當兩條線同時向下時,也會發(fā)生“金叉”,不信?看看以下公式的運行情況就知道了。 REF(A,1)<REF(B,1) AND A>B; 這個公式與CROSS(A,B)輸出的結果應該是一樣的。也可用以下公式驗證。 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; DRAWICON(CROSS(飛狐RSI,原始RSI),0,10); DRAWICON(REF(飛狐RSI,1)<REF(原始RSI,1) AND 飛狐RSI>原始RSI,10,11); {坐標線位置:0; 20; 50; 80; 100; 參數(shù)N:6.2.100 } 三、 函數(shù): NOT(X) 參數(shù): X為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 返回非X,即當X=0時返回1,否則返回0 示例: NOT(ISUP) 表示平盤或收陰 0.1是常數(shù)么?是。0.1不等于0吧?是。那么NOT(0.1)應該返回0了? 按說明應該返回0,但實際上是返回1的。 NOT(C/N); NOT(0.1);{參數(shù)N:10,1,999} 如圖,調(diào)整N,我們可以觀察到結論:當X大于等于1時,NOT(X)返回0,小于1時返回1。 四、 函數(shù): ISUP 參數(shù): 無 返回: 返回數(shù)組 說明: 當收盤>開盤時,返回值為1,否則為0 函數(shù): ISEQUAL 參數(shù): 無 返回: 返回數(shù)組 說明: 當收盤=開盤時,返回值為1,否則為0 函數(shù): ISDOWN 參數(shù): 無 返回: 返回數(shù)組 說明: 當收盤<開盤時,返回值為1,否則為0 ISUP相當于O<C, ISEQUAL相當于O=C, ISDOWN相當于O>C,感覺沒有什么用,只是有時可以使公式簡潔一點。 五、 函數(shù): ISLASTPERIOD 參數(shù): 無 返回: 返回數(shù)組 說明: 該周期是否最后一個周期。最后一個周期返回值為1,其余為0 ISLASTPERIOD,是最后一個周期。這個函數(shù),可以適用于任意周期的,當周期定下來之后,就返回最后一根條形圖上的值為1。所以,解釋為最后一根條形圖(K線)比較恰當。 飛狐最近版本中,改ISLASTPERIOD為ISLASTBAR,就是這個原因。但也帶來不便,以前的公式運行沒有問題,要修改時,就要把ISLASTPERIOD全改成ISLASTBAR,否則調(diào)試通不過。 這是個很實用的函數(shù),特別是在與BACKSET同時用時,找最近的信號很方便。分析家目前好象還沒有添加這個功能的基本函數(shù),有時會覺得不便--不過可以用DLL實現(xiàn)。 六、 函數(shù): BETWEEN(A,B,C) 參數(shù): 無 返回: 返回數(shù)組 說明: 表示A處于B和C之間時返回1,否則返回0 示例: BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5))表示收盤價介于5日均線和10日均線之間 函數(shù): RANGE(A,B,C) 參數(shù): 無 返回: 返回數(shù)組 說明: 表示A大于B同時小于C時返回1,否則返回0 示例: RANGE(CLOSE,MA(CLOSE,5),MA(CLOSE,10))表示收盤價大于5日均線并且小于10日均線 BETWEEN,在...之間。RANGE,范圍、排列。 BETWEEN返回1,相當于滿足條件:(A>B AND A<C) OR (A<B AND A>C)。 RANGE返回1,相當于滿足條件: A>B AND A<C。 七、 函數(shù): EXIST(X,N) 參數(shù): N可為常數(shù)或變量 返回: 返回數(shù)組 說明: 返回N周期內(nèi)是否存在滿足條件X 示例: EXIST(C>O,10)表示10個周期中存在陽線 EXIST,存在。 表示判斷當前周期和前N-1個周期,共N個周期中,是否存在數(shù)組X絕對值大于等于1的信號。 八、 函數(shù): EVERY (X,N) 參數(shù): N可為常數(shù)或變量 返回: 返回數(shù)組 說明: 返回N周期內(nèi)一直滿足條件X 示例: EVERY (C>O,10)表示10個周期內(nèi)一直是陽線 就是EVERYDAY的EVERY了。表示信號的連續(xù)性。 EVERY(C<REF(C,1),4);{表示收盤價連跌四天,才有信號出現(xiàn)} 九、 函數(shù): LAST(X,A,B) 參數(shù): 返回: 返回數(shù)組 說明: 返回第前A周期到第前B周期是否一直滿足條件X,若A為0,表示從第一天開始,B為0,表示到最后日止 示例: LAST(C>O,10,5)表示從第前10個周期到第前5個周期內(nèi)一直是陽線 LAST,最后的,最近的。這個函數(shù)使?jié)M足連續(xù)條件的信號滯后(往后移)了。 A:=MA(C,5)>MA(C,10); LAST(A,4,2); 十、 函數(shù): LONGCROSS(A,B,N) 參數(shù): 返回: 返回數(shù)組 說明: 表示A在N周期內(nèi)都小于B,本周期從下方向上穿過B時返回1,否則返回0 示例: LONGCROSS(MA(CLOSE,5),MA(CLOSE,10),5)表示5日均線維持5周期后與10日均線交金叉 LONGCROSS,長交叉。就是在交叉之前,還要加上條件。如圖,兩者的輸出是一樣的。 A:=CROSS(MA(CLOSE,5),MA(CLOSE,10)); B:=LAST(MA(C,5)<MA(C,10),5,1); 條件金叉:A AND B; 長金叉:0.5*LONGCROSS(MA(CLOSE,5),MA(CLOSE,10),5); 飛狐基本函數(shù)簡介之算術函數(shù)這組函數(shù)用于算術運算,相對簡單,例子就不多舉了。
一、 函數(shù): MAX(A,B) 參數(shù): A、B為數(shù)組或常數(shù) 返回: A、B都為常數(shù)則返回常數(shù),否則返回數(shù)組 說明: 返回A和B中的較大值 示例: MAX(CLOSE-OPEN,0) 表示若收盤價大于開盤價返回它們的差值,否則返回0 MAX.,MAXIMUM,最大值。 相當于IF(A>B,A,B); 二、 函數(shù): MIN(A,B) 參數(shù): A、B為數(shù)組或常數(shù) 返回: A、B都為常數(shù)則返回常數(shù),否則返回數(shù)組 說明: 返回A和B中的較小值 示例: MIN(CLOSE,OPEN) 返回開盤價和收盤價中的較小值 MIN.,MINIMUM,MINISTER,小的,迷你的。 相當于IF(A>B,B,A); 三、 函數(shù): ABS(X) 參數(shù): X為數(shù)組或常數(shù) 返回: X為常數(shù)則返回常數(shù),否則返回數(shù)組 說明: 返回X的絕對值 示例: ABS(CLOSE-OPEN) 返回開盤價和收盤價的價差 ABSOLUTE VALUE,絕對值。 相當于IF(A>B,A-B,B-A); 四、 函數(shù): SGN(X) 參數(shù): X為數(shù)組或常數(shù) 返回: X為常數(shù)則返回常數(shù),否則返回數(shù)組 說明: 當X>0,X=0,X<0分別返回1,0,-1 示例: ABS(-34) 返回34 SIGN,符號,標記。 相當于 A1:=IF(X>0,1,0); A2:=IF(X=0,0,0); A3:=IF(X<0,-1,0); A:=A1+A2+A3; 寫成IF嵌套,就是IF(X>0,1,IF(X<0,-1,0)); 五、 函數(shù): REVERSE(X) 參數(shù): X為數(shù)組或常數(shù) 返回: X為常數(shù)則返回常數(shù),否則返回數(shù)組 說明: 返回的X相反數(shù)-X 示例: REVERSE(CLOSE) 返回-CLOSE REVERSE,相反(數(shù))。 相當于-X; 六、 函數(shù): MOD(A,B) 參數(shù): A、B為數(shù)組或常數(shù) 返回: A、B都為常數(shù)則返回常數(shù),否則返回數(shù)組 說明: 返回A對B求模 示例: MOD(26,10)返回6 MODULUS,模數(shù)。 相當于整數(shù)A除以整數(shù)B后所得的余數(shù)。支持負數(shù)。 七、 函數(shù): CEILING(A) 參數(shù): A、B為數(shù)組或常數(shù) 返回: A、B都為常數(shù)則返回常數(shù),否則返回數(shù)組 說明: 向上舍入,向數(shù)值增大方向舍入 示例: CEILING(12.3)求得13,CEILING(-3.5)求得-3 CEILING,最高限度。 八、 函數(shù): FLOOR(A) 參數(shù): A、B為數(shù)組或常數(shù) 返回: A、B都為常數(shù)則返回常數(shù),否則返回數(shù)組 說明: 向下舍入,向數(shù)值減小方向舍入 示例: FLOOR(12.3)求得12,FLOOR(-3.5)求得-4 向下舍入 FLOOR,地板,基底。也可理解為最低限度。 九、 函數(shù): INTPART(A) 參數(shù): A為數(shù)組或常數(shù) 返回: A為常數(shù)則返回常數(shù),否則返回數(shù)組 說明: 取得數(shù)據(jù)的整數(shù)部分,返回沿A絕對值減小方向最接近的整數(shù) 示例: INTPART(12.3)求得12,INTPART(-3.5)求得-3 INTEGER,整數(shù)。PART,部分。INTPART就是整數(shù)部分了。 不管是正數(shù)還是負數(shù),INTPART之后,留下的就只有整數(shù)部分。 我們很奇怪地發(fā)現(xiàn),有向上舍入、向下舍入和取整的基本函數(shù),但沒有發(fā)現(xiàn)四舍五入的基本函數(shù)。可能是因為四舍五入是人為的一種粗略習慣,進不了精確算術的殿堂。那么用基本函數(shù)可以解決四舍五入么? 以小數(shù)點后第二位的數(shù),四舍五入到小數(shù)點后第一位的數(shù)為例: A:=C*100; B:=MOD(A,10); D:=IF(B>=5,1,0); E:=INTPART(C*10)+D; 四舍五入:E/10; 收盤價:C; 飛狐基本函數(shù)簡介之數(shù)學函數(shù)飛狐的數(shù)學函數(shù),主要支持三角函數(shù)、對數(shù)、和冪的運算。
先回憶一下。如圖, sin(X)=a/c,cos(X)=b/c,tg(X)=a/b,ctg(X)=b/a。這里沒有提供ctg(X)函數(shù),是因為正切和余切互為倒數(shù)關系。 實際上正弦值的平方加上余弦值的平方等于1,有正弦函數(shù)之后,余弦函數(shù)也可以求出來了。 圖中的角度X,一般有兩種表達方式,一種是一個圓周為360度,還有一種是一個圓周為2π弧度。 這里的三角函數(shù)中的數(shù)組或常數(shù)X,取的都是弧度。 一、 函數(shù): SIN(X) 參數(shù): X為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 返回X的正弦值 函數(shù): COS(X) 參數(shù): X為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 返回X的余弦值 正弦波是自然界最常見的波形。正弦波和余弦波的波形是一樣的,無非是相差π/2弧度(90度)的相位。 主要應用在技術分析中的周期分析上。 那么在指標中畫出正弦波應該是很容易了吧。 A:=COUNT(C,0)=1; B:=BARSLAST(A);{1,2,3,4,.....} 正弦值:SIN(B); 余弦值:COS(B); 正余平方和:POW(正弦值,2)+POW(余弦值,2); 正弦180度:SIN(3.1415926); 但是看起來不太光滑:( 究其原因,是因為正弦波的周期是2π,當X取值較大時(1,2,3,...)時,返回值就不太“精密”了,也就是說構成波形的點數(shù)不夠。 這個就好辦了,我們可以把數(shù)列的值都減小N倍,再來看看效果。 A:=COUNT(C,0)=1; B:=BARSLAST(A)/N; 正弦值:SIN(B); 余弦值:COS(B);{參數(shù)N:10.1.999} 調(diào)整參數(shù)N,就可以發(fā)現(xiàn),N取值越大,波形就越光滑。當N取3時,就有不錯的光滑度。當N取10時,就非常光滑了。 N調(diào)整得越大,在2π周期中的點數(shù)就越多,一個完整波形的周期內(nèi)所含的日期差(在日K線中)就越大了。 二、 函數(shù): TAN(X) 參數(shù): X為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 返回X的正切值 TANGENT,正切。 正切值的絕對值,最小是0,最大趨向于無窮大。 當正弦值接近1時,正切值接近于無窮大。 A:=COUNT(C,0)=1; B:=BARSLAST(A)/N; 正弦值:SIN(B); 余弦值:COS(B);{參數(shù)N:10.1.999} TAN(B); 三、 函數(shù): ASIN(X) 參數(shù): X為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 返回X的反正弦值 函數(shù): ACOS(X) 參數(shù): X為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 返回X的反余弦值 函數(shù): ATAN(X) 參數(shù): X為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 返回X的反正切值 Y=SIN(X),是已經(jīng)知道X的弧度值求正弦值。反正弦值是已經(jīng)知道正弦值,去求弧度是多少。其它類推。 ASIN(1); 返回1.57080弧度,相當于是π/2。 四、 函數(shù): LOG(X) 參數(shù): X為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 取得X的10為底對數(shù) 示例: LOG(100) 等于2 Y是10的N次方值,那么LOG(Y)=N。 五、 函數(shù): LN(X) 參數(shù): X為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 以e為底的對數(shù) 示例: LN(CLOSE) 求收盤價的對數(shù) 函數(shù): EXP(X) 返回: X為數(shù)組或常數(shù) 參數(shù): 數(shù)組或常數(shù) 說明: 為e的X次冪 示例: EXP(CLOSE) 返回e的CLOSE次冪 LN(X)是取自然對數(shù)。自然數(shù)e=2.718281828... 呵呵,連自然數(shù)都到股市中來了。 EXP(X)在正態(tài)分布中要用到,可。。。暈,不說了。 六、 函數(shù): POW(A,B) 參數(shù): A、B為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 返回A的B次冪 示例: POW(CLOSE,3) 求得收盤價的3次方 函數(shù): SQRT(X) 參數(shù): X為數(shù)組或常數(shù) 返回: 數(shù)組或常數(shù) 說明: 為X的平方根 示例: SQRT(CLOSE) 收盤價的平方根 POWER,冪。SQUARE ROOT,平方根。 POWER(A,B)中的B支持小數(shù),即可用0.5,那么POW(A,0.5)=SQRT(A)了。 POW(C,0.5); SQRT(C); 這兩根線是一樣的。 飛狐基本函數(shù)簡介之統(tǒng)計函數(shù)這組函數(shù),是統(tǒng)計學中的最典型的幾個指標,在基本函數(shù)中提供了算法。有幾個是可以相互轉(zhuǎn)換的,看似眾多,實際上沒有幾個。
“統(tǒng)計學理論劃分成描述統(tǒng)計學和推導統(tǒng)計學兩部分。描述統(tǒng)計學指用圖表達資料數(shù)據(jù),比如用一張標準的線圖展示價格歷史。推導統(tǒng)計學則指從資料推導出概括的、預測的或推延性的結論。所以價格圖表屬于前者的范疇,而針對價格圖表進行的技術分析則屬于推導統(tǒng)計學的范疇。 綜合起來,技術分析以過去的價格數(shù)據(jù)預測未來,有充分的統(tǒng)計學根據(jù)。”<期貨市場技術分析>P16 實際上,我們常用的技術指標,都自覺或不自覺地利用了統(tǒng)計學中的相關原理。比如均線指標MA(C,N),是N個周期中收盤價的算術平均值,就利用了統(tǒng)計學中集中趨勢度量法的原理。 先回憶一下統(tǒng)計學中幾個指標的算法。 統(tǒng)計對象可以看成是一個數(shù)列,數(shù)列中數(shù)據(jù)的總個數(shù)為N,以今天(2002.11.22)五天內(nèi)的600036招商銀行收盤價為例,N就為5。數(shù)列的內(nèi)容為:{9.17,9.24,9.11,8.85,8.87}。 1、算術平均值:數(shù)據(jù)總和除以總個數(shù)N。 (9.17+9.24+9.11+8.85+8.87)/5=9.048。 可以用公式MA(C,5),從今天的值上看出。 2、偏差:每個數(shù)據(jù),減去算術平均值的結果。 9.17-9.048=0.122, 9.24-9.048=0.192, 9.11-9.048=0.062, 8.85-9.048=-0.198, 8.87-9.048=-0.178, 各偏差相加,應該是等于0的。 3、平均絕對偏差:將偏差的絕對值相加,除以總個數(shù)N。 (0.122+0.192+0.062+0.198+0.178)/5=0.150 4、(總體樣本)方差:將偏差的平方相加,總和除以總個數(shù)N。用公式可以這樣算: (POW(0.122,2)+POW(0.192,2)+POW(0.062,2)+POW(0.198,2)+POW(0.178,2))/5=0.025 方差的算法,經(jīng)過化簡,也可以這樣算:每個數(shù)據(jù)的平方的平均數(shù),減去平均數(shù)的平方。 在公式里就可以這樣編了: MA(POW(C,2),5)-POW(MA(C,5),2);{0.025} 5、估算樣本方差:是總體方差的N/(N-1)倍。 0.025*5/(5-1)=0.031 估算樣本方差,總比總體樣本方差大一點,當N夠大時,兩者趨于相等。 6、(總體)標準差:方差的開方。 POW(0.025,0.5);{0.158} 7、估算標準差:估算樣本方差的開方。 POW(0.031,0.5);{0.176} 同樣,估算標準差也比總體標準差大一點,當N夠大時,兩者趨于相等。 8、最小二乘法求回歸直線方程:放在后面講。 以下的例子,也以在今天(2002.11.22)五天內(nèi)的600036招商銀行收盤價為例。 一、 函數(shù): AVEDEV(X,N) 參數(shù): X為數(shù)組,N為統(tǒng)計周期 返回: 返回數(shù)組 說明: 平均絕對偏差 AVEDEV(C,5);{0.150} 二、 函數(shù): DEVSQ(X,N) 參數(shù): X為數(shù)組,N為統(tǒng)計周期 返回: 返回數(shù)組 說明: 數(shù)據(jù)偏差平方和DEVSQ 數(shù)據(jù)偏差平方和,除以N,即為方差。 DEVSQ(C,5)/5;{0.025} DEVSQ(C,5);{0.126} 三、 函數(shù): VARP(X,N) 參數(shù): X為數(shù)組,N為統(tǒng)計周期 返回: 返回數(shù)組 說明: X的N日總體樣本方差 總體樣本方差用數(shù)據(jù)偏差平方和,已經(jīng)求出了,看看一樣嗎? DEVSQ(C,5)/5;{0.025} VARP(C,5);{0.025} 四、 函數(shù): VAR(X,N) 參數(shù): X為數(shù)組,N為統(tǒng)計周期 返回: 返回數(shù)組 說明: X的N日估算樣本方差 估算樣本方差是總體方差的N/(N-1)倍,看看一樣嗎? VARP(C,5)*(5/(5-1));{0.032} VAR(C,5);{0.032} 五、 函數(shù): STDP(X,N) 參數(shù): X為數(shù)組,N為統(tǒng)計周期 返回: 返回數(shù)組 說明: X的N日總體標準差 總體標準差,即為總體樣本方差的開方,看看一樣嗎? POW(VARP(C,5),0.5);{0.159} STDP(C,5);{0.159} 六、 函數(shù): STD(X,N) 參數(shù): X為數(shù)組,N為統(tǒng)計周期 返回: 返回數(shù)組 說明: X的N日估算標準差 估算標準差,即為估算樣本方差的開方,看看一樣嗎? POW(VAR(C,5),0.5);{0.178} STD(C,5);{0.178} 好了,以上六個統(tǒng)計函數(shù),除了第一個,其它五個,只要求出方差,就可以找到相應關系,全部求出來。而方差,可以用公式MA(POW(C,2),5)-POW(MA(C,5),2);求出,所以說,新東西只有一個:平均絕對偏差。 以上六個函數(shù)中的N,目前均不支持序列變量,但可以用參數(shù)來調(diào)整。 下面介紹線性回歸的概念,仍以前例為例。 如圖,坐標中的各點不存在明確的關系,它們不在同一直線上,也不在同一曲線上。但仔細觀察可以看到,它們還是存在著一定的相關關系,圖a中的點分布在一根直線附近,圖b中的點分布在一根曲線(拋物線)附近。 在圖a中,如果能夠畫出一根直線,使各點到直線的垂直距離總和達到最小,那么這根直線無疑是很有參考價值的,用股市中的行話說,就是這根直線代表了點以后的發(fā)展趨勢。這種分析方法,就是統(tǒng)計學中的回歸分析法。 圖a中的X軸,相當于K線圖中的時間軸,Y軸相當于價格軸,一個點相當于是由兩個變量決定位置。 兩個變量之間的回歸分析稱為簡單回歸或一元回歸,三個以上變量之間的回歸分析稱為復回歸或多元回歸。如果變量間相關關系表現(xiàn)為線性相關的回歸稱為線性回歸,表現(xiàn)為曲線相關的回歸稱為非線性回歸。所謂一元線性回歸,則是指兩個變量之間表現(xiàn)為線性相關關系的回歸。 一元線性回歸的方法,就是在眾多的點中,找到一根直線,而這根直線,最能代表眾多點的平均“趨勢”。 直線的表達方程是:y=a+bx。只要兩個參數(shù)a、b定下來,直線的位置就定了。 求參數(shù)a、b的方法一般有兩種,一種較為簡便,但精度不夠,稱為平均數(shù)法。還有一種精度較高,應用也最多,叫最小二乘法??上攵?,飛狐中的線性回歸預測值,是根據(jù)最小二乘法求出來的。這里就只介紹最小二乘法。 設在眾多點中穿過的回歸直線的方程是y'=a+bx。而每個點的垂直高度為y。那么對應于每個點,都可得到類似于偏差的值y-y'。這些值的平方的總和達到最小,而求出參數(shù)a、b,就是最小二乘法的基本原理。 y-y'=y-a-bx。每個點,都有對應的x、y值,那么將這些值,分別代入(y-a-bx),求平方,最后進行累計。最終的表達式Q中,就只有a和b兩個變量了。為使Q具有最小值,必須使其對a,b的偏導數(shù)等于0。由這兩個等式中,就可以求出a、b的值了。 同例,x:{0,1,2,3,4}, y:{9.17,9.24,9.11,8.85,8.87} xy:{0,9.24,18.22,26.55,35.48} x的平均值是:(0+1+2+3+4)/5=2,x的平均值的平方是:4,y的平均值是:9.048 x平方{0,1,4,9,16},x平方總和是:30 b=(89.49-5*2*9.048)/(30-5*4)=-0.99/10=-0.099 a=9.048-(-0.099*2)=9.246 y=9.246-0.099*x。這就是我們求出的回歸直線方程。 在前四天,y值為9.246,在今天,y=9.246-0.099*4=8.85。 有了這兩個值,就可以在主圖上畫線了: A:=BACKSET(ISLASTBAR,5); B:=A>REF(A,1); DRAWICON(A,C,10); DRAWLINE(B,9.246,ISLASTBAR,8.85,0); {主圖、主圖疊加} 各位看到,計算過程比較麻煩,一般只要了解回歸線的意義即可。具體計算,也有以下兩個基本函數(shù)幫忙。 七、 函數(shù): FORCAST(X,N) 參數(shù): X為數(shù)組,N為統(tǒng)計周期 返回: 返回數(shù)組 說明: X的N周期線性回歸預測值 示例: FORCAST(CLOSE,10) 表示求10周期線性回歸預測 用最小二乘法,求出N周期內(nèi),X的一元線性回歸線上的當天的值。與以上介紹的a值不同,a值是(N-1)周期前的回歸線上的值。N取值為1時沒有意義。 FORCAST(C,5);{8.85} 八、 函數(shù): SLOPE(X,N) 參數(shù): X為數(shù)組,N為統(tǒng)計周期 返回: 返回數(shù)組 說明: 為X的N周期線性回歸線的斜率 示例: SLOPE(CLOSE,10) 表示求10周期線性回歸線的斜率 用最小二乘法,求出N周期內(nèi),X的一元線性回歸線的斜率,相當于以上介紹的b值。在K線圖上是(價差/時間差)的關系,與角度沒有任何關系。N取值為1時沒有意義。 SLOPE(C,5);{-0.099} 那么有了這兩個函數(shù),要畫出回歸線還是不容易。今天的回歸線的值和斜率知道了,可(N-1)天之前的回歸線上的值(相當于前面說的a值)還是不知道,因為指標均為序列變量,無法倒推。 一般來說,有兩種方法,一種是全用基本函數(shù),用起來有點麻煩,要調(diào)整參數(shù)。還有一種是借用VBS來倒推數(shù)據(jù)。 留作思考題吧。 九、 函數(shù): CORR(X1,X2,N) 參數(shù): X為數(shù)組,N為統(tǒng)計周期 返回: 返回數(shù)組 說明: 求2個序列間的相關系數(shù)。 示例: CORR(CLOSE,HIGH,10)表示求10周期VAR1與VAR2的相關系數(shù) 轉(zhuǎn)貼《教育統(tǒng)計學》中,對相關系數(shù)的描述: 相關系數(shù) 在教育研究中,常涉及到兩個事物(變量)的相互關系問題,例如,學習成績與非智力因素的關系,數(shù)學成績與物理成績的關系,男女生學習成績的關系,等等。其關系表現(xiàn)為以下三種變化;第一,正相關:一個變量增加或減少時,另一個變量也相應增加或減少;第二,負相關:一個變量增加或減少時,另一個變量卻減少或增加;第三,無相關:說明兩個變量是獨立的,即由一個變量值,無法預測另一個變量值。統(tǒng)計學中,就用“相關系數(shù)"來從數(shù)量上描述兩個變量之間的相關程度,用符號“r"來表示。 相關系數(shù)取值范圍限于:-1≤r≤+1 PHP代碼:-------------------------------------------------------------------------------- 相關系數(shù)表示的意義 相關系數(shù)(r) 0.00 0.00-±0.3 ±0.30-±0.50 相關程度 無相關 微正負相關 實正負相關 相關系數(shù)(r) ±0.50-±0.80 ±0.80-±1.00 相關程度 顯著正負相關 高度正負相關 -------------------------------------------------------------------------------- 相關系數(shù)函數(shù)CORR,可以比較兩只個股或個股與大盤的指標或價格在N周期內(nèi)走勢的相似程度,函數(shù)返回的數(shù)值越大,相似程序越高。 下面是最后N周期內(nèi),個股與大盤收盤價走勢相似程度的示例代碼: ts0:=barssince(c); ts1:=barslast(barssince(backset(islastbar,N+1))=0); ts:=if(ts0<n,ts0,ts1);{上市時間短于參數(shù)N,調(diào)整疊加的基準日} bl:=ref(IndexC/C,Ts);{確定基準日壓縮比率} fc:c*bl/bl; fIndexC:IndexC/bl;{按比率壓縮大盤指數(shù),以便跟個股收盤比較} 相似程度:CORR(fc,fIndexC,N),linethick0; 簡單的應用方法: 1、指標作為副圖指標,可通過對“相似程度”排序,找出近期走勢跟大盤相似程度較高的個股。 2、也可以把代碼中的IndexC換成其它作為樣本的個股,找出同類走勢的個股。 代碼中,有一行: fc:c*bl/bl; 大家可能會有疑問,“bl/bl”不是等于1嗎?乘以1那不是多此一舉? 不妨在代碼中刪除“*bl/bl”,再試試效果。 您理解了嗎?這是一個小技巧:) 十、 函數(shù): CORRTPL(TPLNAME,X,D,N) 參數(shù): X為數(shù)組,N為統(tǒng)計周期 返回: 返回數(shù)組 說明: CORRTPL(TPLNAME,X,D,N),求與模板相關系數(shù)。 D為常數(shù),表示0:開盤價,1:最高價,2:最低價,3:收盤價,4:成交量,5:成交額 N表示計算最后多少組,為0表示計算所有,用于當前選股時設為1可大大減小計算量 示例: CORRTPL('一馬平川',CLOSE,3,1)表示求收盤價線與一馬平川收盤價線的最后一組的相關系數(shù) 飛狐基本函數(shù)簡介之指標函數(shù)所謂指標函數(shù),就是頭疼函數(shù)。一些指標的算法極為繁瑣,做成基本函數(shù),用起來就方便了。
我自己也是摸著石頭過河。 一、 函數(shù): ZIG(K,N) 參數(shù): N為常數(shù),參數(shù)K可為序列或常數(shù),K取0--3,表示0:開盤價,1:最高價,2:最低價,3:收盤價;也可為ma(close,5)等。 返回: 返回數(shù)組 說明: 當價格變化量超過N%時轉(zhuǎn)向 示例: ZIG(3,5) 表示收盤價的5%的ZIG轉(zhuǎn)向 ZIG(MA(C,20),5)表示均線的5%的ZIG轉(zhuǎn)向 ZIG,之字形。 1、K可以作為參數(shù)調(diào)整,也可以直接寫其它的指標線,如"kd.k"。N也可以做成參數(shù)調(diào)整。 2、在K線中,ZIG只能對一根指標線進行轉(zhuǎn)向處理。要想高點在H位置,低點在L位置,ZIG是做不到的。 3、ZIG到底是如何體現(xiàn)“未來”的?即它是怎么畫出來的?見最后的說明。 4、ZIG輸出的是數(shù)值,不是直線。 5、ZIG一般使用在看波浪、看形態(tài)上。 ZIG函數(shù)是未來函數(shù)之第二大嫌疑。在交易系統(tǒng)中用未來函數(shù),就是用BACKSET或ZIG,可以使許多人“夢想成真”。 由于“未來函數(shù)”在交易系統(tǒng)中可以大大作弊,才使其在指標和選股公式中也一起“臭名昭著”。 二、 函數(shù): PEAK(K,N,M) 參數(shù): N為常數(shù),參數(shù)K可為序列或常數(shù),K取0--3,表示0:開盤價,1:最高價,2:最低價,3:收盤價;也可為ma(close,5)等,M為大于等于1的整數(shù) 返回: 返回數(shù)組 說明: 表示之字轉(zhuǎn)向ZIG(K,N)的前M個波峰的數(shù)值 示例: PEAK(1,5,1) 表示%5最高價ZIG轉(zhuǎn)向的上一個波峰的數(shù)值 PEAK(MA(C,20),5,1) 表示均線的5%的ZIG轉(zhuǎn)向的上一個波峰的數(shù)值 PEAK,高峰。 這個函數(shù)可以取到ZIG波峰的數(shù)值。如果K取1,波峰取的是H。如果K取3,波峰是C的波峰,可不是H。 三、 函數(shù): PEAKBARS(K,N,M) 參數(shù): N為常數(shù),參數(shù)K可為序列或常數(shù),K取0--3,表示0:開盤價,1:最高價,2:最低價,3:收盤價;也可為ma(close,5)等,M為大于等于1的整數(shù) 返回: 返回數(shù)組 說明: 表示之字轉(zhuǎn)向ZIG(K,N)的前M個波峰到當前的周期數(shù) 示例: PEAKBARS(1,5,1) 表示%5開盤價ZIG轉(zhuǎn)向的上一個波峰到當前的周期數(shù) PEAKBARS(MA(C,20),5,1)表示均線的5%的ZIG轉(zhuǎn)向的上一個波峰到當前的周期數(shù) 這個函數(shù)用來定波峰的位置的。有了位置,畫兩根線試試。 ZIG(1,N); A1:=BACKSET(ISLASTBAR,PEAKBARS(1,N,1)+1); A2:=A1>REF(A1,1); B1:=BACKSET(ISLASTBAR,PEAKBARS(1,N,2)+1); B2:=B1>REF(B1,1); C1:=BACKSET(ISLASTBAR,PEAKBARS(1,N,3)+1); C2:=C1>REF(C1,1); DRAWLINE(B2,H,A2,H,1); DRAWLINE(C2,H,B2,H,1);{N:3.1.99,主圖疊加} 四、 函數(shù): TROUGH(K,N,M) 參數(shù): N為常數(shù),參數(shù)K可為序列或常數(shù),K取0--3,表示0:開盤價,1:最高價,2:最低價,3:收盤價;也可為ma(close,5)等,M為大于等于1的整數(shù) 返回: 返回數(shù)組 說明: 表示之字轉(zhuǎn)向ZIG(K,N)的前M個波谷的數(shù)值 示例: TROUGH(2,5,2) 表示%5最低價ZIG轉(zhuǎn)向的前2個波谷的數(shù)值 TROUGH(MA(C,20),5,2) 表示均線的5%的ZIG轉(zhuǎn)向的前2個波谷的數(shù)值 TROUGH,水槽,波谷。 與PEAK對應。 五、 函數(shù): TROUGHBARS(K,N,M) 參數(shù): N為常數(shù),參數(shù)K可為序列或常數(shù),K取0--3,表示0:開盤價,1:最高價,2:最低價,3:收盤價;也可為ma(close,5)等,M為大于等于1的整數(shù) 返回: 返回數(shù)組 說明: 表示之字轉(zhuǎn)向ZIG(K,N)的前M個波谷到當前的周期數(shù) 示例: TROUGHBARS(2,5,2) 表示%5最低價ZIG轉(zhuǎn)向的前2個波谷到當前的周期數(shù) TROUGHBARS(MA(C,20),5,2) 表示均線的5%的ZIG轉(zhuǎn)向的前2個波谷到當前的周期數(shù) 對應于PEAKBARS。 這樣在應用時,ZIG的各點的數(shù)值是知道的,波峰和波谷的數(shù)值和位置也可以引用到了。 “綜合運用”: ZIG(3,N),CROSSDOT;{主圖疊加} ZIG(3,N),CIRCLEDOT,COLORMAGENTA; A:=PEAKBARS(3,N,1); B:=TROUGHBARS(3,N,1); B>A,COLORGREEN; A>B,COLORRED;{五彩K線} 六、 函數(shù): SAR(N,S,M) 參數(shù): N為計算周期,S為步長,M為極值 返回: 返回數(shù)組 說明: 計算拋物轉(zhuǎn)向點 示例: SAR(10,2,20) 表示計算10日拋物轉(zhuǎn)向,步長為2%,極限值為20% STOP AND REVERSE,轉(zhuǎn)向點指標,停頓指標,又稱拋物線指標,全稱為拋物線轉(zhuǎn)向指標。 SAR指標,也是王爾德(RSI的發(fā)明人)發(fā)明的,主要用于與趨向指標DMI(DIRECTION MOVEMENT INDEX)結合使用。 SAR一般以圓圈的形式輸出,實際上也是輸出數(shù)值的,形式可以用描述函數(shù)進行改變。 說是拋物轉(zhuǎn)向,輸出的并不是標準的拋物線。 目前的轉(zhuǎn)向指標,典型的有三個,ZIG、SAR(因為做成基本函數(shù)了,所以有數(shù)值輸出),還有一個是結構波浪,可以用基本函數(shù)做出,但只能輸出直線,不能輸出完整的數(shù)值。 SAR的畫法,在眾多的股票軟件中,是一種百花齊放的局面。由于飛狐提供了開放可定制的公式平臺,所以,只要有明確思路的SAR畫法,都可以在飛狐實現(xiàn)。飛狐中基本函數(shù)SAR的具體畫法在最后介紹。 SAR的畫法,矛盾集中在數(shù)個方面,所以沒有一種方法能夠一統(tǒng)江山。 1、起算點,是從看漲開始還是從看跌開始?怎么判斷畫前的看漲和看跌? 2、轉(zhuǎn)向條件滿足時,是遲一個周期跳轉(zhuǎn)還是遲兩個周期跳轉(zhuǎn)? 3、跳轉(zhuǎn)后的第二個周期,以0步長計算,還是以STEP步長計算? 4、當N取1時,應不應該有輸出?等等 飛狐的主要問題是在起算點就滿足跳轉(zhuǎn)條件時,會延遲一個周期跳轉(zhuǎn),而后面的就不延遲跳轉(zhuǎn)了。分析家的問題是起算點有時是找不準前期極值的。這些都不是大問題,因為后面的計算是趨向于統(tǒng)一的,起算點附近的SAR問題,一般無人問津。 七、 函數(shù): SARTURN(N,S,M) 參數(shù): N為計算周期,S為步長,M為極值 返回: 返回數(shù)組 說明: 若發(fā)生向上轉(zhuǎn)向則返回1,若發(fā)生向下轉(zhuǎn)向則返回-1,否則為0 由于可以返回三個值,就可以判斷是向上的跳轉(zhuǎn)還是向下的跳轉(zhuǎn)。 SA:=SAR(3,2,20); A:=SARTURN(3,2,20); B:=A=1; D:=A=-1; E:=BARSLAST(B)>BARSLAST(D); F:=NOT(E); DRAWICON(E,SA,10); DRAWICON(F,SA,11);{主圖疊加} 如果想顏色更鮮艷一些,可調(diào)用BMP文件,把最后兩句改為: DRAWICON(E,SA,'S31'); DRAWICON(F,SA,'S28'); 八、 函數(shù): COST(N) 參數(shù): N為常數(shù),表示百分比 返回: 返回數(shù)組 說明: 計算成本分布情況,該函數(shù)僅對日線分析周期有效 示例: COST(10) 表示10%獲利盤的價格是多少,即有10%的持倉量在該價格以下,其余90%在該價格以上,為套牢盤 函數(shù): WINNER(A) 參數(shù): A為數(shù)組或常數(shù) 返回: 返回數(shù)組 說明: 計算獲利盤比例,該函數(shù)僅對日線分析周期有效 示例: WINNER(CLOSE) 表示以當前收市價賣出的獲利盤比例,例如返回0.1表示10%獲利盤 WINNER(10.5) 表示10.5元價格的獲利盤比例 COST,成本。WINNER,優(yōu)勝者,獲利。 兩者互相換算。COST是根據(jù)獲利盤估算價格,WINNER是根據(jù)價格估算獲利盤。 之所以說估算,是因為要精確算,必須把每筆成交的價格和成交量都記錄下來,一般這是很難做到的。 就算能做到,籌碼分布方面的技術分析有效么?這就看各人自己的取舍了,股市中目前還沒有發(fā)現(xiàn)包賺不賠的技術指標。 COST(WINNER(C)*100); C; 此兩者趨于相等。也說明這兩個函數(shù)支持序列變量。 平均成本價的計算。將剛好完全換手的每筆成交量和成交價格相乘,然后除以這期間總的成交量,即為平均成本價。 平均成本價格:COST(50); AA:=SUMBARS(VOL,CAPITAL); 平均成本價:SUM(C*V,AA)/SUM(V,AA); 實際上這兩種方法都是估算出來的,后者的誤差可能更大一些。 相當于一箱蘋果是2元一斤,另兩箱蘋果是5元一斤。三箱蘋果的平均價格就是(2*1+5*2)/(1+2)=4元。 這有點統(tǒng)計學中的調(diào)和平均值的味道了?;I碼分布,要搞得復雜,可以計算中位值、眾位值,研究正態(tài)分布、偏態(tài)分布,還有集中度、穿透力,當真是花樣繁多,只能留給有興趣的朋友自己研究了。 籌碼分布的峰位在哪個價格區(qū)域,是籌碼分布愛好者很想知道的一個指標。用COST可以估算出來,留作思考題吧。 九、 函數(shù): PPART(N) 參數(shù): N為常數(shù) 返回: 返回數(shù)組 說明: 遠期成本比例,表示N周期前的成本占總成本的比例,如返回0.3表示30% 示例: PPART(20); 20天前的成本占總成本的比例 遠期成本比例,只要把近N天之成本比例算出來,遠期的自然就出來的。因為總成本為百分之百的換手率。 遠期成本比例:PPART(N)*100; A:=100*V/CAPITAL; 遠期成本:100-SUM(A,N);{參數(shù)N:10.1.999} 兩者基本相等。 十、 函數(shù): PWINNER(N,X) 參數(shù): N為常數(shù),X為數(shù)組或常數(shù) 返回: 返回數(shù)組 說明: 遠期獲利盤比例 示例: PWINNER(20,CLOSE);表示20天前的那部分成本以當前收市價賣出的獲利盤比例,例如返回0.2表示20%獲利盤 以上幾個籌碼指標,在飛狐中,目前已經(jīng)支持多周期分析,即在分筆、五分鐘、周等周期上都有輸出。 附一、ZIG線的畫法。 假設在手工畫線年代,ZIG線是怎么畫出來的,實際上也介紹了算法。 以zig(3,5),即收盤價轉(zhuǎn)向,轉(zhuǎn)向要求5%,在600036招商銀行上為例。 從第一根K線上的收盤價,慢慢往后看。直到當天的C,和以前的K線的最低C值相比的漲幅,或與最高C值相比的跌幅超過5%時,才在當天作出記號,稱之為拐點。漲幅超過5%的,稱為向上的拐點,跌幅超過5%的,稱為向下的拐點。 例中,先有向下的拐點,于是第一根K線上的C值,就是高點了。在向下的拐點出現(xiàn)之后的每根K線上,相比較記錄最低之C值。然后把當天的C值,與記錄的最低C值比較,看有沒有漲幅超過5%。例中,到6月24日,才產(chǎn)生滿足條件之向上的拐點。向上的拐點出現(xiàn)之后,回過頭,在與上一個向下的拐點之間,找到一個最低的C,作為ZIG的低點。 產(chǎn)生向上拐點之后,就在之后的K線中記錄C的最大值。當出現(xiàn)當天的C值,與最大C值相比,跌幅超過5%時,記為向下的拐點。例中,到7月12日,產(chǎn)生向下的拐點。于是從向下的拐點回過頭來,在與上一個向上的拐點之間,找到一個最高的C,作為ZIG的高點。如此循環(huán)。也就是說,ZIG的高點和低點,是根據(jù)向上和向下的拐點出來之后,回溯過去才找到的。這就是ZIG未來數(shù)據(jù)的實質(zhì)所在。 在最近期間,ZIG的未來數(shù)據(jù),要追溯到最近的一個拐點之前的一個峰點。且看最近期間的ZIG線是怎么畫出的。 從最后一根K線往前,如果先出現(xiàn)向下的拐點,則在此拐點到目前的K線中求出最小收盤價所在的K線,為低點。這個低點可能與目前的K線重合。重合的話目前的K線為低點,不重合的話目前K線為高點。 如果先出現(xiàn)向上的拐點,則在此拐點到目前的K線中求出最高收盤價所在的K線,為高點。此高點與目前的K線重合,則目前的K線為高點,否則為低點。 附二、SAR的畫法。 SAR(N,S,M),參數(shù):N為計算天數(shù),STEP=調(diào)整系數(shù)×100,MAXP=調(diào)整系數(shù)上限×100。 以sar(5,2,20),circledot;用在日線中為例。 SAR只跟K線中的H、L有關,與O、C無關。 一、起畫點 當N取5時,起畫點就在第六根K線上。第一步要做的事,就是由第一根K線到第五根K線判斷是看漲還是看跌。如是看漲,就要把起畫點畫成看漲SAR,如是看跌,就要把起畫點畫成看跌SAR。 A:(H-REF(H,1)+L-REF(L,1))>0 AND BARSCOUNT(C)=2; 如果A成立,則先畫看跌SAR(SAR在K線之上);如果A不成立,則先畫看漲SAR(SAR在K線之下)。這是我的觀察所得,各位不妨去看看是不是如此。就是說不管N取多少,起畫點是根據(jù)第一、二根K線上的H、L決定的。 二、看漲SAR 第一個看漲SAR的值,是前五天的最低價,即REF(LLV(L,5),1);然后看看SAR值是不是比L小,是的話繼續(xù),否則在下一天跳轉(zhuǎn)。 第二個看漲SAR的值,是 SAR(2)=SAR(1)+AF1*(REF(HHV(H,5),1)-SAR(1)), SAR(1)即為第一個看漲SAR的值。AF1是調(diào)整系數(shù),如果當天的H比前五天的最高H大,則要+0.02(得0.04),否則還是取0.02。然后看看SAR值是不是比L小,是的話繼續(xù),否則在下一天跳轉(zhuǎn)。 第三個看漲SAR的值,是 SAR(3)=SAR(2)+AF2*(REF(HHV(H,5),1)-SAR(2)), 計算方法與求第二個看漲SAR類同,只是當天的H是否比前五天的最高H大還要判斷,是的話AF2=AF1+0.02,否則取AF1。 然后看看SAR值是不是比L小,是的話繼續(xù),否則在下一天跳轉(zhuǎn)。 因為沒有跳轉(zhuǎn)的話,REF(HHV(H,5),1)-SAR(2)的值肯定大于0,所以看漲SAR一直是向上升的。 如此循環(huán)往復,直到跳轉(zhuǎn)條件成立就跳轉(zhuǎn),去畫看跌SAR了。而調(diào)整系數(shù)AF的值,經(jīng)過反復累積的話,最大是不能超過0.2的。 三、看跌SAR 第一個看跌SAR的值,是前五天的最高價,即REF(HHV(H,5),1);然后看看SAR值是不是比H大,是的話繼續(xù),否則要在下一天跳轉(zhuǎn)。 第二個看跌SAR的值,是 SAR(2)=SAR(1)+AF1*(REF(LLV(L,5),1)-SAR(1)), SAR(1)即為第一個看跌SAR的值。AF1是調(diào)整系數(shù),如果當天的L比前五天的最低L小,則要+0.02(得0.04),否則還是取0.02。然后看看SAR值是不是比H大,是的話繼續(xù),否則在下一天跳轉(zhuǎn)。 第三個看跌SAR的值,是 SAR(3)=SAR(2)+AF2*(REF(LLV(L,5),1)-SAR(2)), 計算方法與求第二個看跌SAR類同,只是當天的L是否比前五天的最低L小還要判斷,是的話AF2=AF1+0.02,否則取AF1。 然后看看SAR值是不是比H大,是的話繼續(xù),否則在下一天跳轉(zhuǎn)。 因為沒有跳轉(zhuǎn)的話,REF(LLV(L,5),1)-SAR(2)的值肯定小于0,所以看跌SAR一直是向下跌的。 如此循環(huán)往復,直到跳轉(zhuǎn)條件成立就跳轉(zhuǎn),去畫看漲SAR了。而調(diào)整系數(shù)AF的值,經(jīng)過反復累積的話,最大是不能超過0.2的。 SAR沒有未來之嫌,但是N、S、M的調(diào)整對SAR影響都很大,感覺靈敏性過大。 |
|