2014年10月27日 星期一

鱷魚線指標 [程式碼]

EasyTrader ArtNo 213
鱷魚線指標是著名的混沌交易法的其中一個指標。鱷魚線這個指標是Bill William在1998年所提出來的,這個指標旨在判定趨勢,利用藍線-顎(jaw)、紅線-齒(teeth)、綠線-唇(lip)及價格的相對位置,分屬不同的意義;並且在配合碎形fractal後可進一步得到進出訊號。
基本上,無論即時價格往任何方向移動,鱷魚線扮演著使我們的交易保持正當方向的羅盤角色。而且,鱷魚線會協助我們在有方向的趨勢中獲利,並且將這個獲利持續到會吃掉我們利潤的盤整趨勢出現為止。
當藍、紅、綠三條線糾纏在一起時,表示鱷魚睡著了。 
當鱷魚從長時間的睡眠中醒來時,會十分饑餓,因此需要追捕價格,以填滿它的胃,直到得到滿足。 然後,它開始閉上嘴巴,並且喪失了進食的興趣。 
只要鱷魚的嘴巴開始閉起來,就是在告訴我們:取得利潤,然後耐心觀察鱷魚是否將打個盹兒? 所以,當鱷魚睡覺時,我們通常會逗留在市場外,並且等待,直到有個分形在下顎之外被觸發為止。

鱷魚線能讓我們遠離波動不定的市場,並使我們能進入重要且趨勢明顯的市場中。 
亦即價格向上或向下突破分形時,便是你從趨勢中開始獲利的時候。 
另外我們還需要知道的是,鱷魚線的三條線分別對股價起著支撐和壓力的作用。 


一、公式:
它們其實是三條移動平均線,
1.藍線代表鱷魚下巴,是13時段中間價((最高價+最低價)/2)平移8。
2.紅線代表鱷魚牙,它是8時段中間價平移5。
3.綠線代表鱷魚唇,他是5時段中間價平移3。


鱷魚線指標}
vars:Jaws(0), Lips(0), Teeth(0);
利用藍線-顎(jaw)、紅線-齒(teeth)、綠線-唇(lip)及價格的相對位置
Jaws=SmoothedAverage(close, 13)[ 8];
Teeth=SmoothedAverage(close, 8)[5];
Lips=SmoothedAverage(close, 5)[3];
Plot1(Jaws, "Jaws");
Plot2(Teeth, "Teeth");
Plot3(Lips, "Lips");

二、說明

在這個指標中,分別計算藍線、紅線及綠線,分別代表著鱷魚的顎、齒及唇。當由下而上依顎-齒-唇排列時,作者喻為鱷魚自睡眠中醒來,則將開始尋找食物發動攻勢,表示即將有多頭行情出現;反之,如由下而上依唇-齒-顎排列,則為鱷魚將進入休眠,空頭行情出現。

並且用突破「有效的碎形」來決定買進或賣出訊號。這裏所指的碎形:
指當天的最高價比往前二天及往後二天的最高價還高,這時稱為向上的碎形;
或當天的最低價比往前二天及往後二天的最低價還低,這時稱向下的碎形。


碎型指標 ( fractal line indicator )
Inputs:Strength(2);
value1=swinghigh(1,high,Strength,89);
value2=swinglow(1,low,Strength,89);

if value1>-1 then plot1(value1,"BuyFractal");
if value2>-1 then plot2(value2,"SellFractal");

而所謂的「有效的」意思指向上/向下碎形高於/低於紅色齒線,則此時的訊號才為有效訊號。不過作者Bill William進一步引出無效碎形變有效碎形的觀念,指當原來為無效碎形,經過幾天紅色齒線不斷下降/上升後,原碎形超過幾天後的紅色齒線時,則原無效碎形變成有效碎形。注意,採用的碎形應以最新的碎形為準,新碎形出現後,之前的碎形即不可再用。上漲突破有效的碎形是作多訊號;跌破有效的向下碎形是作空訊號。
資料參考: MoneyDJ 財經知識庫
交易策略
  1. 三線糾纏時 = 趨勢不明,直到第一個在鱷魚嘴巴外面的分形被突破時,否則不進行交易。 
  2. 價格突破三線向上,且三線排列由上而下為綠紅藍=只做多方信號。 
  3. 價格跌破三線以下,且三線排列由上而下為藍紅綠=只做空方信號。 
亦即:若股票價格在鱷魚的嘴巴之上,表示為買進信號出現,我們只做多。 若股票價格在鱷魚嘴巴向下的另一邊,表示為賣出信號出現我們只做空。
如果目前的價格正在鱷魚嘴巴的外面,表示我們正處於某種程度的衝擊波中。
如果目前的價格正環繞著鱷嘴,那我們正處於某種程度的修正波中


台指期 60 min K 多空留倉 交易週期 2004/8/31~ 2014/8/29 交易成本 1200

很特別的是鱷魚線的基礎均線以及平移K棒數都是費氏數列的數字喔
MagicQS123

4 則留言:

  1. 請問大大,不知道是否方便跟您要您的swinghigh函數腳本嗎><

    回覆刪除
  2. {*******************************************************************
    Description: Swing High
    Provided By: Omega Research, Inc. (c) Copyright 1999
    ********************************************************************}

    Inputs: Occur(NumericSimple), Price(NumericSeries), Strength(NumericSimple), Length(NumericSimple) ;
    Variables: X(0), J(0), Counter(0), Found(FALSE), Price1(0), Truth(FALSE);

    J = Strength;
    Found = FALSE;

    If J > 0 Then Begin
    Counter = 0;
    While J < Length AND Found = FALSE Begin
    Price1 = Price[J];
    X = J + 1;
    Truth = TRUE;
    While Truth AND X - J <= Strength Begin
    If Price1 < Price[X] Then
    Truth = FALSE;
    X = X + 1;
    End;
    X = J - 1;
    While Truth AND J - X <= Strength Begin
    If Price1 <= Price[X] Then
    Truth = FALSE;
    X = X - 1;
    End;
    If Truth Then
    Counter = Counter + 1;
    If Counter >= Occur Then
    Found = TRUE;
    J = J + 1;
    End;
    End;
    If Found Then
    SwingHigh = Price1
    Else
    SwingHigh = -1 ;



    ******************************************************************************************
    {*******************************************************************
    Description: Swing Low
    Provided By: Omega Research, Inc. (c) Copyright 1999
    ********************************************************************}

    Inputs: Occur(NumericSimple), Price(NumericSeries), Strength(NumericSimple), Length(NumericSimple);
    Variables: X(0), J(0), Counter(0), Found(FALSE), Price1(0), Truth(FALSE);

    J = Strength;
    Found = FALSE;

    If J > 0 Then Begin
    Counter = 0;
    While J < Length AND Found = FALSE Begin
    Price1 = Price[J];
    X = J + 1;
    Truth = TRUE;
    While Truth AND X - J <= Strength Begin
    If Price1 > Price[X] Then
    Truth = FALSE;
    X = X + 1;
    End;
    X = J - 1;
    While Truth AND J - X <= Strength Begin
    If Price1 >= Price[X] Then
    Truth = FALSE;
    X = X - 1;
    End;
    If Truth Then
    Counter = Counter + 1;
    If Counter >= Occur Then
    Found = TRUE;
    J = J + 1;
    End;
    End;
    If Found Then
    SwingLow = Price1
    Else
    SwingLow = -1 ;

    回覆刪除