久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    《飛狐公式編寫基礎》和《通達信公式教程》--3-- 指標公...

     木衲 2010-03-29

    飛狐基本函數簡介之行情函數

    這些行情函數所取得的數據,是我們所編寫的公式的原材料。

    如果說公式是衣服,這些行情函數就是布。

    有人會說做衣服不一定要布,野草樹皮也可以做。對,一個公式中不一定非有行情函數不可,但總感覺透風,缺點什么。

    一、

    函數: OPEN

    說明: 取得該周期開盤價,也可簡寫為 O.

    函數: HIGH

    說明: 取得該周期最高價,也可簡寫為 H.

    函數: LOW

    說明: 取得該周期最低價,也可簡寫為 L.

    函數: CLOSE

    說明: 取得該周期收盤價,也可簡寫為 C.

    OPEN,打開。HIGH,高度。LOW,低的。CLOSE,關閉、結束。

    常言道,巧婦難為無米之炊。此四者,就是我們做價格指標的“米”了。不同周期的K線,均由此四者為原材料畫出。

    (有人說,家里的米沒有味道,于是去割野菜,采野花,日子一長,又說還是家里的米能填飽肚子。)

    有人說,價、量、時、人是技術分析的四大要素,那么O、H、L、C便構成了“價”的四大要素。

    道氏理論,主要關注的是長期趨勢,所以,一般以CLOSE線為主要參考指標。所取前期高、低點,也是CLOSE線的高、低點。

    人的心理,常以成敗論英雄。所以CLOSE作為一根K線中的“結局”,被視為價格四大要素中的最關鍵因素。此論似成通論,但有些短線炒手認為,OPEN要比CLOSE更重要。股市本是無定論的地方,仁者見仁,智者見智,故不敢多作妄論。

    這里隨便談些本人對未來函數和未來數據的看法。關于未來也者,在較為經典的書上很少直接見到這種說法,只是在網上見得多了,便有了些想法,說出與大家共同探討。

    如圖,一般帶公式平臺的股票軟件,有“公式檢測”這一項,用來判斷公式中是否含有未來函數。

    目前的信號的產生和保持,如果全依賴于之前的數據,則可認為產生信號的公式中,不含有未來函數和未來數據。

    目前的信號的產生和保持,如果部分依賴于之后的數據,則可認為產生信號的公式中,含有未來函數和未來數據。

    換句話說,如果公式中產生的信號,隨著行情的發展,信號永遠不變,則此公式就絕無“未來”之嫌疑;信號可能要逃、要變,則此公式中就有“未來”。

    如果此定義成立,則可將“未來”分為兩種情況:

    1、在一根K線(即時行情)中;

    2、在多根K線(盤后)中。

    在第一種情況中,以即時行情中的當前日K線為例,除了O之外,其它H、L、C全有未來之嫌。因為在收盤之前,拉高、打壓是司空見慣的事,誰也不能保證H、L不會創出當天的新高和新低,更不用說C了。比如日線周期公式“C>REF(C,1);”,前一分鐘信號成立,后一分鐘可能信號就不成立了。這樣說的話,在日K中包括H、L、C的指標,就全有“未來”之嫌疑了。

    還有就是引用進來的信號,比如引用了周K和月K指標,因為當前周K和月K還在變動之中,所以也是未來數據。

    在第二種情況中,因為在盤后,日K中的四大要素就沒有未來之可能了。在多K線中,典型的未來函數有兩個:BACKSET、ZIG。這兩個未來函數到底未來到什么程度,到以后介紹時再說。就算在盤后,除了周五之外,引用的周K指標也是未來數據;除了在月末,引用的月K指標也是未來數據。



    這樣說的話,到處是“未來”,我們何處適從?

    實際上未來也者,并不是新問題,而是老問題,從有技術分析之日起,這個問題就存在了,只是在經典著作中,并不是以“未來”的字眼出現。

    “我們所采取的交易風格越保守,那么,耐心地等待趨勢反轉的驗證信號就越為重要。到底需要等待多久呢?這就得從風險與報償兩個方面來權衡。如果我們選擇較為保守的交易風格,寧愿等待趨勢反轉的驗證信號,那么,確實可能承擔較少的風險;但是另一方面,我們從交易中取得的報償也可能減少了。等到趨勢反轉信號得到確認的時候,獲利的空間也許已經縮小了。”

    (<日本蠟燭圖技術>P.159)

    所以說即時行情中的“未來”也一樣,體現的是技術分析中最古老的一個問題。

    而多K線中的未來數據,是要好好注意的。如果在ZIG的低點買進,在ZIG的高點賣出,則是全世界最好的交易系統了--可惜是馬后炮,因為當時誰也做不到這一點。但也不能說BACKSET、ZIG就一無是處了,有時甚至是不可或缺的。刀劍可能自傷,也可用于殺敵。只要我們熟悉了BACKSET和ZIG的本質,就可以了解它們“未來”到什么程度,拿來用也是不妨的。至于不熟悉的,還是少用為妙。

    二、

    函數: VOL

    參數: 無

    說明: 取得該周期成交量,也可簡寫為 V.

    函數: AMOUNT

    參數: 無

    說明: 取得該周期成交額

    VOLUME,量。AMOUNT,數量、總計。

    成交量系統默認單位是手(一百股)。成交額系統默認單位是元(A股和基金是人民幣、滬B股是美元、深B股是港元)。

    成交量是僅次于價格的技術分析要素。成交額因為里面有價量因素,有些高手應用時喜歡用之代替成交量。

    成交金額萬元:AMOUNT/10000,LINETHICK0;

    成交量手:VOL,VOLSTICK;

    流通盤萬股:CAPITAL/100,LINETHICK0;

    換手率:100*V/CAPITAL,LINETHICK0;



    三、

    函數: ADVANCE

    參數: 無

    說明: 取得該周期上漲家數。(本函數僅對大盤有效)。

    參數: DECLINE

    參數: 無

    說明: 取得該周期下跌家數。(本函數僅對大盤有效)。

    ADVANCE,前進。DECLINE,下降。

    用于上證指數和深圳成指。

    A:=ADVANCE-DECLINE;

    SUM(A,50);

    這個線形狀與指數C線有些不同,反映的是不加權的情況。



    四、

    函數: BUYVOL

    參數: 無

    說明: 取得主動性買單量。 當本筆成交為主動性買盤時,其數值等于成交量,否則為0. (本函數僅個股在分筆成交分析周期有效)  

    函數: SELLVOL

    參數: 無

    說明: 取得主動性賣單量。當本筆成交為主動性賣盤時,其數值等于成交量,否則為0. (本函數僅個股在分筆成交分析周期有效)  

    BUY,買。SELL,賣。VOL,VOLUME,量。

    在分筆成交分析周期中看:

    主動性買單量:BUYVOL;

    主動性賣單量:SELLVOL;

    之和:BUYVOL+SELLVOL;

    總成交量:V;

    兩者之和必然為總成交量。所以說每筆之成交量,不是主動性買單量,就是主動性之賣單量。

    主動性買單量代表多方的力量,主動將掛在賣盤檔位的單子吃進,主動性賣單量則反之,代表的是空方的力量。

    至于莊家對倒誘空誘多之動作,長期看另當別論,但在當時,確實也代表了多空之一方。

    每日之SUM(BUYVOL,0)之類的數據,不能在其它周期中引用,要做成擴展數據才可。



    五、

    函數: ISBUYORDER

    參數: 無

    說明: 取得該成交是否為主動性買單。當本筆成交為主動性買盤時,返回1,否則為0. (本函數僅個股在分筆成交分析周期有效)  

    ORDER,定單。BUYORDER,買單(不是請客吃飯后的買單!)。

    在分筆成交分析周期中可以看到,任一筆成交的單子,不是主動買單,就是主動賣單。

    主動買單:ISBUYORDER;

    主動賣單:NOT(ISBUYORDER)*0.5;

    這也就是沒有ISSELLORDER函數的原因,因為用NOT(ISBUYORDER)就可以取得相同功能。



    六、

    函數: BIDPRICE(N)

    參數: N取1--3,表示買盤檔位。

    說明: 取得委買1--委買3價格。(本函數僅個股在分筆成交分析周期有效)

    示例: BIDPRICE(1)

        表示最高叫買價。

    函數: BIDVOL(N)

    參數: N取1--3,表示買盤檔位。

    說明: 取得委買1--委買3量。(本函數僅個股在分筆成交分析周期有效)

    示例: BIDVOL(1)

        表示最高叫買量。

    BID,出價、投標,這里是買進報價的意思。PRICE,價格。

    有人可能會說:圖中不是有委買8的單子么?呵呵,那是推算出來的,撤單了亦未可知。



    七、

    函數: ASKPRICE(N)

    參數: N取1--3,表示賣盤檔位。

    說明: 取得委賣1--委賣3價格。(本函數僅個股在分筆成交分析周期有效)

    示例: ASKPRICE(1)

          表示最低叫賣價。

    函數: ASKVOL(N)

    參數: N取1--3,表示賣盤檔位。

    說明: 取得委買1--委買3量。(本函數僅個股在分筆成交分析周期有效)

    示例: ASKVOL(1)+ASKVOL(2)+ASKVOL(3)

          表示三檔賣盤量總和。  

    ASK,詢問、要求,這里是賣出報價的意思。

    副圖公式一:

    委買總量:BIDVOL(1)+BIDVOL(2)+BIDVOL(3);

    委賣總量:ASKVOL(1)+ASKVOL(2)+ASKVOL(3);

    副圖公式二:

    賣一買一空檔:ASKPRICE(1)-BIDPRICE(1);



    編僅個股在分筆成交分析周期有效的公式時要注意,編好了之后,公式的“禁用周期”就自動設置為如圖的樣子。

    如果以后要把這個公式修改為其它周期的公式時,不可忘記把“禁用周期”中的設置改過來,否則公式指標輸出會沒有顯示。
     

    飛狐基本函數簡介之繪圖函數

    這組函數的功能是在主圖或副圖上設定條件輸出圖象、圖標、直線、文字、數字、指標線、指標柱等,全部可以單獨使用。

    個人感覺,飛狐的強大功能,在此組函數中有淋漓盡致的發揮。無論在表面(美感),還是實質(提高工作效率)上,都有良好表現。

    毫無例外的是,這組函數中,都帶有COND。CONDITION,條件,狀態。COND在這里可作為條件理解。

    為了能找到合適的COND,用于舉例子,請允許我先介紹一組概念。

    高點:在2N+1根K線中,中間這根K線的H,要大于等于左右N根K線的H。在N+1根K線中,有等高點出現,取最先出現的。

    低點:在2N+1根K線中,中間這根K線的L,要小于等于左右N根K線的L。在N+1根K線中,有等低點出現,取最先出現的。

    峰點:高點和低點,合稱為峰點。

    (這個定義,意合于技術分析的老祖宗道氏:“只要平均指數的最高點超過了前期的最高點,它就處于牛市時期;當最低點低于前期的最低點時,它處于熊市時期。”這里我們撇開向上、向下分形和分形峰狀點等概念,以免把概念復雜化。)

    也為了不讓公式一來就過于復雜,我們先取N為2來做公式。簡介到后面,可以看到,N是可以作為峰點公式的參數進行調整的。

    公式名稱:FENG2

    公式說明:供引用

    公式內容:

    {峰點參數暫定為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個周期的數值設為1}

    HD:FILTER(D,2);{找到高點后,過濾掉其后2周期內可能出現的等高點。輸出高點}

    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個周期的數值設為1}

    LD:FILTER(D2,2);{找到低點后,過濾掉其后2周期內可能出現的等低點。輸出低點}

    {后面有些例子,就從這個公式中引用信號。}

    一、

    函數: DRAWICON

    參數: 無

    用法: 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條件,一般是指判斷的結果,不是0就是1。如用其它數據,大于等于1的,條件滿足;小于1,條件就不滿足。

    2、TYPE圖標,現在已經有12種,用下面的公式,在000829上可以全部顯示出來。當TYPE取大于等于12的數時,都顯示黃球。

    當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);{主圖疊加}

    當紅球和綠球連續顯示時,立體感會強一些。

    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等。現在可用ALIGN(0-5)指定對齊位置。

    用這個公式來試(主圖疊加)

    B:="FENG2.HD";

    D:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1);

    A:=D>REF(D,1);

    E:=REF(H,1);

    DRAWICON(A,E,10),ALIGN0;

    DRAWICON(A,E,11),ALIGN1;

    DRAWICON(A,E,12),ALIGN2;

    DRAWICON(A,E,3),ALIGN3;

    DRAWICON(A,E,4),ALIGN4;

    DRAWICON(A,E,5),ALIGN5;

    可以初步得出結論:

    ALIGN0:信號出現在PRICE的正中;

    ALIGN1:信號出現在PRICE下邊(十分靠近);

    ALIGN2:信號出現在PRICE上邊(十分靠近);

    ALIGN3:信號出現在主圖的中間;

    ALIGN4:信號出現在主圖的最上邊;

    ALIGN5:信號出現在主圖的最下邊;

    在高低點上作圖標,可以使高低點更明確了。

    A:="FENG2.LD";

    B:="FENG2.HD";

    DRAWICON(A,L,11),ALIGN1;

    DRAWICON(B,H,10),ALIGN2;{主圖疊加}



    4、可以自由調用MyBMP.BMP圖到顯示位置,大大增強了輸出的效果。你只要看到好看的圖,可以隨時抓拍過來,做成BMP文件,放到FmlDLL子目錄下,就可以調用了。

    A:="FENG2.LD";

    B:="FENG2.HD";

    DRAWICON(A,L,'PIG'),ALIGN1;

    DRAWICON(B,H,'PIG'),ALIGN2;{主圖疊加。如果你沒有PIG.BMP文件,則不可顯示。}



    DRAWICON(1,MA(C,5),'S28');

    DRAWICON(1,MA(C,10),'S31');

    DRAWICON(1,MA(C,20),'S14');

    DRAWICON(1,MA(C,30),'S25');{主圖疊加。如果你想要這個公式有顯示,可到樓下下載,解壓縮到FmlDLL子目錄下}



    內有40個不同顏色的小球。

    二、

    函數: DRAWLINE

    參數: 無

    用法: DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND),當COND1條件滿足時,在PRICE1位置畫直線起點,當COND2條件滿足時,在PRICE2位置畫直線終點,EXPAND為延長類型。  

    說明: 在圖形上繪制直線段。

    示例: DRAWILINE(HIGH>=HHV(HIGH,20),HIGH,LOW<=LLV(LOW,20),LOW,1);表示在創20天新高與創20天新低之間畫直線并且向右延長。

    DRAWLINE是唯一一個一句里面用到兩個COND的繪圖函數。因為它需要兩個點來決定一直線。

    COND1相當于指定K線位置(橫坐標),PRICE1相當于是指定價位(縱坐標),這樣一個點在平面上的位置就決定了。

    DRAWLINE是從第一點畫到第二點的,即有起點與終點的順序關系:第一點出現的時間,要在第二點之前。否則線是畫不出來的。

    EXPAND,擴張、發展,這里是延伸的意思吧。一般取0,不延長;取1,延長。實際上是取大于等于1的數就延長,小于1就不延長。

    DRAWLINE目前支持POINTDOT、LINETHICK、COLOR、SHIFT這四個描述函數。

    舉個例子吧。

    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;{主圖疊加}



    這根線有些趨勢線的意思了。由于趨勢線的主觀性頗強,只有多設參數才能滿足多數人的要求,以后有機會再作介紹。

    DRAWLINE畫出的線,應該比手工畫出的線精確一些。(DRAWLINE畫線的靈敏度,要比手工畫線低,所以說DRAWLINE畫出的線精確,就未必對。)

    主要用于畫斜線,水平線我們一般可以另想辦法。因為在圖中顯示直線,并非DRAWLINE的“專利”。

    比如:

    A:="FENG2.LD";

    B:="FENG2.HD";

    D:=BACKSET(ISLASTPERIOD,BARSLAST(A)+1);

    E:=D>REF(D,1);

    F:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1);

    G:=F>REF(F,1);

    前高:REF(H,BARSLAST(G));

    前低:REF(L,BARSLAST(E));{主圖疊加}



    這里出個“難題”吧:

    怎么在主圖上畫一根直線?直線的高度是今天收盤價。就是這個樣子的:



    三、

    函數: DRAWTEXT

    參數: 無

    用法: DRAWTEXT(COND,PRICE,TEXT),當COND條件滿足時,在PRICE位置書寫文字TEXT,可顯示多行文本,用"\n"換行。

    說明: 在圖形上顯示文字。

    示例: DRAWTEXT(CLOSE/OPEN>1.08,LOW,'大陽線');表示當日漲幅大于8%時在最低價位置顯示'大陽線'字樣。

    DRAWTEXT(CLOSE/OPEN>1.08,LOW,'好呀\n大漲啦');可顯示多行文本,用"\n"換行;

    在某些滿足條件的地方直接顯示文字或字符,比顯示圖標要更直觀一些。

    此函數可以用ALIGN來定位水平位置。而ALIGN用在DRAWICON上定位的是高低的位置。

    從下面例子可以看到,ALIGN(0~2)定義水平位置的意義:

    ALIGN0:居中;

    ALIGN1:偏右;

    ALIGN2:偏左。

    也可以用SHIFT函數進行向右水平移位。

    所顯示的文字或字符,可以用COLOR函數來定義顏色。至于文字的大小,則采用系統默認的大小,在此函數中無法定義。

    此函數單獨使用有其用途,與DRAWNUMBER配合應用時,效果更不錯。后面介紹到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);{倒數第二個高點}

    D3:=BACKSET(E2,REF(BARSLAST(B),1)+2);

    E3:=D3>REF(D3,1);{倒數第三個高點}

    DRAWTEXT(E1,H*1.01,'☆TEXT:'),COLORRED,ALIGN0;

    DRAWTEXT(E2,H*1.01,'★TEXT:'),COLORGREEN,ALIGN1;

    DRAWTEXT(E3,H*1.01,'▓TEXT:'),COLORYELLOW,ALIGN2;{主圖疊加}



    四、

    函數: POLYLINE

    參數: 無

    用法: POLYLINE(COND,PRICE),當COND條件滿足時,以PRICE位置為頂點畫折線連接。

    說明: 在圖形上繪制折線段。

    示例: POLYLINE(HIGH>=HHV(HIGH,20),HIGH);表示在創20天新高點之間畫折線。

    POLY,多個的。

    支持POINTDOT、LINETHICK、COLOR、SHIFT這四個描述函數。

    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;{主圖疊加}



    五、

    函數: STICKLINE

    參數: 無

    用法: 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沒有順序關系,即何者在前何者在后都不影響語句的執行。

    2、WIDTH寬度,支持小數。用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等份,每個小格中放入不同的但比較連續的顏色。

    這里隨便舉個例子,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;{主圖疊加}



    六、

    函數: DRAWNUMBER(COND,PRICE,NUMBER,PRECISION)

    參數: NUMBER(可以為常數或數組序列),PRECISION為精度(取值范圍0-3),即顯示到小數點后PRECISION位。

    用法: DRAWNUMBER(COND,PRICE,NUMBER,PRECISION),當COND條件滿足時,在PRICE位置書寫數字

    說明: 在圖形上顯示數字。

    示例: DRAWNUMBER(CLOSE/OPEN>1.08,HIGH,(CLOSE-OPEN)/OPEN*100,2);表示當日漲幅大于8%時在最低價位置顯示漲幅(相對開盤價的百分比)。

    這個函數的特色是,在NUMBER位置可以放變量。

    NUMBER,數字。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);{倒數第二個高點}

    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;{主圖疊加}



    七、

    函數: FILLRGN(COND,PRICE1,PRICE2)

    參數:   

    用法: FILLRGN(COND,PRICE1,PRICE2),當COND條件滿足時,以COLOR填充PRICE1和PRICE2的區間

    說明: 繪制指標區間彩帶。

    示例: FILLRGN(MA1>MA2, MA1,MA2),colorred; 表示MA1>MA2時以紅色填充MA1和MA2之間的區域。

    FILL,充滿,填充。RGN可能是REGION,地區,地域。

    用這個函數,再加DRAWICON可以調用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

    八、

    函數: PARTLINE(COND,PRICE)

    參數:   

    用法: PARTLINE(COND,PRICE),滿足COND條件繪制PRICE連線。

    說明: 分段繪制指標線

    示例: PARTLINE(C>REF(C,1),C),colorred;表示收盤大于前收以紅色繪制收盤價連線。

    PART,部分,局部。值得一提的是,PARTLINE支持多種描述函數,如例所見。

    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;{主圖疊加}



    九、

    函數: VERTLINE(COND)

    參數:   

    用法: VERTLINE(COND),在COND條件滿足的周期處畫垂直線

    說明: 在圖形上繪制垂直線段

    示例: DVERTLINE(HIGH>=HHV(HIGH,20);表示在創20天新高時畫垂直線

    VERTICAL,垂直的。

    VERTLINE目前可以用POINTDOT、LINETHICK、COLOR、SHIFT這四個描述函數來描述。

    這個函數,主要是用于畫線看時間的。費波納契周期,可以用這個函數畫出來的。

    這里舉個例子,把日K線中每月的第一個交易日中,畫一根垂直線。

    A:=MONTH>REF(MONTH,1);

    VERTLINE(A),COLOR808040,POINTDOT;{主圖疊加}



    十、

    函數: DRAWYITEXT(COND,PRICE,CODE,TYPE)

    參數:        

    用法: 在COND在圖形上顯示易學文字,可ALIGN0-3定義對齊方式。

    說明: 當COND條件滿足時,在PRICE位置書寫TYPE類型的CODE的對應文字
    TYPE為常數,取0--1,分別表示計算的是干支、64卦,CODE為對應的代碼



    示例: 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); {附圖指標}



    十一、

    函數: DRAWBKBMP(COND,BMP)

    參數:        

    用法: 當圖形上最后一組COND條件滿足時,以MyBMP做背景:        

    說明: 根據條件設置背景圖

    示例: 因為系統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;

    把公式設為主圖、主圖疊加



    十二、

    函數: DRAWGBK(COND,COLOR1, COLOR2,D)

    參數:   

    用法: 當COND條件滿足時,以COLOR1到COLOR2漸變色填充子圖區域,D=0表示從左到右,D=1表示從上到下

    說明: 繪制漸變背景色

    示例: DRAWGBK(C>O, COLORRGB(255,0,0), COLORRGB(255,255,0),0);
    表示圖形上最后一組C>O時從左到右從紅色到黃色漸變填充子圖。
     

    飛狐基本函數簡介之時間函數

    基本函數全是遍歷所有從前到后(從第一根到最后一根)K線的,取得每根K線上的時間,就用時間函數了。

    飛狐有獨有的自然日、陰陽歷、節氣、月相、易學相關分析,在時間函數中就有相應的體現。

    時間周期分析是技術分析的一大分枝吧,江恩等人樂此不疲。不過也有不少人不相信。

    一、

    函數: DAY

    參數: 無

    返回: 返回有效值范圍為(1-31).

    說明: 取得該周期的日期。

    函數: WEEKDAY

    參數: 無

    返回: 返回有效值范圍為(0-6),0表示星期天

    說明: 取得該周期的星期數。

    函數: MONTH

    參數: 無

    返回: 返回有效值范圍為(1-12)

    說明: 取得該周期的月份。

    函數: YEAR

    參數: 無

    返回: 返回有效值范圍為(1970-2038)

    說明: 取得該周期的年份。

    與DATE函數不同,這些函數所輸出的數值,與我們平時使用時是真實對應的,比如DAY返回3,當時就是3號。

    小周期K線中使用大周期的時間函數不成問題,反之則不行。比如在分筆成交圖中,也可以取得年、月等。

    年:YEAR,LINETHICK0;

    月:MONTH;

    周:WEEKDAY;

    日:DAY;



    二、

    函數: DATE

    參數: 無

    返回: 返回有效值范圍為(700101-1341231),表示19700101-20341231

    說明: 取得該周期從1900以來的的年月日。

    為什么當時設計這個函數時,不直接取得年月日?不得而知。

    后來還是給發現了一些蛛絲馬跡,

    年月日:DATE+19000000;

    年(200)月日:DATE-1000000;

    YMD:YEAR*10000+MONTH*1000+DAY;

    只有第二句的輸出始終是對的,其它兩句,輸出可能都會增1或減1。FH和FXJ一樣,都有這個問題。

    這就是DATE不直接取得年月日的原因。對于其它整數部分的位數達8位的數的運算,我們也可以知道,個位數的精確度是有問題的。



    ********************************************

    DATE 函數使用的注意事項

    用公式檢測:

    DATE+19000000;

    1.有些日期結果不對;

    2.DATE+19000000+1;不起作用,只有加2以上才起作用!

    是浮點計算造成的誤差,寫公式時盡量用DATE表述。

    只好“壓縮”使用了。

    比如大盤的成交額,不用元為單位,用萬元或億元為單位。

    數據的使用,無需追求過多的位數,要看相對誤差。

    目前可以正確處理的整數部分的位數達8位,相對誤差已經非常的小了。

    本來可以顯示小數的,大概是1a001提了建議后,這類數據的顯示,限制了小數部分的顯示了。

    只好這樣來處理了:

    mod(YEAR,100)*10000+MONTH*100+DAY

    年號只用2位數表示。

    ******************************************

    三、

    函數: HOUR

    參數: 無

    飛狐基本函數簡介之引用函數

    引用函數主要是向前引用數據。BACKSET可以理解為向后引用某些判斷信號,并不能引用具體數據。

    股市技術分析主要是根據已經發生的數據,來推測未來走向的可能,所以引用函數在公式中應用得最多,具體使用時,奧妙也最多。有些東西實在不能鋪開多講,否則篇幅會了無窮盡,只能急剎車。不當之處,請各位多多指正。

    一、

    函數: COUNT(X,N)

    參數: X為數組,N為計算周期

    返回: 返回數組

    說明: 統計N周期中滿足X條件的周期數,若N=0則從第一個有效值開始。

    示例: COUNT(CLOSE>OPEN,20)

    表示統計20周期內收陽的周期數



    函數: SUM(X,N)

    參數: X為數組,N為計算周期

    返回: 返回數組

    說明: 統計N周期中X的總和,N=0則從第一個有效值開始。

    示例: SUM(VOL,0)

    表示統計從上市第一天以來的成交量總和



    COUNT,計數。SUM,總數、和。

    當數組為邏輯運算判斷的結果時,COUNT和SUM的返回值是一樣的。一般習慣上,對于邏輯運算信號,用COUNT統計,返回其它數值的,用SUM統計。當COUNT統計一般數值時,數組大于等于1時,計入;小于1時,不計入。這兩個函數,主要用于統計。

    用COUNT(CROSS(MA(C,5),MA(C,10)),0);就可以統計出全部的五天均線上穿十天均線的金叉數。

    用SUM(CROSS(MA(C,5),MA(C,10)),0);和以上得出的結果應該是一樣的。

    股市的不隨機規律,隱藏在統計概率之中。用這兩個函數,可以統計很多概率性的規律。

    比如,以兩天的收盤價相比,昨天是下跌的,今天的下跌的概率是多少?

    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;

    從兩市指數看,昨天下跌,今天下跌的概率始終大于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;

    從指數的輸出看,概率更明顯了。



    連跌三天之后呢?

    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;

    規律就更明顯了。

    不要小看這些數據。雖然沒有有些“高手”做出的成功率達百分之九十左右的公式那么夸張,但很有意義的。要知道股市中的隨機因素太多,平衡性很強,稍稍的統計偏向,足可作為有用的參考。







    這只是簡單的例子,用這兩個函數,可以做出很多的有用的統計數據。

    多數的交易系統的“勝率”,可以由此統計出來。

    出個“難題”吧:

    有個MA5金叉MA10作為買入條件,死叉為賣出條件的交易系統,試做一個副圖公式,以每次買一股計算,統計出最后的交易結果(暫不考慮手續費)。買入賣出均以收盤價計算。



    二、

    函數: REF(X,N)

    參數: X為數組,N為計算周期

    返回: 返回數組

    說明: 引用N周期前的X值。

    示例: REF(CLOSE,1)

    表示上一周期的收盤價,在日線上就是昨收



    REF:REFERENCED,參考的、引用的。

    N可以為變量,常用BARSLAST(X)等。



    三、

    函數: MA(X,N)

    參數: X為數組,N為計算周期

    返回: 返回數組

    說明: 求X的N日移動平均值。

    算法: (X1+X2+X3+...+Xn)/N

    示例: MA(CLOSE,10),表示求10日均價



    MA:MOVING AVERAGE,移動平均。

    目前飛狐的MA(X,N)函數支持N為序列變量。

    這個簡單移動平均值,僅僅覆蓋最近的N個周期,并且在每個周期中分配的權重是一模一樣的,均為1/N。

    移動平均線實質上是一種追蹤趨勢的工具,而且滯后于市場的變化。這些結果的原因,就是它的計算方法了。

    從輸出看,N所取周期越長,曲線就越平滑。

    平滑和敏感是一對矛盾,請看:

    A:MA(C,5);

    B:MA(A,5);

    D:MA(B,5);{主圖疊加}

    輸出線越來越平滑,但敏感性越來越差。







    兩條簡單移動平均線的交叉,何時、何地所選的參數最優,可以參考飛狐中的“探索最佳參數”功能。



    線性加權移動平均值的算法函數,飛狐并未提供。

    以五天的線性加權移動平均的算法為例:

    五天線性加權:(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);{主圖疊加}

    由于算法的原因,線性加權移動平均線由于日子越近的權重越大,比簡單移動平均線,跟隨趨勢要緊密一些,敏感一些。

    從圖上看,兩者的交叉也是極為敏感的。







    四、

    函數: EMA(X,N)

    參數: X為數組,N為計算周期

    返回: 返回數組

    說明: 求X的N日指數平滑移動平均。

    算法: 若Y=EMA(X,N) 則Y=[2*X+(N-1)*Y']/(N+1), 其中Y'表示上一周期Y值。

    示例: EMA(CLOSE,30)

    表示求30日指數平滑均價



    EMA中的E,可能是EXPONENT,指數、冪。

    把算法寫成這個樣子:Y=2*X/(N+1)+(N-1)/(N+1)*Y',就可以看出,當前周期數組值所占的權重是2/(N+1),而上一周期Y值所占的權重是(N-1)/(N+1)。注意,這兩個權重相加,結果為1:2/(N+1)+(N-1)/(N+1)=1。

    由于一個很經典的指標指數平滑異同平均線MACD(1979年就發明出來了)里面,要用到EMA,才使EMA還在基本函數中占有一席之地。后面我們可以看到,用SMA也可以達到相同的算法。

    N可以取到1,不過輸出就沒有加權的效果了。



    五、

    函數: SMA(X,N,M)

    參數: X為數組,N為計算周期,M為權重

    返回: 返回數組

    說明: 求X的N日移動平均,M為權重。  

    算法: 若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=M/N*X+(N-M)/N*Y',就可以看出,當前周期數組值所占的權重是M/N,而上一周期Y值所占的權重是(N-M)/N。注意,這兩個權重相加,結果為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的參數中,N必須大于M,否則沒有輸出。



    SMA中,數組每天所占的權重,是較為復雜的。總的來說,日子越近,所占的權重越大,當天所占的權重是M/N,前一天所占的權重是M*(N-M)/(N*N);日子越遠,所占的權重就越小,上市第一天的K線數據中,在目前還有權重的體現,不過已經非常非常小了。

    SMA看似解決了MA的兩大缺點:1、只有N天內的數據占有權重;2、N天內數據所占權重比重一樣。有所得必有所失,SMA自己的缺點體現在光滑有余,敏感不足。



    有一項檢測系統得出的結論稱:“簡單移動平均值方法既勝過線性加權平均值法,也勝過指數加權平均值法。”(<期貨市場技術分析>P231),當然他們不是檢測中國股市。有興趣的朋友,可以用這些移動平均函數,做出交易系統,然后進行檢測。



    六、

    函數: DMA(X,A)

    參數: X為數組,A為計算周期

    返回: 返回數組

    說明: 求X的動態移動平均。  

    算法: 若Y=DMA(X,A) 則 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必須小于1。

    示例: DMA(CLOSE,VOL/CAPITAL)

    表示求以換手率作平滑因子的平均價



    呵呵,均線函數還有。

    DMA中的D,是中文的拼音:DONG。也可能是DYNAMIC。

    這個函數,與SMA是一家的,看:

    Y=M/N*X+(N-M)/N*Y';

    Y=A*X+(1-A)*Y';

    前者說,N必須大于M,后者說,A必須小于1。然后兩者就一樣了:A=M/N。

    說“A為計算周期”似乎不妥,A明明要取小數才行。DMA在第一根K線就開始起算,SMA要到第二根K線開始起算。



    七、

    函數: HHV(X,N)

    參數: X為數組,N為計算周期

    返回: 返回數組

    說明: 求N周期內X最高值,N=0則從第一個有效值開始。

    示例: HHV(HIGH,30)

    表示求30日最高價



    函數: HHVBARS(X,N)

    返回: X為數組,N為計算周期

    參數: 返回數組

    說明: 求N周期內X最高值到當前周期數,N=0表示從第一個有效值開始統計

    示例: HHVBARS(HIGH,0)

    求得歷史新高到到當前的周期數



    這兩個函數一起用,可以找到當前N天中的最高點。

    A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);

    B:=COUNT(A,N)=1;{取得前N個周期內的最高點位置}

    REF(H,BARSLAST(B));

    DRAWICON(B,H,1),ALIGN2;{主圖疊加。N:30,1,9999}





    八、

    函數: LLV(X,N)

    參數: X為數組,N為計算周期

    返回: 返回數組

    說明: 求N周期內X最低值,N=0則從第一個有效值開始。  

    示例: LLV(LOW,0)

    表示求歷史最低價



    函數: LLVBARS(X,N)

    參數: X為數組,N為計算周期

    返回: 返回數組

    說明: 求N周期內X最低值到當前周期數,N=0表示從第一個有效值開始統計

    示例: LLVBARS(HIGH,20)

    求得20日最低點到當前的周期數



    當前N天之內的最高點和最低點就一目了然了:

    A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);

    B:=COUNT(A,N)=1;{取得前N個周期內的最高點位置}

    REF(H,BARSLAST(B));

    DRAWICON(B,H,1),ALIGN2;

    A2:=BACKSET(ISLASTPERIOD,LLVBARS(L,N)+1);

    B2:=COUNT(A2,N)=1;{取得前N個周期內的最低點位置}

    REF(L,BARSLAST(B2));

    DRAWICON(B2,L,2),ALIGN1;{主圖疊加。N:30,1,9999}







    A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);

    B:=COUNT(A,N)=1;{取得前N個周期內的最高點位置}

    REF(H,BARSLAST(B));

    DRAWICON(B,H,1),ALIGN2;

    A2:=BACKSET(ISLASTPERIOD,LLVBARS(L,N)+1);

    B2:=COUNT(A2,N)=1;{取得前N個周期內的最低點位置}

    REF(L,BARSLAST(B2));

    DRAWICON(B2,L,2),ALIGN1;{主圖疊加。N:30,1,9999}



    這個公式求前期高低點,在600036等次新股上試調整參數就露馬腳了,并不完善。

    問題出在HHVBARS起算點等原因上。

    南客剛發表了一個公式,就順手牽羊牽過來吧。這個公式可以說是完美解決方案:

    HH:HHV(H,N),LINETHICK2;

    LL:LLV(L,N),LINETHICK2;{主圖疊加,參數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個周期之內,有兩個最高價,即有等高的情況出現,HHVBARS會返回哪個最高價到當前的周期數呢?

    用副圖公式觀察一下,N取10:

    HHVBARS(H,N);

    如圖,我們可以得出結論,返回的是前一個最高價到當前的周期數。

    同樣,當在N個周期之內,有兩個等低的最低價出現時,LLVBARS會返回前一個最低價到當前的周期數。







    九、

    函數: SUMBARS(X,A)

    參數: X為數組

    返回: 返回數組

    說明: 將X向前累加直到大于等于A,返回這個區間的周期數

    示例: SUMBARS(VOL,CAPITAL)

    求完全換手到現在的周期數



    這個函數好用,在于它不但能精確地得到統計結果,而且能得到“模糊”的結果。

    就以SUMBARS(VOL,CAPITAL)為例:

    日期數:SUMBARS(VOL,CAPITAL);{返回成交量累加到流通盤的日期數}

    驗證:SUM(V,日期數)/CAPITAL;{把返回的日期數之內的成交量累計,再除以流通盤}

    運行的結果中,我們可以看到,“驗證”的輸出,除了SUMBARS起算點附近之外,從來沒有小于1的。可見SUMBARS只往多算,不往少算,非常“精明”。





    十、

    函數: BARSCOUNT(X)

    參數: X為數組

    返回: 返回數組

    說明: 第一個有效數據到當前的天數

    示例: BARSCOUNT(CLOSE)

    對于日線數據取得上市以來總交易日數,對于分筆成交取得當日成交筆數,對于1分鐘線取得當日交易分鐘數



    BARS是什么?我們看到,關于取得相隔時間周期的函數中,多數以BARS開頭。

    查字典,BAR的意思有很多,有條、條形、酒巴、巴等。后來才恍然大悟:相隔時間周期,不就是中間相隔幾根條形K線么?

    BARSCOUNT(X)是第一個有效數據到當前的天數。那么什么是有效數據?

    A:BACKSET(ISLASTPERIOD,10);

    零:BARSCOUNT(A);

    很小:BARSCOUNT(C/10000000000000);

    負數:BARSCOUNT(-C);

    不存在:BARSCOUNT(MA(C,10));



    可見,有效數據并不是全是大于等于1的數據,只要有輸出的數據,不管是零,還是負數,均為有效數據。

    而MA(C,10)是從第十根K線開始起算的,所以一直要到第十根K線,BARSCOUNT(MA(C,10))才輸出1。

    這樣找一些指標的起算點時間位置,用BARSCOUNT函數就很管用了。

    一般找第一根K線的位置,就可以寫為BARSCOUNT(C)=1;







    十一、

    函數: BARSSINCE(X)

    參數: X為數組

    返回: 返回數組

    說明: 第一次X不為0到現在的天數

    示例: BARSSINCE(HIGH>20)

    表示股價第一次超過20元時到當前的周期數



    SINCE,自...以后。BARSSINCE和BARSCOUNT很象,不過它找的是非零信號。

    A:BACKSET(ISLASTPERIOD,10);

    零:BARSsince(A);

    很小:BARSsince(C/10000000000000);

    負數:BARSsince(-C);

    不存在:BARSsince(MA(C,10));

    可見,零和無效數據,均不被計數。一般BARSSINCE是針對邏輯運算的結果的,因為邏輯運算的結果輸出,不是0,就是1。





    十二、

    函數: BARSLAST(X)

    參數: X為數組

    返回: 返回數組

    說明: 上一次X不為0到現在的天數

    示例: BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)

    表示上一個漲停板到當前的周期數



    條件滿足的當前周期,BARSLAST返回0。

    是“不為0”到現在的天數么?運行這個公式試試:

    A:=C>O;

    A1:=0.5*A;

    A2:=3*A;

    A3:=-3*A;

    一:BARSLAST(A1);

    二:BARSLAST(A2);

    三:BARSLAST(A3);

    如圖,“一”根本就沒有輸出。初步可得出結論:其絕對值大于等于1的數組信號,BARSLAST(數組)才有輸出。







    十三、

    函數: BACKSET(X,N)

    參數: X為數組,N為正整數

    返回: 返回數組

    說明: 若X非0,則將當前位置到N周期前的數值設為1。

    示例: BACKSET(CLOSE>OPEN,2)

    若收陽則將該周期及前一周期數值設為1,否則為0



    如果公式檢測出來有未來數據,則BACKSET是第一個嫌疑。

    BACKSET是往前倒推信號(數據1)的,僅此而已。由于所有基本函數都是序列變量,所以要用基本函數,把當前的數據(比如最高價)往前推是做不到的。所以說,基本函數要往后引用具體數據是做不到的,往后引用信號是可能用BACKSET做到的。

    說BACKSET不可或缺,是因為用基本函數在找歷史峰點等公式中,如果沒有它將一籌莫展。

    這個“說明: 若X非0,則將當前位置到N周期前的數值設為1。”有點問題,如果數組X是邏輯運算的結果是對的,如果不是就難說了,比如:

    A:BACKSET(0.1*ISLASTPERIOD,10);

    B:BACKSET(100*ISLASTPERIOD,20);

    D:B>REF(B,1);

    “A”的輸出全為0,“B”的輸出就正常了。







    十四、

    函數: FILTER(X,N)

    參數: X為數組,N為正整數

    返回: 返回數組

    說明: 過濾連續出現的信號,X滿足條件后,刪除其后N周期內的數據置為0

    示例: FILTER(CLOSE>OPEN,5)

    查找陽線,5天內再次出現的陽線不被記錄在內



    如果說BACKSET能夠向后引用信號,那么FILTER就能向后過濾信號--即把有效信號去掉。比如N取3,就把以后3個周期內的有效信號去掉了,所以從連續信號上看,兩個信號之間的間隔不可能小于3的。用這個公式觀察一下就容易明白了:

    A:=C>O;

    FILTER(A,3);







    十五、

    舉兩個綜合運用引用函數的例子。

    1、RSI(相對強弱指標(Relative Strenth Index),1978年由韋爾斯·王爾德發明)

    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,100  N2:12,2,100  N3:24,2,100}

    RSI1、RSI2、RSI3三根線是一樣的算法,只是所取參數不同。

    MAX,在兩者之間取大者。ABS,取絕對值。以日K周期為例,LC是昨天的收盤價,C-LC即為兩天之間的收盤價差值。

    RSI的分母是這個差值的絕對值,進行指數加權平均處理。

    RSI的分子是上漲中的差值,進行指數加權平均處理。

    分子所占分母的比重的百分比,即得出RSI的值。



    B、原始RSI的算法是這樣的:

    設A為N天內上漲收盤價的平均值,B為N天內下跌收盤價的平均值。

    RSI=100-100/(1+RS),其中的RS=A/B。

    經過化簡,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經過了指數加權平均處理。

    我沒有說指數加權平均處理就不好了,經過處理后,指標會平滑、穩定一些。







    2、參數可調整的峰點公式

    A:=REF(H,N)=HHV(H,2*N+1);{當前位置N天之前的最高價是最近2*N+1根K線中的最高價}

    B:=FILTER(A,N); {當高點附近有等高的K線出現時,會影響后續高點的判斷,所以要過濾}

    D:=BACKSET(B,N+1);{將當前位置及前N周期的數值設為1,所以要用N+1}

    HD:=FILTER(D,N); {當高點附近有等高的K線出現,取第一個,過濾掉后面N個周期之內出現的}

    A2:=REF(L,N)=LLV(L,2*N+1);{求低點的過程與求高點的過程同理}

    B2:=FILTER(A2,N);

    D2:=BACKSET(B2,N+1);{參數N:1,3,999}

    LD:=FILTER(D2,N);{主圖疊加}

    DRAWICON(HD,H,10),ALIGN2;{在高點附近顯示紅球}

    DRAWICON(LD,L,11),ALIGN1;{在低點附近顯示綠球}

    可以說,這個公式用了未來函數BACKSET,但是用在日K線中,盤后是沒有未來數據的,因為引用的全是已經發生過的不可變的數據了。

    至于即時盤中的未來數據,那是說不到底的事,基本所有的公式,都有即時盤中未來數據,詳見簡介二中的探討說明。





    紅球綠球作為峰點標志,在顯示K線不多的情況下,還比較清楚。但當K線數較多時,因為球的大小是不變的,所以看起來比較亂。故可用以下公式:

    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;
     
     

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲中文字幕国产综合| 亚洲成A人一区二区三区| 人人人澡人人肉久久精品| 精品国产精品中文字幕| 亚洲爆乳WWW无码专区| 久久精品手机观看| 爱情岛亚洲论坛成人网站| 伊人久久无码大香线蕉综合| 美女裸体无遮挡免费视频网站| 少妇人妻真实偷人精品| 黄色A级国产免费大片视频| 东京热TOKYO综合久久精品| 亚洲人成无码网站久久99热国产| 日韩加勒比一本无码精品| 九九在线精品国产| 色婷婷综合久久久久中文字幕| 亚洲成人av免费一区| 免费人成在线观看网站| 少妇办公室好紧好爽再浪一点| 特级无码毛片免费视频尤物| 人妻中文字幕精品一页| 亚洲AV永久无码一区| 一区二区三区精品不卡| 久久精品无码一区二区无码| 99久久婷婷国产综合精品青草漫画 | 午夜久久久久久禁播电影| 深夜av免费在线观看| 日韩精品一区二区三区影院| 国产精品无码免费播放| 免费看成人毛片无码视频| 极品少妇无套内射视频| 国产成人无码A区在线观看视频| 国色天香成人一区二区| 一本一道VS无码中文字幕| 无码人妻一区二区三区免费N鬼沢| 亚洲欧洲日产国无高清码图片| 成人AV无码一区二区三区| 日韩精品无码一区二区三区AV| 国产精品自在拍首页视频| 亚洲鸥美日韩精品久久| 国产成人精品无码播放|