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