講解了Inner Circle Trader(ICT)的交易策略,要將這套策略在富途平台寫成指標也並不困難,之前在Patreon的文章已教了大家「富途語法」,其用法與pine script會有所不同,若大家已忘記可以重看以下日子的文章:

其實富途語法的原理比pine script更加簡單,若大家已熟悉pine script,其實學習富途語法也十分方便,以下是在富途平台將Inner Circle Trader(ICT)寫成指標的代碼:

MY_MA := MA(CLOSE, 50);

TR1 := MAX(MAX(HIGH – LOW, ABS(REF(CLOSE, 1) – HIGH)), ABS(REF(CLOSE, 1) – LOW));

MY_ATR := MA(TR1, 14);

BUFFER := MY_ATR * 0.5;

MIN_GAP := 0.5;

SH := REF(HIGH, 2) > REF(HIGH, 3) AND REF(HIGH, 2) > REF(HIGH, 1);

SL := REF(LOW, 2) < REF(LOW, 3) AND REF(LOW, 2) < REF(LOW, 1);

PREVHIGH := VALUEWHEN(SH, HIGH);

PREVLOW := VALUEWHEN(SL, LOW);

WICKBEAR := HIGH > PREVHIGH AND CLOSE < PREVHIGH AND (HIGH – CLOSE) > ABS(OPEN – CLOSE);

WICKBULL := LOW < PREVLOW AND CLOSE > PREVLOW AND (CLOSE – LOW) > ABS(OPEN – CLOSE);

PREV_SWING_LOW := REF(LOW, 3);

PREV_SWING_HIGH := REF(HIGH, 3);

CHOCH_BULL := (LOW < PREV_SWING_LOW) AND HIGH > PREV_SWING_HIGH;

CHOCH_BEAR := (HIGH > PREV_SWING_HIGH) AND LOW < PREV_SWING_LOW;

OB_BULL := CHOCH_BULL AND (CLOSE – OPEN) > ABS(REF(CLOSE,1) – REF(OPEN,1));

OB_BEAR := CHOCH_BEAR AND (OPEN – CLOSE) > ABS(REF(OPEN,1) – REF(CLOSE,1));

筆者先每句講解,這樣會更容易明白:

MY_MA := MA(CLOSE, 50);

這句是計算參數為50的平均線寫法。

TR1 := MAX(MAX(HIGH – LOW, ABS(REF(CLOSE, 1) – HIGH)), ABS(REF(CLOSE, 1) – LOW));

計算每支bar的真實波幅(True Range)。

HIGH – LOW :當日最高價與最低價的差(內部波幅)

ABS(REF(CLOSE, 1) – HIGH) 昨天收市價與今天最高價之間的絕對差(向上裂口)

ABS(REF(CLOSE, 1) – LOW) :昨天收市價與今天最低價之間的絕對差(向下裂口)

然後取三者之中最大值,用以捕捉真正的波動幅度,比單純的 HIGH-LOW 更準確。

MY_ATR := MA(TR1, 14);

將上面計算出來的真實波幅(TR1)再取14期的移動平均值,這就是所謂的ATR。

BUFFER := MY_ATR * 0.5;

就是把 ATR 乘以 0.5,製作出一個緩衝區(Buffer Zone),這其是用作設定之後某些條件下允許的「誤差」。

MIN_GAP := 0.5;

設定一個最小間距為 0.5(應用在後續條件,例如防止偽訊號)。

SH := REF(HIGH, 2) > REF(HIGH, 3) AND REF(HIGH, 2) > REF(HIGH, 1);

找出短期局部高位(swing high)的條件,意思是兩天前的最高價(HIGH[2])比前一天(HIGH[1])和三天前(HIGH[3])都要高,這也是計算Fair Value Gap, FVG)的部份。

SL := REF(LOW, 2) < REF(LOW, 3) AND REF(LOW, 2) < REF(LOW, 1);

找出短期局部低點(swing low)的條件,意思是兩天前的最低價(LOW[2])比前一天(LOW[1])和三天前(LOW[3])都要低,同樣是計算Fair Value Gap, FVG)的部份。

PREVHIGH := VALUEWHEN(SH, HIGH);

PREVLOW := VALUEWHEN(SL, LOW);

當中VALUEWHEN(SH, HIGH)代表當出現 SH(局部高點)時,把當時的 HIGH 記錄下來。而VALUEWHEN(SL, LOW)則代表當出現 SL(局部低點)時,把當時的 LOW 記錄下來,意思是找出近期的高/低位。

WICKBEAR := HIGH > PREVHIGH AND CLOSE < PREVHIGH AND (HIGH – CLOSE) > ABS(OPEN – CLOSE);

這部份是筆者自行加上的,有些人運用Inner Circle Trader(ICT)時也會這樣做,意思是加上看跌上影線(Bearish Wick),然後只要今日最高價突破了前高(HIGH > PREVHIGH)但收市價又低於前高位(CLOSE < PREVHIGH),同時,今天的上影線(HIGH – CLOSE)比燭身(OPEN – CLOSE)還要長,這便符合條件。

WICKBULL := LOW < PREVLOW AND CLOSE > PREVLOW AND (CLOSE – LOW) > ABS(OPEN – CLOSE); 則是加上了看升下影線(Bullish Wick),意思是今日最低價跌破了前低(LOW < PREVLOW),但收市價又站回前低位之上(CLOSE > PREVLOW),同時今天的下影線(CLOSE – LOW)比燭身(OPEN – CLOSE)還要長,這便符合條件。

PREV_SWING_LOW := REF(LOW, 3);

PREV_SWING_HIGH := REF(HIGH, 3);

就是簡單地取3天前的低位與高點位,用以判斷是否發生結構轉變(Change of Character, CHoCH)。

CHOCH_BULL := (LOW < PREV_SWING_LOW) AND HIGH > PREV_SWING_HIGH;

這就是發生結構轉變向上(Bullish CHoCH)的條件:

今天曾經跌破了3天前的低位(LOW < PREV_SWING_LOW)

又或者升穿了3天前的高位(HIGH > PREV_SWING_HIGH)

CHOCH_BEAR := (HIGH > PREV_SWING_HIGH) AND LOW < PREV_SWING_LOW;

則代表了今天曾經升破了3天前的高位(HIGH > PREV_SWING_HIGH)

又或者跌穿了3天前的低位(LOW < PREV_SWING_LOW)

OB_BULL := CHOCH_BULL AND (CLOSE – OPEN) > ABS(REF(CLOSE,1) – REF(OPEN,1));

OB_BEAR := CHOCH_BEAR AND (OPEN – CLOSE) > ABS(REF(OPEN,1) – REF(CLOSE,1));

這兩句用以定義訂單塊(Order Blocks, OB)

筆者要求的條件是燭身要比前一支BAR的燭身長

然後大家可以直接COPY到富途平台使用,可以看到這個指標近日若用作Daytrade Tesla(US:TSLA)效果是不俗的。

另外,Inner Circle Trader(ICT)的策略也有其他的細節,筆者之後也會在Patreon給大家一個更詳細的版本,而且會給大家一個用pine script寫的版本,大家也可以試試把它改為交易策略,甚至直接用trading view做autotrade。