分類:股票
一、選股公式:
顯然選股公式,就是用于選出符合條件的股票,由若干中間語句組成,并且其中不含繪圖函數(shù)。只有一行輸出語句,位于最后一條語句,且必須是條件表達式。
例1:設(shè)計一個公式,選出N周期內(nèi)漲幅大于或等于5%的股票。
求解:公式代碼如下,其中N為參數(shù):
--------------------------------------------------------------------------------
收盤價:=close;
N日前收盤:=ref(close,N);
選股條件:收盤價/N日前收盤>=1.05;--------------------------------------------------------------------------------
代碼解釋:公式由我們所熟悉的代碼組成,共3行,前2行是中間語句,最后一行是選股的條件,其中最后一行“選股條件:”,也可以不寫。
操作簡介:在飛狐中,按F7,彈出如圖界面。圖中①可以調(diào)整參數(shù)。②可以選擇在什么分析周期下選股。③可以改變選股范圍,默認為A股市場。④可以讓選出的股票輸出到指定的板塊,并將該板塊設(shè)為自動板塊。⑤可以指定時段進行選股,默認是對最后一天進行選股。⑥對某些公式,還可以進行成功率測試。
在選股的操作過程中,大家可以發(fā)現(xiàn),利用技術(shù)指標也可以進行選股。
練習1:編制一個選股公式,選出RSI突破80的股票。
思考1:建立如下選股公式,該公式的意義是什么?實際操作一下,看看有什么問題?為什么?
--------------------------------------------------------------------------------
spj:close;
zsp:=ref(c,1);
spj/zsp<0.95;--------------------------------------------------------------------------------
思考2:選股操作時,當選擇輸出到板塊時,有個自動板塊的選擇,起什么作用?
思考與操作1:利用例1的選股公式,想選出最近10天,所有2天內(nèi)漲幅超過5的A股板塊股票。
解疑1:某股友選股時,發(fā)現(xiàn)500001符合選股條件,但卻選不出來,你能幫他分析一下原因嗎?
二、交易系統(tǒng):
交易系統(tǒng)公式(簡稱交易公式),用于指示滿足特定條件時的買入信號和賣出信號。公式的由若干中間語句,加上指定的最后4行條件表達式代碼組成,最后4行分別由“ENTERLONG: ”“EXITLONG: ”、“ENTERSHORT:”、“EXITSHORT:”開始,表示多頭買入、多頭賣出及空頭買入、空頭賣出的條件。這4行也可以刪去若干行,但至少保留其中的一行,表示只指示其中一種信號。
例2:我們來看看飛狐交易系統(tǒng)中的“RSI 相對強弱指標交易系統(tǒng)”公式,其中LL、LH是參數(shù):
--------------------------------------------------------------------------------
LC:=REF(CLOSE,1);{LC為中間變量}
RSI:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)*100;{RSI為中間變量}
ENTERLONG:CROSS(RSI,LL);{多頭買入條件表達式,RSI上穿LL時發(fā)出買入信號}
EXITLONG:CROSS(LH,RSI);{多頭賣出條件表達,RSI下穿LH時發(fā)出賣出信號}--------------------------------------------------------------------------------
在新建或編輯修改交易公式時,可以設(shè)定介入點的位置,如次周期中價等。設(shè)置止損條件,如目標利潤止盈、最大損失止損等。
交易公式的使用:①在K線圖中,按Ctrl+F6,可以選擇交易公式指示買賣信號。②在選股操作時,也可以選擇交易公式進行選股。③在菜單“工具”中,還可以對交易進行“交易系統(tǒng)評價”、“探索最佳參數(shù)”操作。在菜單“查看”中,可以“優(yōu)選交易系統(tǒng)”。
此外,按Shift+W,調(diào)出公式樹,可以通過鼠標把交易公式拖到K線窗口的方法,使用交易公式。試試把選股公式也拖到K線窗口,看看有何變化?說明了什么?
當想刪除在K線圖上顯示的各種買賣信號時,可以按Ctrl+Del或工具欄上的相應(yīng)按鈕實現(xiàn)。
練習2:設(shè)計一個均線交易公式,當收盤價上穿5日均線時,發(fā)出多頭買入信號,收盤價下穿5日均線時發(fā)出多頭賣出信號。并觀察設(shè)置不同的介入點介入時,指示的信號有什么變化。
練習3:觀察飛狐系統(tǒng)內(nèi)置的各個交易公式,領(lǐng)會各交易公式的意義。
三、五彩K線:
用于表示各種K線模式。比如早晨之星、黃昏之星等。五彩K線,陽線用實心表示,陰線用空心表示。默認的五彩K線均為綠色。當出現(xiàn)指定的K線模式時,默認用紅色表示,除非使用了顏色描述符。表達五彩K線由若干中間語句和最多六條獨立的條件語句,跟選股公式不同的是,選股公式只能有一個條件表達式語句。
例1、用五彩K線描述漲幅超過9%的K線,代碼如下:
--------------------------------------------------------------------------------
c/ref(c,1)>1.09;--------------------------------------------------------------------------------
例2、用五彩K線描述分維形態(tài)的K線,代碼如下(借用注冊用戶社區(qū)中,清揚兄的研究成果):
--------------------------------------------------------------------------------
N:=2;
AA:=REF(H,N)=HHV(H,2*N+1);
AAA:=FILTER(AA,N);
BB:=BACKSET(AAA,N+1);
CC:FILTER(BB,N),COLORBLUE;
AA2:=REF(L,N)=LLV(L,2*N+1);
AAA2:=FILTER(AA2,N);
BB2:=BACKSET(AAA2,N+1);
CC2:FILTER(BB2,N),COLORMAGENTA;--------------------------------------------------------------------------------
一、STKINDI示例代碼
函數(shù)注釋如下:
引用任意證券任意周期的任意指標輸出
用法 :
STKINDI(STKLABEL,INDINAME,INDITYPE,PERIOD)
INDITYPE為指標類型,有效值范圍為(0-2),依次表示技術(shù)指標、條件選股、交易系統(tǒng)公式;
PERIOD為周期類型,有效值范圍為(-1-11),依次表示:
當前周期、分筆成交、1分鐘、5分鐘、15分鐘、30分鐘、60分鐘、日、周、月、年、多日、多分鐘
例如:STKINDI('1A0001','MA.MA1',0,DATAPERIOD);
例1:引用大盤的漲跌家數(shù)。
①被引用公式,設(shè)被引用的公式名稱為“漲跌家數(shù)”,其公式代碼如下:
A:ADVANCE;
D:DECLINE;
②引用大盤的漲跌家數(shù),示例代碼如下:
fStkName:=if(STRCMP(STKMARKET, 'SH'),'399301','1A0001');
fAdvance:=STKINDI(fStkName,'漲跌家數(shù).A',0,6);
fDecline:=STKINDI(fStkName,'漲跌家數(shù).D',0,6);
說明:大盤函數(shù)advance、decline只能被大盤所使用,不能在個股中直接使用,這段代碼,示范了如何利用STKINDI函數(shù)達到在個股中引用的目的。
例2:在日k線中引用本股票5分鐘的obv該怎么寫?
求解:代碼如下
StkIndi(StkLabel,'OBV',0,2);{注意,公式的名稱應(yīng)使用大寫字母}
二、橫向統(tǒng)計相關(guān)函數(shù)的用法簡介:
1、橫向統(tǒng)計數(shù)據(jù)函數(shù) ESTDATA(N),取得橫向統(tǒng)計日線數(shù)據(jù)(1-N),僅在日線分析周期有效;
2、用法舉例:
例:設(shè)計一個公式,統(tǒng)計當日A股板塊漲停板的股票數(shù)。
3、方法如下:
①設(shè)計一個公式,判斷個股是否漲停,代碼如下,設(shè)公式名稱是“漲停判斷”:
bl:=if(STKINBLOCK('ST板塊'),1.05,1.1);{如果為ST漲停為5%,否則為10%}
ztb:abs(c-intpart(ref(c,1)*bl*100+0.5)/100)<0.0001;{如果漲停返回1,否則返回0}
{注:對新股的漲停未做判斷,另外個股因歷史的原因,是否被ST或PT處理無法判斷,因此對歷史數(shù)據(jù)的判斷并不準確}
②建立橫向統(tǒng)計數(shù)據(jù)項:鼠標點菜單“管理/橫向統(tǒng)計管理”,在“橫向統(tǒng)計管理”對話框中,點“新增”,找到剛才設(shè)計的公式“漲停判斷”。
⑴數(shù)據(jù)名稱改為“漲停板”
⑵選擇技術(shù)指標“漲停判斷”,計算周期“日線”、指標線“ztb”為默認,不作修改。
⑶橫向統(tǒng)計方法選“全部累加”。
⑷“計算時選擇除權(quán)后的數(shù)據(jù)”不選即前面不打勾。
⑸點“設(shè)置范圍”按鈕,選擇統(tǒng)計范圍。
⑹置好范圍后,點確定。
至此,我們就設(shè)計了一個橫向統(tǒng)計數(shù)據(jù)項“漲停板”,在圖中序號是1,則引用時是estdata(1)。
③設(shè)計一個引用“漲停板”的公式,公式代碼如下,設(shè)公式的名稱是zttj:
漲停板統(tǒng)計:estdata(1);
在K線圖中,調(diào)用公式zttj,就可以看到我們所需要的結(jié)果了。
練習:如果對橫向統(tǒng)計有興趣的話,可以仿此,做一個跌停板統(tǒng)計公式。當然可以把漲停、跌停做成二合一公式。
三、如何計算當日交易分鐘數(shù):
T定義為1分鐘周期圖上,開盤后的交易分鐘數(shù),
1、代碼之一
--------------------------------------------------------------------------------
T:=IF(BETWEEN(HOUR,9,11),(HOUR-9.5)*60+MINUTE,
IF(BETWEEN(HOUR,13,15),(HOUR-9.5-1.5)*60+MINUTE,240));
--------------------------------------------------------------------------------
稍加優(yōu)化:
--------------------------------------------------------------------------------
T:=IF(BETWEEN(HOUR,9,11),(HOUR-9.5)*60+MINUTE,
IF(BETWEEN(HOUR,13,15),(HOUR-11)*60+MINUTE,240));
--------------------------------------------------------------------------------
代碼解釋:
如果小時數(shù)介于9和11間,返回值(HOUR-9.5)*60+MINUTE
否則
如果小時數(shù)介于13和15之間,返回值(HOUR-9.5-1.5)*60+MINUTE
否則返回值240
2、觀察所有的股票一天的1分鐘周期圖,可以發(fā)現(xiàn),都是起始于9:31,結(jié)束于15:00,并且中午休市不顯示,因此代碼一可以簡化為如下公式代碼二,請自行解釋代碼。
公式代碼二:
--------------------------------------------------------------------------------
T:=IF(HOUR<=11,(HOUR-9.5)*60+MINUTE,
IF(HOUR>=11,(HOUR-11)*60+MINUTE,240));
--------------------------------------------------------------------------------
3、公式代碼二,在1分鐘周期中,其實返回240的情況可以合并如下(為什么?)
公式代碼三:
T:=IF(HOUR<=11,(HOUR-9.5)*60+MINUTE,(HOUR-11)*60+MINUTE);
整理后得到,公式代碼四:
T:=IF(HOUR<12,HOUR*60+MINUTE-570,HOUR*60+MINUTE-660);
4、公式代碼四,可以改寫如下的公式代碼五:
T1:=IF(HOUR<12,570,660);
T:=HOUR*60+MINUTE-T1;
呵呵,570就是9.5小時對應(yīng)的分鐘數(shù),660是11小時對應(yīng)的分鐘數(shù)。其實一開始我們就可以寫出這個公式了。我在飛狐公式入門五的答貼中,提示了“用時間類的函數(shù),例如現(xiàn)在是10:30的話,怎么算交易時間呢?如果‘現(xiàn)在’是14:00,又怎么算交易時間?”
公式代碼五,是南客喜歡的表達方式,比公式代碼四要多寫一行,但更靈活、易于變化。
好了,問題解決了,也該給喜歡思考的弟兄一點問題。
問題1:在5--60分鐘周期圖上,設(shè)計一個計算當日交易分鐘數(shù)的公式,進一步設(shè)計出量比公式。
問題2:國內(nèi)A、B股等的交易分2個時段,即上午和下午各交易2小時,在中午休市1.5小時,如果設(shè)想一個股市,一天之中,交易3個或更多個時段,當日交易分鐘數(shù)的公式,又該怎么寫?為了方便寫公式,假設(shè)為3個時段:上午為9:30--11:30,下午為13:00--15:00,晚上為19:00--21:00。
提示:公式改寫為適用于5--60分鐘周期,還需考慮當日是否停牌。為了減少難度,先不考慮停牌的情況,等公式調(diào)試成功后,再考慮如何加入判斷是否停牌的條件。
四、相關(guān)系數(shù)函數(shù)CORR簡單介紹及示例代碼:
相關(guān)系數(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;
簡單的應(yīng)用方法:
1、指標作為副圖指標,可通過對“相似程度”排序,找出近期走勢跟大盤相似程度較高的個股。
2、也可以把代碼中的IndexC換成其它作為樣本的個股,找出同類走勢的個股。
轉(zhuǎn)貼《教育統(tǒng)計學》中,對相關(guān)系數(shù)的描述:
相關(guān)系數(shù)
在教育研究中,常涉及到兩個事物(變量)的相互關(guān)系問題,例如,學習成績與非智力因素的關(guān)系,數(shù)學成績與物理成績的關(guān)系,男女生學習成績的關(guān)系,等等。其關(guān)系表現(xiàn)為以下三種變化;第一,正相關(guān):一個變量增加或減少時,另一個變量也相應(yīng)增加或減少;第二,負相關(guān):一個變量增加或減少時,另一個變量卻減少或增加;第三,無相關(guān):說明兩個變量是獨立的,即由一個變量值,無法預(yù)測另一個變量值。統(tǒng)計學中,就用“相關(guān)系數(shù)"來從數(shù)量上描述兩個變量之間的相關(guān)程度,用符號“r"來表示。
相關(guān)系數(shù)取值范圍限于:-1≤r≤+1
相關(guān)系數(shù)表示的意義
相關(guān)系數(shù)(r) 0.00 0.00-±0.3 ±0.30-±0.50 ±0.50-±0.80±0.80-±1.00
相關(guān)程度 無相關(guān)微正負相關(guān) 實正負相關(guān) 顯著正負相關(guān) 高度正負相關(guān)
五、不同股票(證券)引用不同大盤指數(shù)的參考代碼:
對于indexc替換成如下的index_c:
--------------------------------------------------------------------------------
index_sh_c:=
if(STKTYPE=1,"1A0002$close",
if(STKTYPE=2,"1A0003$close",
if(STKTYPE=3,"1B0008$close",indexc)));{對A股、B股及基金引用不同指數(shù)}
index_sz_c:=
if(STKTYPE=1,"399002$close",
if(STKTYPE=2,"399003$close",
if(STKTYPE=3,"399305$close",indexc)));
index_c:if(STRCMP(STKMARKET, 'SH')=0,index_sh_c,index_sz_c);
--------------------------------------------------------------------------------
以上代碼僅考慮了A股、B股、基金,其它未作區(qū)分,可根據(jù)自己的需要進行修改。
對于indexo替換成如下的index_o:
--------------------------------------------------------------------------------index_sh_o:=
if(STKTYPE=1,"1A0002$open",
if(STKTYPE=2,"1A0003$open",
if(STKTYPE=3,"1B0008$open",indexo)));
index_sz_o:=
if(STKTYPE=1,"399002$open",
if(STKTYPE=2,"399003$open",
if(STKTYPE=3,"399305$open",indexo)));
index_o:if(STRCMP(STKMARKET, 'SH')=0,index_sh_o,index_sz_o);--------------------------------------------------------------------------------
對于indexh替換成如下的index_h:
--------------------------------------------------------------------------------
index_sh_h:=
if(STKTYPE=1,"1A0002$high",
if(STKTYPE=2,"1A0003$high",
if(STKTYPE=3,"1B0008$high",indexh)));
index_sz_h:=
if(STKTYPE=1,"399002$high",
if(STKTYPE=2,"399003$high",
if(STKTYPE=3,"399305$high",indexh)));
index_h:if(STRCMP(STKMARKET, 'SH')=0,index_sh_h,index_sz_h);
--------------------------------------------------------------------------------
對于indexl替換成如下的index_l:
--------------------------------------------------------------------------------
index_sh_l:=
if(STKTYPE=1,"1A0002$low",
if(STKTYPE=2,"1A0003$low",
if(STKTYPE=3,"1B0008$low",indexl)));
index_sz_l:=
if(STKTYPE=1,"399002$low",
if(STKTYPE=2,"399003$low",
if(STKTYPE=3,"399305$low",indexl)));
index_l:if(STRCMP(STKMARKET, 'SH')=0,index_sh_l,index_sz_l);
--------------------------------------------------------------------------------
對于indexa替換成如下的index_A:
--------------------------------------------------------------------------------
index_sh_A:=
if(STKTYPE=1,"1A0002$Amount",
if(STKTYPE=2,"1A0003$Amount",
if(STKTYPE=3,"1B0008$Amount",indexA)));
index_sz_A:=
if(STKTYPE=1,"399002$Amount",
if(STKTYPE=2,"399003$Amount",
if(STKTYPE=3,"399305$Amount",indexA)));
index_A:if(STRCMP(STKMARKET, 'SH')=0,index_sh_A,index_sz_A);
--------------------------------------------------------------------------------
對于indexv替換成如下的index_V:
--------------------------------------------------------------------------------
index_sh_V:=
if(STKTYPE=1,"1A0002$Vol",
if(STKTYPE=2,"1A0003$Vol",
if(STKTYPE=3,"1B0008$Vol",indexV)));
index_sz_V:=
if(STKTYPE=1,"399002$Vol",
if(STKTYPE=2,"399003$Vol",
if(STKTYPE=3,"399305$Vol",indexV)));
index_V:if(STRCMP(STKMARKET, 'SH')=0,index_sh_V,index_sz_V);
--------------------------------------------------------------------------------
六、控制語句if...then...else示例
通過參數(shù)N,控制調(diào)整均線數(shù),代碼參考如下:
input.:p1(5,0,300),p2(10,0,300),p3(20,0,300),p4(30,0,300),n(4,1,4);{參數(shù)定義}
IF n>0 then MA1:MA(CLOSE,P1);{如果n>=1則輸出ma1指標線}
IF n>1 then MA2:MA(CLOSE,P2);{如果n>=2則輸出ma1指標線}
IF n>2 then MA3:MA(CLOSE,P3);{如果n>=3則輸出ma1指標線}
IF n>3 then MA4:MA(CLOSE,P4);{如果n>=4則輸出ma1指標線}
由于目前IF cond THEN expr1 ELSE expr2 中條件cond暫時只能用常數(shù),因此,可配合主要是參數(shù)、常數(shù)函數(shù)
例2:修改成交量公式VOL,當流通盤不為零且當前周期為日以上周期時,顯示換手率,代碼參考如下(仿此,大家繞過指標模組,可以自行設(shè)計,“綁定”到周期、券種等的公式)
VOL,VOLSTICK;
MA1:MA(VOL,M1);
MA2:MA(VOL,M2);
MA3:MA(VOL,M3);
if capital>0 and DATAPERIOD>=6 then 換手率:vol/capital;
當切換到60分鐘及以下周期,或者切換到大盤(此時流通盤=0),會發(fā)現(xiàn)“換手率”指標線、名稱及數(shù)值都不顯示。
稍加改進,使用復(fù)合語句,可適用于任意周期:
例3,修改成交量公式,流通盤不為0時,顯示換手率(60分鐘及以下周期,計算當日最新的換手率),代碼參考如下:
PHP代碼:--------------------------------------------------------------------------------
VOL,VOLSTICK;
MA1:MA(VOL,M1);
MA2:MA(VOL,M2);
MA3:MA(VOL,M3);
IF CAPITAL>0 then //如果換手率>0,則
IF DATATYPE>=6 then //如果周期為日及以上的較長周期,則
b:=VOL/CAPITAL*100
else //否則
begin //復(fù)合語句開始,即以下3條語句,視為1條語句,end表示復(fù)合語句結(jié)束
tj:=DAY>REF(DAY,1) or BARSSINCE(CLOSE)=0;
ts:=BARSLAST(tj)+1;
b:=SUM(VOL,ts)/CAPITAL*100;
end;
換手率:b;--------------------------------------------------------------------------------
修改或創(chuàng)建這個公式后,大家會發(fā)現(xiàn),只要流通盤=0,則換手率指標線就不會被顯示,例如切換到大盤觀察。
七、循環(huán)語句示例:移動平均線的N種寫法
移動平均線的N種寫法(V3.5.30828 以上版本支持)
PHP代碼:
--------------------------------------------------------------------------------
INPUT.:n(5,1,300);//參數(shù)申明
VARIABLE:k=0; //變量申明
FOR i=0 TO n-1 DO
k:=k+ref(close,i); //把最近 n 天的收盤價累加
MA1:k/n; //實現(xiàn)MA(C,N)
///////////////////////////////////////////
INPUT.:N(5,1,300); //參數(shù)申明
VARIABLE:i=0,k=0,j=0; //變量申明
VAR1:=C;
FOR j=1 TO DATACOUNT DO
BEGIN
IF j>=n THEN
BEGIN
WHILE i<n DO
BEGIN
k:=k+VAR1[j-i];
i:=i+1;
END;
MA2[j]:k/n; //實現(xiàn)MA(C,N)
i:=0;
k:=0;
END;
END;
///////////////////////////////////////////
INPUT.:N(5,1,300); //參數(shù)申明
VARIABLE:i=0,k=0,VAR1:=C; //變量申明
FOR j=1 TO DATACOUNT DO
BEGIN
k:=k+VAR1[j];
IF j>=n THEN
BEGIN
IF j>n THEN
k:=k-VAR1[j-n];
MA3[j]:k/n; //實現(xiàn)MA(C,N)
i:=0;
END;
END;
/////////////////////////////
--------------------------------------------------------------------------------
還有很多寫法
還可以只計算最后1個有效數(shù)值,比如用于提高預(yù)警速度,大家練習試試
//////////////////////////////////////////////////////////
南客再附上一段歷史流通盤的代碼:
//說明:本公式,無法計算增發(fā)、職工股上市等情形,公式原型為原子兄用VBS設(shè)計的代碼
var1:=splitdata(1)+splitdata(2);
cap:=c;
cap[datacount]:=1;
for i=datacount downto 2 do cap[i-1]:=cap/(1+var1/10);
capi:=cap*capital/100;
歷史流通盤∥萬股:capi;
drawnumber(cap>ref(cap,1) or barscount(c)=1,capi,capi,0);
八、序列數(shù)據(jù)量
所屬類別: 常數(shù)函數(shù) 參數(shù)數(shù)量: 0
序列數(shù)據(jù)量。
用法:
DATACOUNT,返回序列數(shù)據(jù)數(shù)量
注意:該函數(shù)返回常數(shù)
解說:以日周期為例,我們知道,個股的收盤價就是一個序列變量,每天都有一個數(shù)值,總共有很多個數(shù)值,到底有多少個數(shù)值?如果個股數(shù)據(jù)是完整的,數(shù)值的個數(shù)就是上市后總的有效交易天數(shù)(即K線的數(shù)量)。顯然人工去點不現(xiàn)實,這里提供的函數(shù),就是計算這個數(shù)據(jù)的。
代碼示例:
K線數(shù):datacount;
②在飛狐新開發(fā)的公式系統(tǒng)中,序列變量可以用數(shù)組表示,比如:
fc:=close;
定義了一個序列變量fc,它等于個股所有的收盤價。請看下面代碼:
fc:=c;
第1天收盤價:fc[1];
最后1天收盤價:fc[datacount];
圖示如下
想想看1:如何表示第1根K線的日期(通常是上市的日期),如果想將股票按上市日期先后排序,這個公式會很有用。
想想看2:編寫一個選股公式,選出上市天數(shù)少于N的公式。
與barscount的區(qū)別:顯然,這是一個序列變量,隨K線的位置不同而不同。而datacount是一個常量,不管在哪個K線的位置上,它都是同一個數(shù)值。
新增函數(shù)應(yīng)用:如何遍歷板塊股票代碼
PHP代碼:--------------------------------------------------------------------------------
bk:='深圳A股';
variable:j=1,k=0,dm_len=0,lstr[6]='00000',blksum:=STKCOUNT(bk),dmstr[blksum]='';
lstr[2]:='0000';lstr[3]:='000';lstr[4]:='00';lstr[5]:='0';lstr[6]:='';
while j<=blksum do begin
dm:=NumToStr(k,0);
dm_len:=strlen(dm);
dm:=lstr[dm_len]+dm;
if stkinblock(dm,bk) then begin
dmstr[j]:=dm;
j:=j+1;
end;
k:=k+1;
end;
//以下是一些字符串函數(shù)及運算的綜合應(yīng)用
EXPLAIN(1,dmstr[1]);//在解盤中,輸出深圳A股第1只股票的代碼
EXPLAIN(1,stknameex(dmstr[2]));//第2只股票的名稱
EXPLAIN(1,dmstr[3]+stknameex(dmstr[3]));//第3只股票的代碼及名稱
EXPLAIN(1,'深圳A股第4只股票的代碼是:'+dmstr[4]);
EXPLAIN(1,dmstr[5]+'最后收盤價:'+numtostr(close,2));
EXPLAIN(1,'深圳A股共有股票:'+numtostr(blksum,0)+'只');--------------------------------------------------------------------------------
如果您有編程的功底,上面代碼一看就明白,但對沒有編程經(jīng)驗的狐友們來說就不容易了。下面盡量詳細地對思路和公式代碼做一些解說,并對代碼進行適當擴展。
1、所謂遍歷股票代碼,就是能夠訪問某板塊中所有的股票代碼,如果連訪問都不能實現(xiàn),怎么做一些更加強大的諸如橫向統(tǒng)計、排序的功能?
2、上面的公式代碼是以深圳A股板塊為例,我們看看深圳A股的股票代碼,它們都是很有規(guī)律的,000001、000002、...、000999、001696、001896,請注意這些代碼的特征:
①股票代碼要理解成字符串,而不是數(shù)值,如果是數(shù)值的話,股票代碼就成了1、2、...、999、1696、1896。
②這些代碼如果轉(zhuǎn)換成數(shù)值,大體集中在某個數(shù)的范圍,如上面所示,深圳A股代碼的數(shù)值目前都小于1896,代碼的數(shù)值大多都是呈遞增1的規(guī)律,少量有跳躍的情況,比如000040跳到000042,000041不存在。
因此,我們初步可以設(shè)計一個循環(huán)
PHP代碼:--------------------------------------------------------------------------------
j:=0;
while j<=1896 do
begin
j:=j+1;
end;--------------------------------------------------------------------------------
上面這段代碼,是個循環(huán),每次循環(huán)都執(zhí)行一次由begin和end所包圍起來的語句,這里只有一條語句即j:=j+1,目的讓變量j從1每次循環(huán)都遞增1,直到j(luò)=1896為止。
j:=j+1這條賦值語句,初次接觸的話不大好理解,大意是這樣,右邊的j比如現(xiàn)在等于2,這條語句是讓右邊的j現(xiàn)有的數(shù)值加上1,然后再送回到變量j之中,執(zhí)行完這條語句后,j就由2遞增1變成了等于3。
j:=j+1,看起來有點象計數(shù)器的功能吧?每循環(huán)一次,計數(shù)器就增加1,因此也可以稱變量j為計數(shù)器(變量)。
好了,思路敏捷的狐友,馬上就能想到,這個計數(shù)器會生成從0到1896總共1897個數(shù)值,如果進行轉(zhuǎn)換,也就是把數(shù)值轉(zhuǎn)換成字符串,則深圳A股所有的股票代碼都包含在里面了。
呵呵,的確是這樣,因此我們設(shè)計下面一個稍加改進的循環(huán),來逼近我們要完成的任務(wù):
PHP代碼:--------------------------------------------------------------------------------
j:=0;
while j<=1896 do
begin
dm:=NumToStr(j,0);//把數(shù)值j轉(zhuǎn)換成字符串并賦值給變量dm,保留小數(shù)位數(shù)0
j:=j+1;
end;
EXPLAIN(islastbar,dm); //當處在最后一根K線位置時,輸出字符串dm的內(nèi)容--------------------------------------------------------------------------------
最后一行代碼,是用解盤函數(shù)輸出字符串變量dm的結(jié)果,我們可以在“解”中觀察,不過這里由于dm是單值變量,不是序列變量,只能保存最后的一次結(jié)果,因此只能觀察到結(jié)果是1896。
如果想觀察其它的結(jié)果,只好改循環(huán)首語句,比如:
while j<=1 do
大家可以發(fā)現(xiàn)這些結(jié)果,還有一點小問題,沒有前導(dǎo)的0,即我們要的是000001、0001896,而不是1、1896這樣的字符串,怎么辦呢?
給它們的前面加上0就可以了,但加上0的個數(shù)有講究的,比如1在前面要加上5個0,1896前面只需加上2個0,很明顯,要加的0的個數(shù),等于6減字符串的字符個數(shù)。因此,設(shè)計公式代碼如下:
PHP代碼:--------------------------------------------------------------------------------
variable:lstr[6]='00000';//定義一個數(shù)組lstr[6],共6個元素,并讓所有6個元素初始都等于字符串'00000'
//下面對字符串數(shù)組lstr[]第2至第6個元素重新進行賦值,以便巧妙應(yīng)用
lstr[2]:='0000';lstr[3]:='000';lstr[4]:='00';lstr[5]:='0';lstr[6]:='';
j:=0;
while j<=1896 do
begin
dm:=NumToStr(j,0);//把數(shù)值j轉(zhuǎn)換成字符串并賦值給變量dm,保留小數(shù)位數(shù)0
dm_len:=strlen(dm); //求出dm的長度,并賦值給變量dm_len
dm:=lstr[dm_len]+dm;//由dm的長度,確定應(yīng)該給dm的前面加上多少個字符0
j:=j+1;
end;
EXPLAIN(islastbar,dm); //當處在最后一根K線位置時,輸出字符串dm的內(nèi)容-------------------------------------------------------------------------------- 對這行代碼稍加解釋:dm:=lstr[dm_len]+dm,如果某次循環(huán)右邊的dm等于'19',則它的字符串長度為dm_len等于2,則這行代碼此時等價于dm:=lstr[2]+dm,而lstr[2]等于'0000',結(jié)果就是在'19'的前面加上4個字符'0'即成了'000019',然后再把'000019'賦值給dm,于是左邊的dm就等于'000019'
到此為止,我們只是實現(xiàn)了所生成的字符串,可以讓深圳A股的代碼全部被包含在其中,但還有大量的“廢”字符串,我們要把沒用的字符串過濾掉。取出我們真正需要的?! ∫玫降暮瘮?shù) ①stkinblock(dm,bk),函數(shù)注釋:如果股票代碼dm從屬于板塊bk,則函數(shù)返回數(shù)值1,否則返回數(shù)值0 ②條件控制語句IF cond THEN expr1 ELSE expr2,意思是:當滿足 cond 條件的時候,執(zhí)行語句 expr1,否則執(zhí)行 expr2 語句 設(shè)計代碼如下:PHP代碼:--------------------------------------------------------------------------------
variable:lstr[6]='00000';
lstr[2]:='0000';lstr[3]:='000';lstr[4]:='00';lstr[5]:='0';lstr[6]:='';
j:=0;
bk:='深圳A股'; //bk賦值為字符串'深圳A股'
while j<=1896 do
begin
dm:=NumToStr(j,0);//把數(shù)值j轉(zhuǎn)換成字符串并賦值給變量dm,保留小數(shù)位數(shù)0
dm_len:=strlen(dm); //求出dm的長度,并賦值給變量dm_len
dm:=lstr[dm_len]+dm;//由dm的長度,確定應(yīng)該給dm的前面加上多少個字符0
if stkinblock(dm,bk) then //如果股票代碼dm屬于bk,則執(zhí)行下面由begin、end包含的語句
begin
dm1:=dm;//真正需要的股票代碼是這里的dm1
end;
j:=j+1;
end;
EXPLAIN(islastbar,dm1); //當處在最后一根K線位置時,輸出字符串dm1的內(nèi)容--------------------------------------------------------------------------------
公式代碼設(shè)計到這里似乎可以結(jié)束了,因為我們要的結(jié)果都可以生成了。其實還有改進的余地: ?、賒m1只是個單值的字符串變量,它只能保存最后的結(jié)果,而不能保存所有的結(jié)果。這里考慮使用數(shù)組,數(shù)組可以自行定義很多個元素,讓每個元素保存一個結(jié)果。 ?、谘h(huán)首的j<1896總覺得不對勁,不夠智能化,比如將來“深圳A股”板塊最后的代碼不是0001896,則這段公式代碼的結(jié)果就不對了?! ♂槍σ陨蠁栴},設(shè)計公式代碼如下: PHP代碼:--------------------------------------------------------------------------------
variable:lstr[6]='00000';
lstr[2]:='0000';lstr[3]:='000';lstr[4]:='00';lstr[5]:='0';lstr[6]:='';
j:=0;//記錄循環(huán)次數(shù)的計數(shù)器
k:=1;//記錄股票代碼的個數(shù)的計數(shù)器
bk:='深圳A股'; //bk賦值為字符串'深圳A股'
blksum:=STKCOUNT(bk); //板塊所包含證券數(shù)量
variable:dmstr[blksum]='';//定義一個字符串數(shù)組用于記錄股票代碼,元素個數(shù)為blksum,初始值為空
while k<=blksum do//當計數(shù)器k<=blksum時,執(zhí)行以下循環(huán)
begin
dm:=NumToStr(j,0);//把數(shù)值j轉(zhuǎn)換成字符串并賦值給變量dm,保留小數(shù)位數(shù)0
dm_len:=strlen(dm); //求出dm的長度,并賦值給變量dm_len
dm:=lstr[dm_len]+dm;//由dm的長度,確定應(yīng)該給dm的前面加上多少個字符0
if stkinblock(dm,bk) then //如果股票代碼dm屬于bk,則執(zhí)行下面由begin、end包含的語句
begin
dmstr[k]:=dm;//真正需要的股票代碼,記錄到字符串數(shù)組dmstr的第k個元素中
k:=k+1;//記錄找到的股票代碼的個數(shù)
end;
j:=j+1;//記錄循環(huán)的次數(shù)
end;
EXPLAIN(islastbar,dmstr[1]); //當處在最后一根K線位置時,輸出深圳A股第1只股票的代碼--------------------------------------------------------------------------------
有了以上公式,我們就可以把范圍擴大,比如遍歷'A股板塊'的所有股票代碼,很簡單,只需改一條語句,即把 bk:='深圳A股' 改成 bk:='A股板塊'?! 」酱a如下(且慢執(zhí)行,等下面的解說):PHP代碼:--------------------------------------------------------------------------------
variable:lstr[6]='00000';
lstr[2]:='0000';lstr[3]:='000';lstr[4]:='00';lstr[5]:='0';lstr[6]:='';
j:=0;//記錄循環(huán)次數(shù)的計數(shù)器
k:=1;//記錄股票代碼的個數(shù)的計數(shù)器
bk:='A股板塊'; //bk賦值為字符串'深圳A股'
blksum:=STKCOUNT(bk); //板塊所包含證券數(shù)量
variable:dmstr[blksum]='';//定義一個字符串數(shù)組用于記錄股票代碼,元素個數(shù)為blksum,初始值為空
while k<=blksum do//當計數(shù)器k<=blksum時,執(zhí)行以下循環(huán)
begin
dm:=NumToStr(j,0);//把數(shù)值j轉(zhuǎn)換成字符串并賦值給變量dm,保留小數(shù)位數(shù)0
dm_len:=strlen(dm); //求出dm的長度,并賦值給變量dm_len
dm:=lstr[dm_len]+dm;//由dm的長度,確定應(yīng)該給dm的前面加上多少個字符0
if stkinblock(dm,bk) then //如果股票代碼dm屬于bk,則執(zhí)行下面由begin、end包含的語句
begin
dmstr[k]:=dm;//真正需要的股票代碼,記錄到字符串數(shù)組dmstr的第k個元素中
k:=k+1;//記錄找到的股票代碼的個數(shù)
end;
j:=j+1;//記錄循環(huán)的次數(shù)
end;
EXPLAIN(islastbar,dmstr[1]); //當處在最后一根K線位置時,輸出字符串深圳A股第1只股票的代碼-------------------------------------------------------------------------------- 假如你試圖執(zhí)行這段代碼,你會發(fā)現(xiàn)好慢哦~~ 為何會這樣?因為從深圳A股切換到上海A股的股票代碼時,是從1896跳躍到600000,中間有508104次空循環(huán),這中間沒有一個代碼是真正的股票代碼,因此可以這樣來提高循環(huán)的執(zhí)行效率,在公式代碼中插入如下幾行代碼:if j=1896 then j:=599999;if j=600999 then break; 優(yōu)化后的代碼如下: PHP代碼:--------------------------------------------------------------------------------
variable:lstr[6]='00000';
lstr[2]:='0000';lstr[3]:='000';lstr[4]:='00';lstr[5]:='0';lstr[6]:='';
j:=0;//記錄循環(huán)次數(shù)的計數(shù)器
k:=1;//記錄股票代碼的個數(shù)的計數(shù)器
bk:='A股板塊'; //bk賦值為字符串'深圳A股'
blksum:=STKCOUNT(bk); //板塊所包含證券數(shù)量
variable:dmstr[blksum]='';//定義一個字符串數(shù)組用于記錄股票代碼,元素個數(shù)為blksum,初始值為空
while k<=blksum do//當計數(shù)器k<=blksum時,執(zhí)行以下循環(huán)
begin
dm:=NumToStr(j,0);//把數(shù)值j轉(zhuǎn)換成字符串并賦值給變量dm,保留小數(shù)位數(shù)0
dm_len:=strlen(dm); //求出dm的長度,并賦值給變量dm_len
dm:=lstr[dm_len]+dm;//由dm的長度,確定應(yīng)該給dm的前面加上多少個字符0
if stkinblock(dm,bk) then //如果股票代碼dm屬于bk,則執(zhí)行下面由begin、end包含的語句
begin
dmstr[k]:=dm;//真正需要的股票代碼,記錄到字符串數(shù)組dmstr的第k個元素中
k:=k+1;//記錄找到的股票代碼的個數(shù)
end;
if j=1896 then j:=599999;//計數(shù)器j直接跳到到上海A股對應(yīng)的最小代碼
if j=600999 then break;//如果記錄到這個代碼則跳出循環(huán)
j:=j+1;//記錄循環(huán)的次數(shù)
end;
//以下是一些字符串函數(shù)及運算的綜合應(yīng)用
EXPLAIN(1,dmstr[1]);//在解盤中,輸出深圳A股第1只股票的代碼
EXPLAIN(1,stknameex(dmstr[2]));//第2只股票的名稱
EXPLAIN(1,dmstr[3]+stknameex(dmstr[3]));//第3只股票的代碼及名稱
EXPLAIN(1,'深圳A股第4只股票的代碼是:'+dmstr[4]);
EXPLAIN(1,dmstr[5]+'最后收盤價:'+numtostr(close,2));
EXPLAIN(1,'深圳A股共有股票:'+numtostr(blksum,0)+'只');-------------------------------------------------------------------------------- 這行代碼 if j=600999 then break 有什么用?以防萬一,如果有人改了市場規(guī)則,把500001之類的股票計入上海A股的話,這里的循環(huán)會出不來的,會造成電腦死循環(huán),飛狐長時間沒有響應(yīng)。 以上公式代碼,只是個示例,效率不太高,如果能有個方法,直接給出板塊中所有的股票代碼,那就不需要這段公式代碼?! 〗o出這個示例,是想通過大致解剖整個公式代碼的設(shè)計過程,讓大家對循環(huán)、條件語句有個初步的認識?! ∽詈?,給大家個練習的機會: 1、修改上述代碼,計算“A股板塊”的成交量(這就是橫向統(tǒng)計了) 2、以上公式代碼,使用的是while循環(huán),有辦法改成fox循環(huán)嗎?(當心,在修改代碼的過程中,如果不慎的話,有可能造成死循環(huán),對于win9x操作系統(tǒng),也許很難退出,對于NT以上操作系統(tǒng),可以強行退出) 3、高級問題:通過以上代碼,可以做出橫向排序,不過建議不要用代碼本身來實現(xiàn)排序(會很慢的),應(yīng)使用今天發(fā)布的新函數(shù)SORTPOS(X,D,N1,N2)來實現(xiàn)。 4、借用論壇的一個問題:ff:=barslast(date=1030107);周期:=5;VERTLInE(ff=0 or ff=周期*1 or ff=周期*2 or ff=周期*3 or ff=周期*4 or ff=周期*5or ff=周期*6 or ff=周期*7 or ff=周期*8 or ff=周期*9 or ff=周期*10or ff=周期*11 or ff=周期*12 or ff=周期*13 or ff=周期*14 or ff=周期*15or ff=周期*16 or ff=周期*17 or ff=周期*18 or ff=周期*19 or ff=周期*20or ff=周期*21 or ff=周期*22 or ff=周期*23 or ff=周期*24 or ff=周期*25or ff=周期*26 or ff=周期*27 or ff=周期*28 or ff=周期*29 or ff=周期*30or ff=周期*31 or ff=周期*32 or ff=周期*33 or ff=周期*34 or ff=周期*35or ff=周期*36 or ff=周期*37 or ff=周期*38 or ff=周期*39 or ff=周期*40),POInTDOT; 把以上代碼,改成用循環(huán)表示?! ?、一個數(shù)列定義如下:f[1]=1,f[2]=1,f[n]=f[n-1]+f[n-2],你能用循環(huán)計算出f[10]等于多少嗎?這個數(shù)列是很有名的,許多股票預(yù)測都會用到它。 呵呵,具體我也記不住了,誰能告訴我它叫什么?
VBS入門續(xù):條件語句
VBS入門續(xù):條件語句
條件語句是程序中的最基本、最重要的語句之一,今天通過一個簡單實例學習條件語句。
問題:設(shè)計一個指標,除首日外,如果當日漲停(設(shè)10%為漲停),則公式輸出1,否則輸出0。
公式代碼:
fc:=c;
n=1.099;
<%
vc=ffl.vardata("fc")
vn=ffl.vardata("n")
vs=ffl.vardata("js")
last=ubound(vc)
vc(0)=0
for i=last to 1 step -1
if vc(i)>=vn*vc(i-1) then
vc(i)=1
else
vc(i)=0
end if
next
ffl.vardata("fc")=vc
%>
fc
VBS程序條件語句部分解釋,參閱VBS幫助文件,如下代碼為條件語句:
if vc(i)>=vn*vc(i-1) then----如果...則,這里的條件是判斷當日漲停否
vc(i)=1 ----vc(i)賦值1
else ----否則
vc(i)=0 ----vc(i)賦值0
end if ----條件語句結(jié)束
飛狐基本函數(shù)簡介之指標線形描述函數(shù)
這一組中的函數(shù),全部不能單獨使用,一定要和其它指標一起用才能發(fā)揮效力,因為它們都是描述其它指標的。
指標在主圖或副圖中的顯示,主要分為棒狀(柱狀)和線狀兩種。這一組中的函數(shù),全部是為了指揮指標的顯示而設(shè)計的。
掌握好這組函數(shù),可以使指標輸出顯示豐富多彩,色彩繽紛。
使用的一般形式:
指標,描述函數(shù)1,描述函數(shù)2,...;
一、
函數(shù): STICK
參數(shù): 無
返回: 無
說明: 畫棒狀線
示例:
STICK的英文是棍、棒的意思。
一般指標的顯示,在軟件中默認是線狀的。即如果不加指標線形描述函數(shù),則指標以線狀的形式輸出顯示。
如公式:
0.98*L;{主圖疊加}
如加上棒狀線的描述,則變成這樣了:
0.98*L,STICK;{主圖疊加}
一般的信號,不加描述函數(shù),會成箭頭狀。加了STICK之后,就成棒狀了。
副圖1公式: C>REF(C,1) AND C>REF(C,2);
副圖2公式: C>REF(C,1) AND C>REF(C,2),STICK;
我個人調(diào)試公式的體會,還是副圖1的顯示清楚,因為可以看到連續(xù)信號的出現(xiàn)。
二、
函數(shù): COLORSTICK
參數(shù): 無
返回: 無
說明: 以零軸為中心畫彩色棒狀線,零軸下為陰線顏色,零軸上為陽線顏色
示例:
這樣零軸就如楚漢交界,涇渭分明了。
C-REF(C,1),COLORSTICK;{副圖指標}
三、
函數(shù): LINESTICK
參數(shù): 無
返回: 無
說明: 同時畫棒狀線與指標線。
示例:
LINE是線,STICK是棒,LINESTICK自然是線棒一起顯示了。
A:=C-REF(C,1);
A,LINESTICK;{不作說明,都認為是副圖指標}
那么,即想顯示指標線和棒狀線,又想以零軸為中心顯示彩色棒狀線,怎么寫公式呢?這樣行嗎?
A:=C-REF(C,1);
A,LINESTICK,COLORSTICK;
各位可以自己試一下,結(jié)論是否定的。結(jié)果是只有彩色柱,沒有指標線了。
這樣我們初步可以得出一個結(jié)論:在同一個指標中,有多個相同性質(zhì)的描述函數(shù)時,軟件只認最后一個描述函數(shù)。
即想顯示指標線和棒狀線,又想以零軸為中心顯示彩色棒狀線,可以用分開的兩句語句來達成目標:
A:=C-REF(C,1);
A,LINESTICK;
A,COLORSTICK;
四、
函數(shù): VOLSTICK
參數(shù): 無
返回: 無
說明: 畫成交量柱狀線。
示例:
這是專門為顯示成交量設(shè)計的。
股票軟件不同,顯示成交量的陰陽線是很不同的??偟膩碚f,是根據(jù)價來定的,具體方法各有不同,很難說哪種方法就好了,哪種方法就不好了。
飛狐中的方法是這樣的:今天的收盤價大于昨天的收盤價,顯示陽柱;小于等于則顯示陰柱。
五、
函數(shù): CROSSDOT
參數(shù): 無
返回: 無
說明: 畫叉狀線或x狀線。
示例:
呵呵,叉狀線和X狀線有什么區(qū)別?應(yīng)該是一樣的吧。
CROSS是交叉,DOT是點。
當指標線連續(xù)性較好時,顯示交叉點比較順眼。連續(xù)性不好時,看起來比較凌亂。
0.98*L,CROSSDOT;
MA(C,30),CROSSDOT;{主圖疊加}
六、
函數(shù): CIRCLEDOT
參數(shù): 無
返回: 無
說明: 畫小圓圈線
示例:
CIRCLE,圓圈。把CROSSDOT的X顯示換成圓圈的樣子。如果結(jié)合后面的COLOR函數(shù)一起用,可以畫出不同顏色的圈圈,有時也比較實用。
七、
函數(shù): POINTDOT
參數(shù): 無
返回: 無
說明: 畫點狀線
示例:
POINT是點、加點的意思。這個點狀線,在K線顯示數(shù)不多的情況下,看起來太小了。正因如此,在K線顯示數(shù)較多的情況下,就可以彌補CIRCLEDOT顯示太大的缺陷。
0.98*L,CIRCLEDOT;
MA(C,30),POINTDOT;{主圖疊加}
八、
函數(shù): SHIFT
參數(shù): 1--127
返回: 無
說明: 指標線向后(向右)偏移x個周期
示例: ma1:ma(close,5),shift3;將MA1指標線向后偏移3個周期
SHIFT,移位。這是個飛狐比較有特色的的特色函數(shù)。
以以下公式為例子:
MA(C,30);
MA(C,30),POINTDOT,SHIFT5;{主圖疊加}
要注意兩個問題:
1、移位后的指標顯示數(shù)值和不移位時的數(shù)值是不一樣了。移位了五個時間單位,就顯示五個時間單位之前的原數(shù)值。
2、所移位的周期數(shù),不能設(shè)為參數(shù)來調(diào)整。移位的最大周期數(shù)是127。如果寫成SHIFT666,調(diào)試公式也能通過,不過軟件自動取了127來移位。
另外說點題外話。
用SHIFT10之后,當前日的指標顯示的就是原10天前的指標數(shù)值。也就是說,把最近十天的K線數(shù)據(jù),置之不理了。
從人的記憶的特征來看,越近發(fā)生的事,對目前的影響力就越大。這樣看,用SHIFT就一無是處了,因為它拋棄了最近的數(shù)據(jù),而去找較早的數(shù)據(jù)。
從混沌學牽一發(fā)就能動全身的觀點看,SHIFT就大有道理了。佛教中說前世的因,后世的果,相差時間就長得不好說了。
這些討論一般難得見到。易股論壇中有位臺--灣的老兄,發(fā)了兩帖,來討論K線左移(或者說是指標線右移),我才留心了一下。巫山的朋友有體會的,不妨說說。
九、
函數(shù): LINETHICK
參數(shù): 0--7
返回: 無
說明: 改變指標線粗細,LINETHICK0 表示不畫出指標線,不影響坐標,但可在頂部顯示數(shù)值。
示例: ma1:ma(close,5),linethick3;
ma1:ma(close,5),linethick0;表示不畫出ma1指標線,不影響坐標,但可在頂部顯示ma1數(shù)值
THICK,厚的。LINETHICK就可以理解為線(棒)的粗細了。
V,STICK,LINETHICKN;
N分別取1、2、3、4、5、6、7,做七個副圖公式。
這個N也不能做成參數(shù)調(diào)整的。
LINETHICK0是非常常用的,因為一個公式中指標一多,顯示會很亂,把有些顯示去掉,就用這一招。
有時會碰到相反的情況,指標線(柱)顯示不多,而頂部數(shù)值的顯示太多了,那么怎么畫出指標線,而又在頂部不顯示數(shù)值呢?
一般用STICKLINE(畫柱),PARTLINE(畫線)等繪圖函數(shù)來解決。
PARTLINE(1,MA(C,30));{主圖疊加}
十、
函數(shù): COLOR
參數(shù): 000000--FFFFFF
返回: 無
說明: 改變指標線顏色。
常用: 黑色:colorblack 紅色:colorred綠色:colorgreen 藍色:colorblue
白色:colorwhite 灰色:colorgray 黃色:coloryellow 青色:colorcyan
晶紅色:colormagenta 棕色:colorbrown
示例: ma1:ma(close,5),coloryellow; 或 ma1:ma(close,5),colorff0000;
附錄: 238種常用顏色代碼速查表
COLOR,顏色,色彩。是這組函數(shù)中最常用的一個。不但能定義指標線(柱)的顏色,而且能定義頂部指標文字的顏色--用LINETHICK0時也一樣。
顏色的種類應(yīng)該夠用了。至于各指標線(柱)之間的顏色搭配,實在是一種很藝術(shù)性的事。既要有美感,又要不觸目驚心,我只能憑感覺挑選,其它也沒有什么招數(shù)了。要是有學過美術(shù)的人來指點幾招就好了。
楓葉秋雨兄提供的“飛狐色彩值吸取器”,實在是好東西,給我們挑選顏色提供了很大的方便。
飛狐基本函數(shù)簡介之行情函數(shù)
這些行情函數(shù)所取得的數(shù)據(jù),是我們所編寫的公式的原材料。
如果說公式是衣服,這些行情函數(shù)就是布。
有人會說做衣服不一定要布,野草樹皮也可以做。對,一個公式中不一定非有行情函數(shù)不可,但總感覺透風,缺點什么。
一、
函數(shù): OPEN
說明: 取得該周期開盤價,也可簡寫為 O.
函數(shù): HIGH
說明: 取得該周期最高價,也可簡寫為 H.
函數(shù): LOW
說明: 取得該周期最低價,也可簡寫為 L.
函數(shù): CLOSE
說明: 取得該周期收盤價,也可簡寫為 C.
OPEN,打開。HIGH,高度。LOW,低的。CLOSE,關(guān)閉、結(jié)束。
常言道,巧婦難為無米之炊。此四者,就是我們做價格指標的“米”了。不同周期的K線,均由此四者為原材料畫出。
(有人說,家里的米沒有味道,于是去割野菜,采野花,日子一長,又說還是家里的米能填飽肚子。)
有人說,價、量、時、人是技術(shù)分析的四大要素,那么O、H、L、C便構(gòu)成了“價”的四大要素。
道氏理論,主要關(guān)注的是長期趨勢,所以,一般以CLOSE線為主要參考指標。所取前期高、低點,也是CLOSE線的高、低點。
人的心理,常以成敗論英雄。所以CLOSE作為一根K線中的“結(jié)局”,被視為價格四大要素中的最關(guān)鍵因素。此論似成通論,但有些短線炒手認為,OPEN要比CLOSE更重要。股市本是無定論的地方,仁者見仁,智者見智,故不敢多作妄論。
這里隨便談些本人對未來函數(shù)和未來數(shù)據(jù)的看法。關(guān)于未來也者,在較為經(jīng)典的書上很少直接見到這種說法,只是在網(wǎng)上見得多了,便有了些想法,說出與大家共同探討。
如圖,一般帶公式平臺的股票軟件,有“公式檢測”這一項,用來判斷公式中是否含有未來函數(shù)。
目前的信號的產(chǎn)生和保持,如果全依賴于之前的數(shù)據(jù),則可認為產(chǎn)生信號的公式中,不含有未來函數(shù)和未來數(shù)據(jù)。
目前的信號的產(chǎn)生和保持,如果部分依賴于之后的數(shù)據(jù),則可認為產(chǎn)生信號的公式中,含有未來函數(shù)和未來數(shù)據(jù)。
換句話說,如果公式中產(chǎn)生的信號,隨著行情的發(fā)展,信號永遠不變,則此公式就絕無“未來”之嫌疑;信號可能要逃、要變,則此公式中就有“未來”。
如果此定義成立,則可將“未來”分為兩種情況:
1、在一根K線(即時行情)中;
2、在多根K線(盤后)中。
在第一種情況中,以即時行情中的當前日K線為例,除了O之外,其它H、L、C全有未來之嫌。因為在收盤之前,拉高、打壓是司空見慣的事,誰也不能保證H、L不會創(chuàng)出當天的新高和新低,更不用說C了。比如日線周期公式“C>REF(C,1);”,前一分鐘信號成立,后一分鐘可能信號就不成立了。這樣說的話,在日K中包括H、L、C的指標,就全有“未來”之嫌疑了。
還有就是引用進來的信號,比如引用了周K和月K指標,因為當前周K和月K還在變動之中,所以也是未來數(shù)據(jù)。
在第二種情況中,因為在盤后,日K中的四大要素就沒有未來之可能了。在多K線中,典型的未來函數(shù)有兩個:BACKSET、ZIG。這兩個未來函數(shù)到底未來到什么程度,到以后介紹時再說。就算在盤后,除了周五之外,引用的周K指標也是未來數(shù)據(jù);除了在月末,引用的月K指標也是未來數(shù)據(jù)。
這樣說的話,到處是“未來”,我們何處適從?
實際上未來也者,并不是新問題,而是老問題,從有技術(shù)分析之日起,這個問題就存在了,只是在經(jīng)典著作中,并不是以“未來”的字眼出現(xiàn)。
“我們所采取的交易風格越保守,那么,耐心地等待趨勢反轉(zhuǎn)的驗證信號就越為重要。到底需要等待多久呢?這就得從風險與報償兩個方面來權(quán)衡。如果我們選擇較為保守的交易風格,寧愿等待趨勢反轉(zhuǎn)的驗證信號,那么,確實可能承擔較少的風險;但是另一方面,我們從交易中取得的報償也可能減少了。等到趨勢反轉(zhuǎn)信號得到確認的時候,獲利的空間也許已經(jīng)縮小了。”
(<日本蠟燭圖技術(shù)>P.159)
所以說即時行情中的“未來”也一樣,體現(xiàn)的是技術(shù)分析中最古老的一個問題。
而多K線中的未來數(shù)據(jù),是要好好注意的。如果在ZIG的低點買進,在ZIG的高點賣出,則是全世界最好的交易系統(tǒng)了--可惜是馬后炮,因為當時誰也做不到這一點。但也不能說BACKSET、ZIG就一無是處了,有時甚至是不可或缺的。刀劍可能自傷,也可用于殺敵。只要我們熟悉了BACKSET和ZIG的本質(zhì),就可以了解它們“未來”到什么程度,拿來用也是不妨的。至于不熟悉的,還是少用為妙。
二、
函數(shù): VOL
參數(shù): 無
說明: 取得該周期成交量,也可簡寫為 V.
函數(shù): AMOUNT
參數(shù): 無
說明: 取得該周期成交額
VOLUME,量。AMOUNT,數(shù)量、總計。
成交量系統(tǒng)默認單位是手(一百股)。成交額系統(tǒng)默認單位是元(A股和基金是人民幣、滬B股是美元、深B股是港元)。
成交量是僅次于價格的技術(shù)分析要素。成交額因為里面有價量因素,有些高手應(yīng)用時喜歡用之代替成交量。
成交金額萬元:AMOUNT/10000,LINETHICK0;
成交量手:VOL,VOLSTICK;
流通盤萬股:CAPITAL/100,LINETHICK0;
換手率:100*V/CAPITAL,LINETHICK0;
三、
函數(shù): ADVANCE
參數(shù): 無
說明: 取得該周期上漲家數(shù)。(本函數(shù)僅對大盤有效)。
參數(shù): DECLINE
參數(shù): 無
說明: 取得該周期下跌家數(shù)。(本函數(shù)僅對大盤有效)。
ADVANCE,前進。DECLINE,下降。
用于上證指數(shù)和深圳成指。
A:=ADVANCE-DECLINE;
SUM(A,50);
這個線形狀與指數(shù)C線有些不同,反映的是不加權(quán)的情況。
四、
函數(shù): BUYVOL
參數(shù): 無
說明: 取得主動性買單量。 當本筆成交為主動性買盤時,其數(shù)值等于成交量,否則為0. (本函數(shù)僅個股在分筆成交分析周期有效)
函數(shù): SELLVOL
參數(shù): 無
說明: 取得主動性賣單量。當本筆成交為主動性賣盤時,其數(shù)值等于成交量,否則為0. (本函數(shù)僅個股在分筆成交分析周期有效)
BUY,買。SELL,賣。VOL,VOLUME,量。
在分筆成交分析周期中看:
主動性買單量:BUYVOL;
主動性賣單量:SELLVOL;
之和:BUYVOL+SELLVOL;
總成交量:V;
兩者之和必然為總成交量。所以說每筆之成交量,不是主動性買單量,就是主動性之賣單量。
主動性買單量代表多方的力量,主動將掛在賣盤檔位的單子吃進,主動性賣單量則反之,代表的是空方的力量。
至于莊家對倒誘空誘多之動作,長期看另當別論,但在當時,確實也代表了多空之一方。
每日之SUM(BUYVOL,0)之類的數(shù)據(jù),不能在其它周期中引用,要做成擴展數(shù)據(jù)才可。
五、
函數(shù): ISBUYORDER
參數(shù): 無
說明: 取得該成交是否為主動性買單。當本筆成交為主動性買盤時,返回1,否則為0. (本函數(shù)僅個股在分筆成交分析周期有效)
ORDER,定單。BUYORDER,買單(不是請客吃飯后的買單?。?。
在分筆成交分析周期中可以看到,任一筆成交的單子,不是主動買單,就是主動賣單。
主動買單:ISBUYORDER;
主動賣單:NOT(ISBUYORDER)*0.5;
這也就是沒有ISSELLORDER函數(shù)的原因,因為用NOT(ISBUYORDER)就可以取得相同功能。
六、
函數(shù): BIDPRICE(N)
參數(shù): N取1--3,表示買盤檔位。
說明: 取得委買1--委買3價格。(本函數(shù)僅個股在分筆成交分析周期有效)
示例: BIDPRICE(1)
表示最高叫買價。
函數(shù): BIDVOL(N)
參數(shù): N取1--3,表示買盤檔位。
說明: 取得委買1--委買3量。(本函數(shù)僅個股在分筆成交分析周期有效)
示例: BIDVOL(1)
表示最高叫買量。
BID,出價、投標,這里是買進報價的意思。PRICE,價格。
有人可能會說:圖中不是有委買8的單子么?呵呵,那是推算出來的,撤單了亦未可知。
七、
函數(shù): ASKPRICE(N)
參數(shù): N取1--3,表示賣盤檔位。
說明: 取得委賣1--委賣3價格。(本函數(shù)僅個股在分筆成交分析周期有效)
示例: ASKPRICE(1)
表示最低叫賣價。
函數(shù): ASKVOL(N)
參數(shù): N取1--3,表示賣盤檔位。
說明: 取得委買1--委買3量。(本函數(shù)僅個股在分筆成交分析周期有效)
示例: ASKVOL(1)+ASKVOL(2)+ASKVOL(3)
表示三檔賣盤量總和。
ASK,詢問、要求,這里是賣出報價的意思。
副圖公式一:
委買總量:BIDVOL(1)+BIDVOL(2)+BIDVOL(3);
委賣總量:ASKVOL(1)+ASKVOL(2)+ASKVOL(3);
副圖公式二:
賣一買一空檔:ASKPRICE(1)-BIDPRICE(1);
編僅個股在分筆成交分析周期有效的公式時要注意,編好了之后,公式的“禁用周期”就自動設(shè)置為如圖的樣子。
如果以后要把這個公式修改為其它周期的公式時,不可忘記把“禁用周期”中的設(shè)置改過來,否則公式指標輸出會沒有顯示。
飛狐基本函數(shù)簡介之繪圖函數(shù)
這組函數(shù)的功能是在主圖或副圖上設(shè)定條件輸出圖象、圖標、直線、文字、數(shù)字、指標線、指標柱等,全部可以單獨使用。
個人感覺,飛狐的強大功能,在此組函數(shù)中有淋漓盡致的發(fā)揮。無論在表面(美感),還是實質(zhì)(提高工作效率)上,都有良好表現(xiàn)。
毫無例外的是,這組函數(shù)中,都帶有COND。CONDITION,條件,狀態(tài)。COND在這里可作為條件理解。
為了能找到合適的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ù)分析的老祖宗道氏:“只要平均指數(shù)的最高點超過了前期的最高點,它就處于牛市時期;當最低點低于前期的最低點時,它處于熊市時期?!边@里我們撇開向上、向下分形和分形峰狀點等概念,以免把概念復(fù)雜化。)
也為了不讓公式一來就過于復(fù)雜,我們先取N為2來做公式。簡介到后面,可以看到,N是可以作為峰點公式的參數(shù)進行調(diào)整的。
公式名稱:FENG2
公式說明:供引用
公式內(nèi)容:
{峰點參數(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ù)值設(shè)為1}
HD:FILTER(D,2);{找到高點后,過濾掉其后2周期內(nèi)可能出現(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ù)值設(shè)為1}
LD:FILTER(D2,2);{找到低點后,過濾掉其后2周期內(nèi)可能出現(xiàn)的等低點。輸出低點}
{后面有些例子,就從這個公式中引用信號。}
一、
函數(shù): DRAWICON
參數(shù): 無
用法: DRAWICON(COND,PRICE,TYPE),當COND條件滿足時,在PRICE位置畫TYPE號圖標。
說明: 在圖形上繪制小圖標,其中TYPE可選7種圖標,編碼為1-7(1-3為小臉,4、5為上下箭頭,6、7為紅綠小旗)。TYPE為 字符串時可顯示用戶自制BMP圖。
示例: DRAWICON(CLOSE>OPEN,LOW,1);表示當收陽時在最低價位置畫1號圖
DRAWICON(C>O,L,'MyBMP')表示當收陽時在最低價位置畫FmlDLL子目錄下的自制圖標MyBMP.BMP
1、COND條件,一般是指判斷的結(jié)果,不是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等?,F(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;
可以初步得出結(jié)論:
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、可以自由調(diào)用MyBMP.BMP圖到顯示位置,大大增強了輸出的效果。你只要看到好看的圖,可以隨時抓拍過來,做成BMP文件,放到FmlDLL子目錄下,就可以調(diào)用了。
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');{主圖疊加。如果你想要這個公式有顯示,可到樓下下載,解壓縮到FmlDLL子目錄下}
內(nèi)有40個不同顏色的小球。
二、
函數(shù): DRAWLINE
參數(shù): 無
用法: DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND),當COND1條件滿足時,在PRICE1位置畫直線起點,當COND2條件滿足時,在PRICE2位置畫直線終點,EXPAND為延長類型。
說明: 在圖形上繪制直線段。
示例: DRAWILINE(HIGH>=HHV(HIGH,20),HIGH,LOW<=LLV(LOW,20),LOW,1);表示在創(chuàng)20天新高與創(chuàng)20天新低之間畫直線并且向右延長。
DRAWLINE是唯一一個一句里面用到兩個COND的繪圖函數(shù)。因為它需要兩個點來決定一直線。
COND1相當于指定K線位置(橫坐標),PRICE1相當于是指定價位(縱坐標),這樣一個點在平面上的位置就決定了。
DRAWLINE是從第一點畫到第二點的,即有起點與終點的順序關(guān)系:第一點出現(xiàn)的時間,要在第二點之前。否則線是畫不出來的。
EXPAND,擴張、發(fā)展,這里是延伸的意思吧。一般取0,不延長;取1,延長。實際上是取大于等于1的數(shù)就延長,小于1就不延長。
DRAWLINE目前支持POINTDOT、LINETHICK、COLOR、SHIFT這四個描述函數(shù)。
舉個例子吧。
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ù)才能滿足多數(shù)人的要求,以后有機會再作介紹。
DRAWLINE畫出的線,應(yīng)該比手工畫出的線精確一些。(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ù): DRAWTEXT
參數(shù): 無
用法: DRAWTEXT(COND,PRICE,TEXT),當COND條件滿足時,在PRICE位置書寫文字TEXT,可顯示多行文本,用""換行。
說明: 在圖形上顯示文字。
示例: DRAWTEXT(CLOSE/OPEN>1.08,LOW,'大陽線');表示當日漲幅大于8%時在最低價位置顯示'大陽線'字樣。
DRAWTEXT(CLOSE/OPEN>1.08,LOW,'好呀大漲啦');可顯示多行文本,用""換行;
在某些滿足條件的地方直接顯示文字或字符,比顯示圖標要更直觀一些。
此函數(shù)可以用ALIGN來定位水平位置。而ALIGN用在DRAWICON上定位的是高低的位置。
從下面例子可以看到,ALIGN(0~2)定義水平位置的意義:
ALIGN0:居中;
ALIGN1:偏右;
ALIGN2:偏左。
也可以用SHIFT函數(shù)進行向右水平移位。
所顯示的文字或字符,可以用COLOR函數(shù)來定義顏色。至于文字的大小,則采用系統(tǒng)默認的大小,在此函數(shù)中無法定義。
此函數(shù)單獨使用有其用途,與DRAWNUMBER配合應(yīng)用時,效果更不錯。后面介紹到DRAWNUMBER時再舉例子。
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;{主圖疊加}
四、
函數(shù): POLYLINE
參數(shù): 無
用法: POLYLINE(COND,PRICE),當COND條件滿足時,以PRICE位置為頂點畫折線連接。
說明: 在圖形上繪制折線段。
示例: POLYLINE(HIGH>=HHV(HIGH,20),HIGH);表示在創(chuàng)20天新高點之間畫折線。
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ù): STICKLINE
參數(shù): 無
用法: STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY),當COND條件滿足時,在PRICE1和PRICE2位置之間畫柱狀線,寬度為WIDTH可為0---100(10為標準間距),EMPTH不為0則畫空心柱。
說明: 在圖形上繪制柱線。
示例: STICKLINE(CLOSE>OPEN,CLOSE,OPEN,0.8,1);表示畫K線中陽線的空心柱體部分。
再說明三點:
1、PRICE1和PRICE2沒有順序關(guān)系,即何者在前何者在后都不影響語句的執(zhí)行。
2、WIDTH寬度,支持小數(shù)。用1和用0.1,會有很大的差別。取7時和主圖的K線寬度差不多。
以下的副圖公式,畫出的K線,與主圖中顯示的K線差不多。有些“主圖疊加公式”,疊加在副圖中也未嘗不可了。
STICKLINE(C>O OR (C=O AND C>REF(C,1)),O,C,7,1),colorred;{畫出紅K實體}
STICKLINE((C>O AND C<>H) OR (C=O AND C>REF(C,1)),C,H,0.1,0),colorred;{畫出紅K上影線}
STICKLINE((C>O AND L<>O) OR (C=O AND C>REF(C,1)),L,O,0.1,0),colorred;{畫出紅K下影線}
STICKLINE(C<O OR (C=O AND C<=REF(C,1)),C,O,7,0),colorcyan;{畫出青K實體}
STICKLINE(C<O OR (C=O AND C<=REF(C,1)),L,H,0.1,0),colorcyan;{畫出青K影線。因為青K是實心的,所以影線從中穿過}
MA(C,5);
3、用STICKLINE可以用兩種方法做出多色彩K線效果。
一種是橫向的,將K線實體從O到C分為N等份,每個小格中放入不同的但比較連續(xù)的顏色。
這里隨便舉個例子,N取4,只對陽線加了效果。其它變化,道理是一樣的。
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ù)點后PRECISION位。
用法: DRAWNUMBER(COND,PRICE,NUMBER,PRECISION),當COND條件滿足時,在PRICE位置書寫數(shù)字
說明: 在圖形上顯示數(shù)字。
示例: DRAWNUMBER(CLOSE/OPEN>1.08,HIGH,(CLOSE-OPEN)/OPEN*100,2);表示當日漲幅大于8%時在最低價位置顯示漲幅(相對開盤價的百分比)。
這個函數(shù)的特色是,在NUMBER位置可以放變量。
NUMBER,數(shù)字。DRAWNUMBER是DRAWTEXT的“兄弟”,也可以用ALIGN(0~2)來定義水平位置,方法相同。
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;{主圖疊加}
七、
函數(shù): FILLRGN(COND,PRICE1,PRICE2)
參數(shù):
用法: FILLRGN(COND,PRICE1,PRICE2),當COND條件滿足時,以COLOR填充PRICE1和PRICE2的區(qū)間
說明: 繪制指標區(qū)間彩帶。
示例: FILLRGN(MA1>MA2, MA1,MA2),colorred; 表示MA1>MA2時以紅色填充MA1和MA2之間的區(qū)域。
FILL,充滿,填充。RGN可能是REGION,地區(qū),地域。
用這個函數(shù),再加DRAWICON可以調(diào)用BMP圖象文件的功能,可以作出象風景一樣的圖。
這里舉個簡單的例子:
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),滿足COND條件繪制PRICE連線。
說明: 分段繪制指標線
示例: PARTLINE(C>REF(C,1),C),colorred;表示收盤大于前收以紅色繪制收盤價連線。
PART,部分,局部。值得一提的是,PARTLINE支持多種描述函數(shù),如例所見。
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條件滿足的周期處畫垂直線
說明: 在圖形上繪制垂直線段
示例: DVERTLINE(HIGH>=HHV(HIGH,20);表示在創(chuàng)20天新高時畫垂直線
VERTICAL,垂直的。
VERTLINE目前可以用POINTDOT、LINETHICK、COLOR、SHIFT這四個描述函數(shù)來描述。
這個函數(shù),主要是用于畫線看時間的。費波納契周期,可以用這個函數(shù)畫出來的。
這里舉個例子,把日K線中每月的第一個交易日中,畫一根垂直線。
A:=MONTH>REF(MONTH,1);
VERTLINE(A),COLOR808040,POINTDOT;{主圖疊加}
十、
函數(shù): DRAWYITEXT(COND,PRICE,CODE,TYPE)
參數(shù):
用法: 在COND在圖形上顯示易學文字,可ALIGN0-3定義對齊方式。
說明: 當COND條件滿足時,在PRICE位置書寫TYPE類型的CODE的對應(yīng)文字
TYPE為常數(shù),取0--1,分別表示計算的是干支、64卦,CODE為對應(yīng)的代碼
示例: DRAWYITEXT(CLOSE/OPEN>1.05,LOW, GANZHI(DATE*100, 2),0),表示當日漲幅大于5%時在最低價位置顯示日干支;
DRAWYITEXT(REF(CLOSE,2)>REF(OPEN,2) AND REF(CLOSE,1)>REF(OPEN,1) AND CLOSE>OPEN, LOW, KGUA(1, 1), 1 ),表示連二陽時在最低價位置顯示K線卦象。
如下例子:K線卦
kk:=KGUA(0,6);
DRAWYITEXT(c>0,mod(BARSCOUNT(c),6),kk,1); {附圖指標}
十一、
函數(shù): DRAWBKBMP(COND,BMP)
參數(shù):
用法: 當圖形上最后一組COND條件滿足時,以MyBMP做背景:
說明: 根據(jù)條件設(shè)置背景圖
示例: 因為系統(tǒng)K線先畫,會被后來的指標圖覆蓋了
這種公式K線要自己畫,以下供參考
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ù):
用法: 當COND條件滿足時,以COLOR1到COLOR2漸變色填充子圖區(qū)域,D=0表示從左到右,D=1表示從上到下
說明: 繪制漸變背景色
示例: DRAWGBK(C>O, COLORRGB(255,0,0), COLORRGB(255,255,0),0);
飛狐基本函數(shù)簡介之時間函數(shù)
基本函數(shù)全是遍歷所有從前到后(從第一根到最后一根)K線的,取得每根K線上的時間,就用時間函數(shù)了。
飛狐有獨有的自然日、陰陽歷、節(jié)氣、月相、易學相關(guān)分析,在時間函數(shù)中就有相應(yīng)的體現(xiàn)。
時間周期分析是技術(shù)分析的一大分枝吧,江恩等人樂此不疲。不過也有不少人不相信。
一、
函數(shù): DAY
參數(shù): 無
返回: 返回有效值范圍為(1-31).
說明: 取得該周期的日期。
函數(shù): WEEKDAY
參數(shù): 無
返回: 返回有效值范圍為(0-6),0表示星期天
說明: 取得該周期的星期數(shù)。
函數(shù): MONTH
參數(shù): 無
返回: 返回有效值范圍為(1-12)
說明: 取得該周期的月份。
函數(shù): YEAR
參數(shù): 無
返回: 返回有效值范圍為(1970-2038)
說明: 取得該周期的年份。
與DATE函數(shù)不同,這些函數(shù)所輸出的數(shù)值,與我們平時使用時是真實對應(yīng)的,比如DAY返回3,當時就是3號。
小周期K線中使用大周期的時間函數(shù)不成問題,反之則不行。比如在分筆成交圖中,也可以取得年、月等。
年:YEAR,LINETHICK0;
月:MONTH;
周:WEEKDAY;
日:DAY;
二、
函數(shù): DATE
參數(shù): 無
返回: 返回有效值范圍為(700101-1341231),表示19700101-20341231
說明: 取得該周期從1900以來的的年月日。
為什么當時設(shè)計這個函數(shù)時,不直接取得年月日?不得而知。
后來還是給發(fā)現(xiàn)了一些蛛絲馬跡,
年月日:DATE+19000000;
年(200)月日:DATE-1000000;
YMD:YEAR*10000+MONTH*1000+DAY;
只有第二句的輸出始終是對的,其它兩句,輸出可能都會增1或減1。FH和FXJ一樣,都有這個問題。
這就是DATE不直接取得年月日的原因。對于其它整數(shù)部分的位數(shù)達8位的數(shù)的運算,我們也可以知道,個位數(shù)的精確度是有問題的。
********************************************
DATE 函數(shù)使用的注意事項
用公式檢測:
DATE+19000000;
1.有些日期結(jié)果不對;
2.DATE+19000000+1;不起作用,只有加2以上才起作用!
是浮點計算造成的誤差,寫公式時盡量用DATE表述。
只好“壓縮”使用了。
比如大盤的成交額,不用元為單位,用萬元或億元為單位。
數(shù)據(jù)的使用,無需追求過多的位數(shù),要看相對誤差。
目前可以正確處理的整數(shù)部分的位數(shù)達8位,相對誤差已經(jīng)非常的小了。
本來可以顯示小數(shù)的,大概是1a001提了建議后,這類數(shù)據(jù)的顯示,限制了小數(shù)部分的顯示了。
只好這樣來處理了:
mod(YEAR,100)*10000+MONTH*100+DAY
年號只用2位數(shù)表示。
******************************************
三、
函數(shù): HOUR
參數(shù): 無
返回
飛狐基本函數(shù)簡介之引用函數(shù)
引用函數(shù)主要是向前引用數(shù)據(jù)。BACKSET可以理解為向后引用某些判斷信號,并不能引用具體數(shù)據(jù)。
股市技術(shù)分析主要是根據(jù)已經(jīng)發(fā)生的數(shù)據(jù),來推測未來走向的可能,所以引用函數(shù)在公式中應(yīng)用得最多,具體使用時,奧妙也最多。有些東西實在不能鋪開多講,否則篇幅會了無窮盡,只能急剎車。不當之處,請各位多多指正。
一、
函數(shù): COUNT(X,N)
參數(shù): X為數(shù)組,N為計算周期
返回: 返回數(shù)組
說明: 統(tǒng)計N周期中滿足X條件的周期數(shù),若N=0則從第一個有效值開始。
示例: COUNT(CLOSE>OPEN,20)
表示統(tǒng)計20周期內(nèi)收陽的周期數(shù)
函數(shù): SUM(X,N)
參數(shù): X為數(shù)組,N為計算周期
返回: 返回數(shù)組
說明: 統(tǒng)計N周期中X的總和,N=0則從第一個有效值開始。
示例: SUM(VOL,0)
表示統(tǒng)計從上市第一天以來的成交量總和
COUNT,計數(shù)。SUM,總數(shù)、和。
當數(shù)組為邏輯運算判斷的結(jié)果時,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);和以上得出的結(jié)果應(yīng)該是一樣的。
股市的不隨機規(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)計出來。
出個“難題”吧:
有個MA5金叉MA10作為買入條件,死叉為賣出條件的交易系統(tǒng),試做一個副圖公式,以每次買一股計算,統(tǒng)計出最后的交易結(jié)果(暫不考慮手續(xù)費)。買入賣出均以收盤價計算。
二、
函數(shù): REF(X,N)
參數(shù): X為數(shù)組,N為計算周期
返回: 返回數(shù)組
說明: 引用N周期前的X值。
示例: REF(CLOSE,1)
表示上一周期的收盤價,在日線上就是昨收
REF:REFERENCED,參考的、引用的。
N可以為變量,常用BARSLAST(X)等。
三、
函數(shù): MA(X,N)
參數(shù): X為數(shù)組,N為計算周期
返回: 返回數(shù)組
說明: 求X的N日移動平均值。
算法: (X1+X2+X3+...+Xn)/N
示例: MA(CLOSE,10),表示求10日均價
MA:MOVING AVERAGE,移動平均。
目前飛狐的MA(X,N)函數(shù)支持N為序列變量。
這個簡單移動平均值,僅僅覆蓋最近的N個周期,并且在每個周期中分配的權(quán)重是一模一樣的,均為1/N。
移動平均線實質(zhì)上是一種追蹤趨勢的工具,而且滯后于市場的變化。這些結(jié)果的原因,就是它的計算方法了。
從輸出看,N所取周期越長,曲線就越平滑。
平滑和敏感是一對矛盾,請看:
A:MA(C,5);
B:MA(A,5);
D:MA(B,5);{主圖疊加}
輸出線越來越平滑,但敏感性越來越差。
兩條簡單移動平均線的交叉,何時、何地所選的參數(shù)最優(yōu),可以參考飛狐中的“探索最佳參數(shù)”功能。
線性加權(quán)移動平均值的算法函數(shù),飛狐并未提供。
以五天的線性加權(quán)移動平均的算法為例:
五天線性加權(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)移動平均線由于日子越近的權(quán)重越大,比簡單移動平均線,跟隨趨勢要緊密一些,敏感一些。
從圖上看,兩者的交叉也是極為敏感的。
四、
函數(shù): EMA(X,N)
參數(shù): X為數(shù)組,N為計算周期
返回: 返回數(shù)組
說明: 求X的N日指數(shù)平滑移動平均。
算法: 若Y=EMA(X,N) 則Y=[2*X+(N-1)*Y']/(N+1), 其中Y'表示上一周期Y值。
示例: EMA(CLOSE,30)
表示求30日指數(shù)平滑均價
EMA中的E,可能是EXPONENT,指數(shù)、冪。
把算法寫成這個樣子:Y=2*X/(N+1)+(N-1)/(N+1)*Y',就可以看出,當前周期數(shù)組值所占的權(quán)重是2/(N+1),而上一周期Y值所占的權(quán)重是(N-1)/(N+1)。注意,這兩個權(quán)重相加,結(jié)果為1:2/(N+1)+(N-1)/(N+1)=1。
由于一個很經(jīng)典的指標指數(shù)平滑異同平均線MACD(1979年就發(fā)明出來了)里面,要用到EMA,才使EMA還在基本函數(shù)中占有一席之地。后面我們可以看到,用SMA也可以達到相同的算法。
N可以取到1,不過輸出就沒有加權(quán)的效果了。
五、
函數(shù): SMA(X,N,M)
參數(shù): X為數(shù)組,N為計算周期,M為權(quán)重
返回: 返回數(shù)組
說明: 求X的N日移動平均,M為權(quán)重。
算法: 若Y=SMA(X,N,M) 則 Y=[M*X+(N-M)*Y')/N, 其中Y'表示上一周期Y值,N必須大于M。
示例: SMA(CLOSE,30,1)
表示求30日移動平均價
SMA中的S,不會是SIMPLE(簡單)的意思吧?由于我們習慣稱MA為簡單移動平均線,所以稱SMA為什么就大傷腦筋。
我的理解,SMA應(yīng)該稱為指數(shù)加權(quán)移動平均線。不對之處請方家指出。
把算法寫成這個樣子:Y=M/N*X+(N-M)/N*Y',就可以看出,當前周期數(shù)組值所占的權(quán)重是M/N,而上一周期Y值所占的權(quán)重是(N-M)/N。注意,這兩個權(quán)重相加,結(jié)果為1:M/N+(N-M)/N=1。
看出來了吧?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,否則沒有輸出。
SMA中,數(shù)組每天所占的權(quán)重,是較為復(fù)雜的??偟膩碚f,日子越近,所占的權(quán)重越大,當天所占的權(quán)重是M/N,前一天所占的權(quán)重是M*(N-M)/(N*N);日子越遠,所占的權(quán)重就越小,上市第一天的K線數(shù)據(jù)中,在目前還有權(quán)重的體現(xiàn),不過已經(jīng)非常非常小了。
SMA看似解決了MA的兩大缺點:1、只有N天內(nèi)的數(shù)據(jù)占有權(quán)重;2、N天內(nèi)數(shù)據(jù)所占權(quán)重比重一樣。有所得必有所失,SMA自己的缺點體現(xiàn)在光滑有余,敏感不足。
有一項檢測系統(tǒng)得出的結(jié)論稱:“簡單移動平均值方法既勝過線性加權(quán)平均值法,也勝過指數(shù)加權(quán)平均值法?!保ǎ计谪浭袌黾夹g(shù)分析>P231),當然他們不是檢測中國股市。有興趣的朋友,可以用這些移動平均函數(shù),做出交易系統(tǒng),然后進行檢測。
六、
函數(shù): DMA(X,A)
參數(shù): X為數(shù)組,A為計算周期
返回: 返回數(shù)組
說明: 求X的動態(tài)移動平均。
算法: 若Y=DMA(X,A) 則 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必須小于1。
示例: DMA(CLOSE,VOL/CAPITAL)
表示求以換手率作平滑因子的平均價
呵呵,均線函數(shù)還有。
DMA中的D,是中文的拼音:DONG。也可能是DYNAMIC。
這個函數(shù),與SMA是一家的,看:
Y=M/N*X+(N-M)/N*Y';
Y=A*X+(1-A)*Y';
前者說,N必須大于M,后者說,A必須小于1。然后兩者就一樣了:A=M/N。
說“A為計算周期”似乎不妥,A明明要取小數(shù)才行。DMA在第一根K線就開始起算,SMA要到第二根K線開始起算。
七、
函數(shù): HHV(X,N)
參數(shù): X為數(shù)組,N為計算周期
返回: 返回數(shù)組
說明: 求N周期內(nèi)X最高值,N=0則從第一個有效值開始。
示例: HHV(HIGH,30)
表示求30日最高價
函數(shù): HHVBARS(X,N)
返回: X為數(shù)組,N為計算周期
參數(shù): 返回數(shù)組
說明: 求N周期內(nèi)X最高值到當前周期數(shù),N=0表示從第一個有效值開始統(tǒng)計
示例: HHVBARS(HIGH,0)
求得歷史新高到到當前的周期數(shù)
這兩個函數(shù)一起用,可以找到當前N天中的最高點。
A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);
B:=COUNT(A,N)=1;{取得前N個周期內(nèi)的最高點位置}
REF(H,BARSLAST(B));
DRAWICON(B,H,1),ALIGN2;{主圖疊加。N:30,1,9999}
八、
函數(shù): LLV(X,N)
參數(shù): X為數(shù)組,N為計算周期
返回: 返回數(shù)組
說明: 求N周期內(nèi)X最低值,N=0則從第一個有效值開始。
示例: LLV(LOW,0)
表示求歷史最低價
函數(shù): LLVBARS(X,N)
參數(shù): X為數(shù)組,N為計算周期
返回: 返回數(shù)組
說明: 求N周期內(nèi)X最低值到當前周期數(shù),N=0表示從第一個有效值開始統(tǒng)計
示例: LLVBARS(HIGH,20)
求得20日最低點到當前的周期數(shù)
當前N天之內(nèi)的最高點和最低點就一目了然了:
A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);
B:=COUNT(A,N)=1;{取得前N個周期內(nèi)的最高點位置}
REF(H,BARSLAST(B));
DRAWICON(B,H,1),ALIGN2;
A2:=BACKSET(ISLASTPERIOD,LLVBARS(L,N)+1);
B2:=COUNT(A2,N)=1;{取得前N個周期內(nèi)的最低點位置}
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個周期內(nèi)的最高點位置}
REF(H,BARSLAST(B));
DRAWICON(B,H,1),ALIGN2;
A2:=BACKSET(ISLASTPERIOD,LLVBARS(L,N)+1);
B2:=COUNT(A2,N)=1;{取得前N個周期內(nèi)的最低點位置}
REF(L,BARSLAST(B2));
DRAWICON(B2,L,2),ALIGN1;{主圖疊加。N:30,1,9999}
這個公式求前期高低點,在600036等次新股上試調(diào)整參數(shù)就露馬腳了,并不完善。
問題出在HHVBARS起算點等原因上。
南客剛發(fā)表了一個公式,就順手牽羊牽過來吧。這個公式可以說是完美解決方案:
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
%>
當N個周期之內(nèi),有兩個最高價,即有等高的情況出現(xiàn),HHVBARS會返回哪個最高價到當前的周期數(shù)呢?
用副圖公式觀察一下,N取10:
HHVBARS(H,N);
如圖,我們可以得出結(jié)論,返回的是前一個最高價到當前的周期數(shù)。
同樣,當在N個周期之內(nèi),有兩個等低的最低價出現(xiàn)時,LLVBARS會返回前一個最低價到當前的周期數(shù)。
九、
函數(shù): SUMBARS(X,A)
參數(shù): X為數(shù)組
返回: 返回數(shù)組
說明: 將X向前累加直到大于等于A,返回這個區(qū)間的周期數(shù)
示例: SUMBARS(VOL,CAPITAL)
求完全換手到現(xiàn)在的周期數(shù)
這個函數(shù)好用,在于它不但能精確地得到統(tǒng)計結(jié)果,而且能得到“模糊”的結(jié)果。
就以SUMBARS(VOL,CAPITAL)為例:
日期數(shù):SUMBARS(VOL,CAPITAL);{返回成交量累加到流通盤的日期數(shù)}
驗證:SUM(V,日期數(shù))/CAPITAL;{把返回的日期數(shù)之內(nèi)的成交量累計,再除以流通盤}
運行的結(jié)果中,我們可以看到,“驗證”的輸出,除了SUMBARS起算點附近之外,從來沒有小于1的。可見SUMBARS只往多算,不往少算,非?!熬鳌?。
十、
函數(shù): BARSCOUNT(X)
參數(shù): X為數(shù)組
返回: 返回數(shù)組
說明: 第一個有效數(shù)據(jù)到當前的天數(shù)
示例: BARSCOUNT(CLOSE)
對于日線數(shù)據(jù)取得上市以來總交易日數(shù),對于分筆成交取得當日成交筆數(shù),對于1分鐘線取得當日交易分鐘數(shù)
BARS是什么?我們看到,關(guān)于取得相隔時間周期的函數(shù)中,多數(shù)以BARS開頭。
查字典,BAR的意思有很多,有條、條形、酒巴、巴等。后來才恍然大悟:相隔時間周期,不就是中間相隔幾根條形K線么?
BARSCOUNT(X)是第一個有效數(shù)據(jù)到當前的天數(shù)。那么什么是有效數(shù)據(jù)?
A:BACKSET(ISLASTPERIOD,10);
零:BARSCOUNT(A);
很小:BARSCOUNT(C/10000000000000);
負數(shù):BARSCOUNT(-C);
不存在:BARSCOUNT(MA(C,10));
可見,有效數(shù)據(jù)并不是全是大于等于1的數(shù)據(jù),只要有輸出的數(shù)據(jù),不管是零,還是負數(shù),均為有效數(shù)據(jù)。
而MA(C,10)是從第十根K線開始起算的,所以一直要到第十根K線,BARSCOUNT(MA(C,10))才輸出1。
這樣找一些指標的起算點時間位置,用BARSCOUNT函數(shù)就很管用了。
一般找第一根K線的位置,就可以寫為BARSCOUNT(C)=1;
十一、
函數(shù): BARSSINCE(X)
參數(shù): X為數(shù)組
返回: 返回數(shù)組
說明: 第一次X不為0到現(xiàn)在的天數(shù)
示例: BARSSINCE(HIGH>20)
表示股價第一次超過20元時到當前的周期數(shù)
SINCE,自...以后。BARSSINCE和BARSCOUNT很象,不過它找的是非零信號。
A:BACKSET(ISLASTPERIOD,10);
零:BARSsince(A);
很小:BARSsince(C/10000000000000);
負數(shù):BARSsince(-C);
不存在:BARSsince(MA(C,10));
可見,零和無效數(shù)據(jù),均不被計數(shù)。一般BARSSINCE是針對邏輯運算的結(jié)果的,因為邏輯運算的結(jié)果輸出,不是0,就是1。
十二、
函數(shù): BARSLAST(X)
參數(shù): X為數(shù)組
返回: 返回數(shù)組
說明: 上一次X不為0到現(xiàn)在的天數(shù)
示例: BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)
表示上一個漲停板到當前的周期數(shù)
條件滿足的當前周期,BARSLAST返回0。
是“不為0”到現(xiàn)在的天數(shù)么?運行這個公式試試:
A:=C>O;
A1:=0.5*A;
A2:=3*A;
A3:=-3*A;
一:BARSLAST(A1);
二:BARSLAST(A2);
三:BARSLAST(A3);
如圖,“一”根本就沒有輸出。初步可得出結(jié)論:其絕對值大于等于1的數(shù)組信號,BARSLAST(數(shù)組)才有輸出。
十三、
函數(shù): BACKSET(X,N)
參數(shù): X為數(shù)組,N為正整數(shù)
返回: 返回數(shù)組
說明: 若X非0,則將當前位置到N周期前的數(shù)值設(shè)為1。
示例: BACKSET(CLOSE>OPEN,2)
若收陽則將該周期及前一周期數(shù)值設(shè)為1,否則為0
如果公式檢測出來有未來數(shù)據(jù),則BACKSET是第一個嫌疑。
BACKSET是往前倒推信號(數(shù)據(jù)1)的,僅此而已。由于所有基本函數(shù)都是序列變量,所以要用基本函數(shù),把當前的數(shù)據(jù)(比如最高價)往前推是做不到的。所以說,基本函數(shù)要往后引用具體數(shù)據(jù)是做不到的,往后引用信號是可能用BACKSET做到的。
說BACKSET不可或缺,是因為用基本函數(shù)在找歷史峰點等公式中,如果沒有它將一籌莫展。
這個“說明: 若X非0,則將當前位置到N周期前的數(shù)值設(shè)為1。”有點問題,如果數(shù)組X是邏輯運算的結(jié)果是對的,如果不是就難說了,比如:
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ù)
返回: 返回數(shù)組
說明: 過濾連續(xù)出現(xiàn)的信號,X滿足條件后,刪除其后N周期內(nèi)的數(shù)據(jù)置為0
示例: FILTER(CLOSE>OPEN,5)
查找陽線,5天內(nèi)再次出現(xiàn)的陽線不被記錄在內(nèi)
如果說BACKSET能夠向后引用信號,那么FILTER就能向后過濾信號--即把有效信號去掉。比如N取3,就把以后3個周期內(nèi)的有效信號去掉了,所以從連續(xù)信號上看,兩個信號之間的間隔不可能小于3的。用這個公式觀察一下就容易明白了:
A:=C>O;
FILTER(A,3);
十五、
舉兩個綜合運用引用函數(shù)的例子。
1、RSI(相對強弱指標(Relative Strenth Index),1978年由韋爾斯·王爾德發(fā)明)
A、飛狐的反趨向指標中的RSI是這樣寫的:
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,100N2:12,2,100N3:24,2,100}
RSI1、RSI2、RSI3三根線是一樣的算法,只是所取參數(shù)不同。
MAX,在兩者之間取大者。ABS,取絕對值。以日K周期為例,LC是昨天的收盤價,C-LC即為兩天之間的收盤價差值。
RSI的分母是這個差值的絕對值,進行指數(shù)加權(quán)平均處理。
RSI的分子是上漲中的差值,進行指數(shù)加權(quán)平均處理。
分子所占分母的比重的百分比,即得出RSI的值。
B、原始RSI的算法是這樣的:
設(shè)A為N天內(nèi)上漲收盤價的平均值,B為N天內(nèi)下跌收盤價的平均值。
RSI=100-100/(1+RS),其中的RS=A/B。
經(jīng)過化簡,RSI=100*A/(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}
好了,將兩種算法寫在一起:
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;
{坐標線位置:0; 20; 50; 80; 100; }
如圖,原始RSI要比飛狐RSI要敏感一些,因為飛狐的RSI經(jīng)過了指數(shù)加權(quán)平均處理。
我沒有說指數(shù)加權(quán)平均處理就不好了,經(jīng)過處理后,指標會平滑、穩(wěn)定一些。
2、參數(shù)可調(diào)整的峰點公式
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ù)值設(shè)為1,所以要用N+1}
HD:=FILTER(D,N); {當高點附近有等高的K線出現(xiàn),取第一個,過濾掉后面N個周期之內(nèi)出現(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ù)簡介之邏輯函數(shù)
這組函數(shù)全部用于邏輯判斷,所得結(jié)果非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)輸出的結(jié)果應(yīng)該是一樣的。也可用以下公式驗證。
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)應(yīng)該返回0了?
按說明應(yīng)該返回0,但實際上是返回1的。
NOT(C/N);
NOT(0.1);{參數(shù)N:10,1,999}
如圖,調(diào)整N,我們可以觀察到結(jié)論:當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ù)用于算術(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ù)??赡苁且驗樗纳嵛迦胧侨藶榈囊环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ù)關(guān)系。
實際上正弦值的平方加上余弦值的平方等于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度)的相位。
主要應(yīng)用在技術(shù)分析中的周期分析上。
那么在指標中畫出正弦波應(yīng)該是很容易了吧。
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,...)時,返回值就不太“精密”了,也就是說構(gòu)成波形的點數(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)計學和推導(dǎo)統(tǒng)計學兩部分。描述統(tǒng)計學指用圖表達資料數(shù)據(jù),比如用一張標準的線圖展示價格歷史。推導(dǎo)統(tǒng)計學則指從資料推導(dǎo)出概括的、預(yù)測的或推延性的結(jié)論。所以價格圖表屬于前者的范疇,而針對價格圖表進行的技術(shù)分析則屬于推導(dǎo)統(tǒng)計學的范疇。
綜合起來,技術(shù)分析以過去的價格數(shù)據(jù)預(yù)測未來,有充分的統(tǒng)計學根據(jù)?!保计谪浭袌黾夹g(shù)分析>P16
實際上,我們常用的技術(shù)指標,都自覺或不自覺地利用了統(tǒng)計學中的相關(guān)原理。比如均線指標MA(C,N),是N個周期中收盤價的算術(shù)平均值,就利用了統(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ù)平均值:數(shù)據(jù)總和除以總個數(shù)N。
(9.17+9.24+9.11+8.85+8.87)/5=9.048。
可以用公式MA(C,5),從今天的值上看出。
2、偏差:每個數(shù)據(jù),減去算術(shù)平均值的結(jié)果。
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,
各偏差相加,應(yīng)該是等于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ù),除了第一個,其它五個,只要求出方差,就可以找到相應(yīng)關(guān)系,全部求出來。而方差,可以用公式MA(POW(C,2),5)-POW(MA(C,5),2);求出,所以說,新東西只有一個:平均絕對偏差。
以上六個函數(shù)中的N,目前均不支持序列變量,但可以用參數(shù)來調(diào)整。
下面介紹線性回歸的概念,仍以前例為例。
如圖,坐標中的各點不存在明確的關(guān)系,它們不在同一直線上,也不在同一曲線上。但仔細觀察可以看到,它們還是存在著一定的相關(guān)關(guān)系,圖a中的點分布在一根直線附近,圖b中的點分布在一根曲線(拋物線)附近。
在圖a中,如果能夠畫出一根直線,使各點到直線的垂直距離總和達到最小,那么這根直線無疑是很有參考價值的,用股市中的行話說,就是這根直線代表了點以后的發(fā)展趨勢。這種分析方法,就是統(tǒng)計學中的回歸分析法。
圖a中的X軸,相當于K線圖中的時間軸,Y軸相當于價格軸,一個點相當于是由兩個變量決定位置。
兩個變量之間的回歸分析稱為簡單回歸或一元回歸,三個以上變量之間的回歸分析稱為復(fù)回歸或多元回歸。如果變量間相關(guān)關(guān)系表現(xiàn)為線性相關(guān)的回歸稱為線性回歸,表現(xiàn)為曲線相關(guān)的回歸稱為非線性回歸。所謂一元線性回歸,則是指兩個變量之間表現(xiàn)為線性相關(guān)關(guān)系的回歸。
一元線性回歸的方法,就是在眾多的點中,找到一根直線,而這根直線,最能代表眾多點的平均“趨勢”。
直線的表達方程是:y=a+bx。只要兩個參數(shù)a、b定下來,直線的位置就定了。
求參數(shù)a、b的方法一般有兩種,一種較為簡便,但精度不夠,稱為平均數(shù)法。還有一種精度較高,應(yīng)用也最多,叫最小二乘法??上攵w狐中的線性回歸預(yù)測值,是根據(jù)最小二乘法求出來的。這里就只介紹最小二乘法。
設(shè)在眾多點中穿過的回歸直線的方程是y'=a+bx。而每個點的垂直高度為y。那么對應(yīng)于每個點,都可得到類似于偏差的值y-y'。這些值的平方的總和達到最小,而求出參數(shù)a、b,就是最小二乘法的基本原理。
y-y'=y-a-bx。每個點,都有對應(yīng)的x、y值,那么將這些值,分別代入(y-a-bx),求平方,最后進行累計。最終的表達式Q中,就只有a和b兩個變量了。為使Q具有最小值,必須使其對a,b的偏導(dǎo)數(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周期線性回歸預(yù)測值
示例: FORCAST(CLOSE,10) 表示求10周期線性回歸預(yù)測
用最小二乘法,求出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線圖上是(價差/時間差)的關(guān)系,與角度沒有任何關(guān)系。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個序列間的相關(guān)系數(shù)。
示例: CORR(CLOSE,HIGH,10)表示求10周期VAR1與VAR2的相關(guān)系數(shù)
轉(zhuǎn)貼《教育統(tǒng)計學》中,對相關(guān)系數(shù)的描述:
相關(guān)系數(shù)
在教育研究中,常涉及到兩個事物(變量)的相互關(guān)系問題,例如,學習成績與非智力因素的關(guān)系,數(shù)學成績與物理成績的關(guān)系,男女生學習成績的關(guān)系,等等。其關(guān)系表現(xiàn)為以下三種變化;第一,正相關(guān):一個變量增加或減少時,另一個變量也相應(yīng)增加或減少;第二,負相關(guān):一個變量增加或減少時,另一個變量卻減少或增加;第三,無相關(guān):說明兩個變量是獨立的,即由一個變量值,無法預(yù)測另一個變量值。統(tǒng)計學中,就用“相關(guān)系數(shù)"來從數(shù)量上描述兩個變量之間的相關(guān)程度,用符號“r"來表示。
相關(guān)系數(shù)取值范圍限于:-1≤r≤+1
PHP代碼:--------------------------------------------------------------------------------
相關(guān)系數(shù)表示的意義
相關(guān)系數(shù)(r) 0.00 0.00-±0.3 ±0.30-±0.50
相關(guān)程度 無相關(guān)微正負相關(guān) 實正負相關(guān)
相關(guān)系數(shù)(r) ±0.50-±0.80 ±0.80-±1.00
相關(guān)程度 顯著正負相關(guān) 高度正負相關(guān)
--------------------------------------------------------------------------------
相關(guān)系數(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;
簡單的應(yīng)用方法:
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),求與模板相關(guān)系數(shù)。
D為常數(shù),表示0:開盤價,1:最高價,2:最低價,3:收盤價,4:成交量,5:成交額
N表示計算最后多少組,為0表示計算所有,用于當前選股時設(shè)為1可大大減小計算量
示例: CORRTPL('一馬平川',CLOSE,3,1)表示求收盤價線與一馬平川收盤價線的最后一組的相關(guān)系數(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對應(yīng)。
五、
函數(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ù)
對應(yīng)于PEAKBARS。
這樣在應(yīng)用時,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)結(jié)合使用。
SAR一般以圓圈的形式輸出,實際上也是輸出數(shù)值的,形式可以用描述函數(shù)進行改變。
說是拋物轉(zhuǎn)向,輸出的并不是標準的拋物線。
目前的轉(zhuǎn)向指標,典型的有三個,ZIG、SAR(因為做成基本函數(shù)了,所以有數(shù)值輸出),還有一個是結(jié)構(gòu)波浪,可以用基本函數(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時,應(yīng)不應(yīng)該有輸出?等等
飛狐的主要問題是在起算點就滿足跳轉(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ù)價格估算獲利盤。
之所以說估算,是因為要精確算,必須把每筆成交的價格和成交量都記錄下來,一般這是很難做到的。
就算能做到,籌碼分布方面的技術(shù)分析有效么?這就看各人自己的取舍了,股市中目前還沒有發(fā)現(xiàn)包賺不賠的技術(shù)指標。
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碼分布,要搞得復(fù)雜,可以計算中位值、眾位值,研究正態(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線的畫法。
假設(shè)在手工畫線年代,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有關(guān),與O、C無關(guān)。
一、起畫點
當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)往復(fù),直到跳轉(zhuǎn)條件成立就跳轉(zhuǎn),去畫看跌SAR了。而調(diào)整系數(shù)AF的值,經(jīng)過反復(fù)累積的話,最大是不能超過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)往復(fù),直到跳轉(zhuǎn)條件成立就跳轉(zhuǎn),去畫看漲SAR了。而調(diào)整系數(shù)AF的值,經(jīng)過反復(fù)累積的話,最大是不能超過0.2的。
SAR沒有未來之嫌,但是N、S、M的調(diào)整對SAR影響都很大,感覺靈敏性過大。
飛狐基本函數(shù)簡介之大盤函數(shù)和常數(shù)函數(shù)
大盤函數(shù),就是公式應(yīng)用于個股中時,可以引用相應(yīng)大盤的相應(yīng)數(shù)據(jù)。
常數(shù)函數(shù)用于取得一些常數(shù)數(shù)據(jù)。
一、
函數(shù): INDEXO
參數(shù): 無
返回: 數(shù)組
說明: 表示對應(yīng)大盤同期的開盤價。(該函數(shù)對分筆成交分析周期無效)
函數(shù): INDEXH
參數(shù): 無
返回: 數(shù)組
說明: 表示對應(yīng)大盤同期的最高價。(該函數(shù)對分筆成交分析周期無效)
函數(shù): INDEXL
參數(shù): 無
返回: 數(shù)組
說明: 表示對應(yīng)大盤同期的最低價。(該函數(shù)對分筆成交分析周期無效)
函數(shù): INDEXC
參數(shù): 無
返回: 數(shù)組
說明: 表示對應(yīng)大盤同期的收盤價。(該函數(shù)對分筆成交分析周期無效)
函數(shù): INDEXV
參數(shù): 無
返回: 數(shù)組
說明: 表示對應(yīng)大盤同期的成交量。(該函數(shù)對分筆成交分析周期無效)
函數(shù): INDEXA
參數(shù): 無
返回: 數(shù)組
說明: 表示對應(yīng)大盤同期的成交額。(該函數(shù)對分筆成交分析周期無效)
當主圖顯示的是滬個股時,取INDEXC就是上證指數(shù)的收盤價,其它類推。
當主圖顯示的是深個股時,取INDEXC等就是深成指的收盤價,其它類推。
這對引用大盤相應(yīng)數(shù)據(jù)是很方便的。
如果你想引用0號指數(shù)的相應(yīng)數(shù)據(jù),就要先建立0號指數(shù)(自定義指數(shù)),比如0號指數(shù)的代碼是“ 宋體'>BI01”,引用時就用
"BI01$CLOSE";
"BI01$VOL";
等。
二、
函數(shù): INDEXADV
參數(shù): 無
返回: 數(shù)組
說明: 表示對應(yīng)大盤同期的上漲家數(shù)。(該函數(shù)對分筆成交分析周期無效)
函數(shù): INDEXDEC
參數(shù): 無
返回: 數(shù)組
說明: 表示對應(yīng)大盤同期的下跌家數(shù)。(該函數(shù)對分筆成交分析周期無效)
當主圖顯示的是滬個股時,取INDEXADV就是滬A股中的上漲家數(shù)。
當主圖顯示的是深個股時,取INDEXADV就是深A(yù)股中的上漲家數(shù)。
INDEXDEC的用法一樣。
這與以前在行情函數(shù)中介紹的ADVANCE和DECLINE有點類似,不過ADVANCE、DECLINE只能用于大盤,在主圖為個股時不會有輸出。
三、
函數(shù): CAPITAL
參數(shù): 無
返回: 返回常數(shù)
說明: 返回流通盤大小,單位為手。對于A股得到流通A股,B股得到B股總股本,指數(shù)為0
前面已經(jīng)用過很多次了。
流通盤萬股:CAPITAL/100,LINETHICK0;
換手率:100*V/CAPITAL,LINETHICK0;
四、
函數(shù): VOLUNIT
參數(shù): 無
返回: 返回常數(shù)
說明: 返回每手股數(shù),對于股票值為100,債券為1000
這樣也可據(jù)此識別股票和債券了。
五、
函數(shù): FINANCE(N)
返回: 返回常數(shù)
說明: 取得參數(shù)對應(yīng)的基本財務(wù)數(shù)據(jù) N 含義單位N 含義單位
1 總股本 萬股 29 稅后利潤 千元
2 國家股 萬股 30 凈利潤 千元
3 發(fā)起人法人股 萬股 31 未分配利潤 千元
4 法人股 萬股 32 每股未分配 元
5 B股 萬股 33 每股收益 元
6 H股 萬股 34 每股凈資 元
7 流通A股 萬股 35 調(diào)整每股凈資 元
8 職工股 萬股 36 股東權(quán)益比率 %
9 A2轉(zhuǎn)配股 萬股 37 凈資收益率 %
10 總資產(chǎn) 千元 38 經(jīng)營現(xiàn)金流入 千元
11 流動資產(chǎn) 千元 39 經(jīng)營現(xiàn)金流出 千元
12 固定資產(chǎn) 千元 40 經(jīng)營現(xiàn)金流量 千元
13 無形資產(chǎn) 千元 41 投資現(xiàn)金流入 千元
14 長期投資 千元 42 投資現(xiàn)金流出 千元
15 流動負債 千元 43 投資現(xiàn)金流量 千元
16 長期負債 千元 44 籌資現(xiàn)金流入 千元
17 資本公積金 千元 45 籌資現(xiàn)金流出 千元
18 每股公積金 千元 46 籌資現(xiàn)金流量 千元
19 股東權(quán)益 千元 47 現(xiàn)金及等價物 千元
20 主營收入 千元 48 應(yīng)收帳款周轉(zhuǎn)率 %
21 主營利潤 千元 49 存貨周轉(zhuǎn)率 %
22 其他利潤 千元 50 總資產(chǎn)周轉(zhuǎn)率 %
23 營業(yè)利潤 千元 51 流動比率 %
24 投資收益 千元 52 速動比率 %
25 補貼收入 千元 53 主營業(yè)務(wù)增長率 %
26 營業(yè)外收支 千元 54 稅后利潤增長率 %
27 上年損益調(diào)整 千元 55 凈資產(chǎn)增長率 %
28 利潤總額 千元 56 總資產(chǎn)增長率 %
六、
函數(shù): DYNAINFO(N)
返回: 返回常數(shù)
說明: 取得參數(shù)對應(yīng)的動態(tài)行情數(shù)據(jù)
N 含義N 含義
3 前收 31 賣一量
4 今開 32 賣二量
5 最高 33 賣三量
6 最低 34 賣一價
7 最新 35 賣二價
8 總手 36 賣三價
9 現(xiàn)手 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 內(nèi)盤 50 賣五價
23 外盤 51 成交筆數(shù)
24 漲速 52 每筆均量
25 買一量
26 買二量
27 買三量
28 買一價
29 買二價
30 買三價
七、
函數(shù): SPLITDATA(N)
返回: 返回常數(shù)
說明: 除權(quán)數(shù)據(jù)函數(shù)
示例: SPLITDATA(N) 取得對應(yīng)除權(quán)數(shù)據(jù)
N參數(shù)表示取那種分紅數(shù)據(jù)
N=0 有除權(quán)時為1,否則為0
N=1 紅股,得到當時每十股送幾股
N=2 配股,得到當時每十股配幾股
N=3 配股價,得到當時配股價格
N=4 紅利,得到當時每十股派息幾元
這些常數(shù)函數(shù),完全沒有必要記憶,在公式編輯器中,點一下插入函數(shù),馬上可以查到相關(guān)的說明。
飛狐基本函數(shù)簡介之擴展數(shù)據(jù)函數(shù)
一、橫向統(tǒng)計函數(shù)
函數(shù): ESTDATA(N)
參數(shù): 1-13
用法: ESTDATA(N)
在[橫向統(tǒng)計管理]中定義并計算數(shù)據(jù)。
(本函數(shù)僅在日線分析周期有效)。
說明:取得橫向統(tǒng)計日線數(shù)據(jù)(1-N)。
用法舉例:
例:設(shè)計一個公式,統(tǒng)計當日A股板塊漲停板的股票數(shù)。
建立方法如下:
①設(shè)計一個公式,判斷個股是否漲停,代碼如下,設(shè)公式名稱是“漲停判斷”:
bl:=if(STKINBLOCK('ST板塊'),1.05,1.1);{如果為ST漲停為5%,否則為10%}
ztb:(c>=intpart(ref(c,1)*bl*100+0.5)/100);{如果漲停返回1,否則返回0}
{注:對新股的漲停未做判斷,另外個股因歷史的原因,是否被ST或PT處理無法判斷,因此對歷史數(shù)據(jù)的判斷并不準確}
②建立橫向統(tǒng)計數(shù)據(jù)項:鼠標點菜單“管理/橫向統(tǒng)計管理”,在“橫向統(tǒng)計管理”對話框中,點“新增”,找到剛才設(shè)計的公式“漲停判斷”,如下圖所示進行設(shè)置。
圖中,不選除權(quán)處理更加合理。應(yīng)去掉該項選擇。
至此,我們就設(shè)計了一個橫向統(tǒng)計數(shù)據(jù)項“漲停板”,在圖中序號是3,則引用時是estdata(3)。
二、擴展數(shù)據(jù)庫
函數(shù): EXTDATA(N)
參數(shù): 1-13
用法: EXTDATA(N),N取1--13
在[擴展數(shù)據(jù)管理]中定義并計算數(shù)據(jù)。
(本函數(shù)僅在日線分析周期有效)
說明:取得日線擴展數(shù)據(jù)(1-13)
飛狐擴展數(shù)據(jù)簡介及示例
飛狐擴展數(shù)據(jù)庫:
一、 擴展數(shù)據(jù)庫的功效:
1、 在公式設(shè)計時,由于系統(tǒng)的限制,無法在公式中直接實現(xiàn)橫向排名的功能,例如,在公式中無法知道某股票的漲幅的排名,這時可將漲幅數(shù)據(jù)放入擴展數(shù)據(jù)庫中,讓飛狐自動對漲幅數(shù)據(jù)進行排序,從而獲得股票的漲幅排名數(shù)據(jù)。
2、 由于考慮到磁盤空間及系統(tǒng)的效率,飛狐收盤時,保存的數(shù)據(jù)并未包含實時接收的全部數(shù)據(jù),出于研究股票的需要,您可能需要其中的某些數(shù)據(jù),這時可以把這些數(shù)據(jù)存入擴展數(shù)據(jù)庫,以供調(diào)用。
3、 由于系統(tǒng)及磁盤空間的限制,一般保存的短周期的數(shù)據(jù)有時段的限制,例如設(shè)置了只保存10天的分筆數(shù)據(jù),超過10天的分筆數(shù)據(jù)將被自動刪除,此時若想對分筆數(shù)據(jù)進行統(tǒng)計研究,將無法進行,這時可將分筆統(tǒng)計數(shù)據(jù)存入擴展數(shù)據(jù)庫。
4、 由于系統(tǒng)的限制,公式中無法從長周期引用短周期的指標數(shù)據(jù),這時可將短周期的指標數(shù)據(jù)存入擴展數(shù)據(jù)庫。
二、擴展數(shù)據(jù)庫的調(diào)用:
飛狐的擴展數(shù)據(jù)庫,最多可以保存13組數(shù)據(jù),保存在擴展數(shù)據(jù)庫中的數(shù)據(jù),使用函數(shù)EXTDATA(n)來調(diào)用,其中n表示第n組數(shù)據(jù)。
三、 使用擴展數(shù)據(jù)庫示例:
例:如何知道股票在A股板塊中的漲幅排名:
1、設(shè)計一個公式,設(shè)公式名稱為“漲幅”,公式代碼如下:
zf::(c/ref(c,1)-1)*100;
2、鼠標點菜單“管理/管理擴展數(shù)據(jù)”,彈出如圖1所示擴展數(shù)據(jù)管理框,
由于是新增的一組數(shù)據(jù),雙擊其中某組尚未設(shè)置的數(shù)據(jù)名稱,如圖2所示,步驟如下:
① 選擇我們剛才設(shè)計的“漲幅”公式
② 修改數(shù)據(jù)名稱為“漲幅排名”
③ 選擇“生成排名數(shù)據(jù)(從大到小排)”
④ 去掉“使用除權(quán)后的數(shù)據(jù)”選項(避免漲幅失真)
⑤ “排序方法”選“0-n自然排序”
⑥ “設(shè)置范圍”選A股板塊。
⑦ 圖中,“漲幅排名”的擴展數(shù)據(jù),是第2組數(shù)據(jù),因此調(diào)用的函數(shù)為EXTDATA(2)
3、設(shè)計一個調(diào)用漲幅排名數(shù)據(jù)的公式,調(diào)公式名稱為“調(diào)用漲幅排名”,參考代碼如下:
zfpm:extdata(2);
在K線圖中,調(diào)用“調(diào)用漲幅排名”公式,即可獲知該股票的當日在A股板塊中排列第幾名。
說明:在第1步設(shè)計的公式中,由于本例中僅需要計算排序的結(jié)果,因此公式可以簡化(優(yōu)化),以便減少運算量。
zf::c/ref(c,1);
飛狐基本函數(shù)簡介之其他函數(shù)
一、
函數(shù): FFT(X,N)
參數(shù): N為常數(shù),X為數(shù)組.
返回: 返回數(shù)組
說明: 傅立葉變換,對序列X進行傅立葉變換或變換處理后反變換
示例: 當N=0時對序列X進行傅立葉變換
當N=1時對序列X進行傅立葉變換并反變換回來,與原X一致
當N>1時對序列X進行傅立葉變換并略去周期小于N的成分再反變換回來
FFT(CLOSE,30)
傅立葉變換是最常用的積分變換。原理和對數(shù)變換等差不多,無非是變換復(fù)雜為簡單,廣泛應(yīng)用于工程技術(shù)領(lǐng)域??筛盗⑷~變換的算法,涉及高等數(shù)學的微積分知識,非三言兩語說得清楚,也超過了本人的能力范圍,這里只能從略了。
傅立葉變換的應(yīng)用方面,見過的有二:
1、比如把FFT(CLOSE,30),在主圖中上移下移之后,可以構(gòu)成非常光滑的通道。
2、用在周期分析上。語見<期貨市場技術(shù)分析>P407。
aa:=FFT(c,30);
aa*1.05;
aa*0.95
二、
函數(shù): CHECKUSER(n)
參數(shù): N為常數(shù)1或0
返回: 返回數(shù)組
說明: 限制公式使用。
示例: check:=CHECKUSER(0)
注冊用戶返回1,否則返回0
check:=CHECKUSER(1)
對非注冊用戶不可用該公式
三、
函數(shù): COLORRGB(R,G,B)
參數(shù): N為常數(shù),X為數(shù)組.
返回: 返回RGB顏色值(常數(shù))
示例: DRAWGBK(C>O, COLORRGB(255,0,0), COLORRGB(255,255,0),0);
表示圖形上最后一組C>O時從左到右從紅色到黃色漸變填充子圖。效果如下圖:
四、
函數(shù): LINEVALUE(COND1,PRICE1,COND2,PRICE2,EXPAND,LOG)
參數(shù):COND為數(shù)組,PRICE為數(shù)組或常數(shù),LOG為1表示按對數(shù)計算,EXPAND為1表示向左延長.
返回: 返回數(shù)組
說明: LINEVALUE(COND1,PRICE1,COND2,PRICE2,EXPAND,LOG)
計算(COND1,PRICE1)和(COND2,PRICE2)2點決定的直線的數(shù)值
COND為數(shù)組,PRICE為數(shù)組或常數(shù),LOG為1表示按對數(shù)計算,EXPAND為1表示向左延長.可用于趨勢線預(yù)警、選股等
計算方式:先得到COND2條件滿足的后點,再向左求COND1條件滿足的前點,僅根據(jù)此2點計算
示例: LINEVALUE(DATE=1020129,LOW,DATE=1020606,LOW,0,1);{表示計算連接2002年1月29日低點和2002年6月6日低點的以對數(shù)方式計算的趨勢線}
五、
函數(shù): USERNAME
參數(shù): N為常數(shù),X為數(shù)組.
返回: 返回數(shù)組
說明: 取用戶注冊名。
示例: check:=STRCMP(USERNAME, 'userid')
為0表示用戶注冊名為userid,可用于公式只給指定用戶使用。
六、
函數(shù): USERNAME
參數(shù): 無
返回: 返回值范圍為0-11
說明: 當前證券類型。
示例: STKTYPE
返回值范圍為0-11,
分別表示指數(shù)、A股、B股、基金、債券、其它、外匯、期貨、其它股票、商品現(xiàn)貨、期權(quán)、權(quán)證
七、
函數(shù): DATAPERIOD
參數(shù): 無
返回: 返回值范圍為0-11
說明: 當前數(shù)據(jù)周期類型。
示例:DATAPERIOD
返回值范圍為0-11,分別表示
分筆成交、1分鐘、5分鐘、15分鐘、30分鐘、60分鐘、日、周、月、年、多日、多分鐘
愛華網(wǎng)



