Author Archives: 發財橘子

Ehlers 相關性趨勢指標

 Ehlers 相關性趨勢指標 (Correlation Trend Indicator, CTI) 是 John Ehlers 在其著作《Cycle Analytics for Traders》(2013) 及後續發表中提出的概念。

 CTI 是一個「含金量」極高的指標。因為它解決了一個傳統技術分析無法量化的問題:「這個趨勢到底有多『明確』?」

1. CTI 的核心哲學:尋找「完美的 45 度線」

大多數趨勢指標(如 MACD、均線)測量的是價格變化的幅度。但幅度大不代表趨勢好,有可能是暴漲暴跌。

CTI 測量的不是幅度,而是 「型態的完美度」 。

  • 概念模型: 想像一條從左下角筆直畫到右上角的直線(理想的上升趨勢)。
  • 計算邏輯: CTI 計算實際股價走勢與這條「理想直線」之間的相關係數 (Correlation Coefficient)
  • 數值解讀:
    • +1.0: 完美的上升趨勢(股價沿著直線穩定上漲,無雜訊)。
    • -1.0: 完美的下降趨勢。
    • 0.0: 完全的隨機漫步或橫盤整理。

2. 為什麼 CTI 優於 ADX 或 RSI?

在設計選股策略或儀表板時,CTI 提供了傳統指標無法提供的視角:

特性 ADX (平均方向指數) RSI (相對強弱指標) CTI (相關性趨勢)
方向性 無 (只知有趨勢,不知方向) 有 (+/- 分明)
鈍化問題 會滯後 強勢時會卡在 80 以上鈍化 不會鈍化,它會穩定維持在 0.9 以上
雜訊敏感度 易受單日大漲跌影響 易受波動率影響 ,只關注整體結構的線性度
PM 應用 判斷趨勢強度 判斷超買超賣 篩選「穩健飆股」 (Sleep-well stocks)

 

如果你想挑選出「抱得住」的股票,CTI 是比 RSI 更好的過濾器。因為 CTI 高的股票,回檔幅度小,走勢呈現階梯式上漲,投資人的心理壓力最小。

3. 數學原理與計算步驟

CTI 使用的是統計學標準的皮爾森積矩相關係數 (Pearson Product-Moment Correlation Coefficient),或是更進階的史皮爾曼等級相關 (Spearman Rank Correlation)

在標準算法中,我們將兩個變數進行比較:

  1. 變數 X: 價格序列 (Price)。
  2. 變數 Y: 時間序列 (Time Index),即 1, 2, 3… N (代表一條完美的斜線)。

這個公式看起來複雜,但本質上就是在問:「目前的價格走勢,跟一條穩定向上的直線,相似度有幾成?」

用Xscript寫的腳本如下

// 指標名稱:Ehlers Correlation Trend Indicator
// -----------------------------------------------------------
Input: Length(20, "計算週期");
Variable: SX(0), SY(0), SXX(0), SYY(0), SXY(0), i(0);
Variable: Corr(0);

// 初始化累加變數
SX = 0; SY = 0; SXX = 0; SYY = 0; SXY = 0;

// 計算價格與「時間序列(1, 2, 3...)」的相關性
for i = 0 to Length - 1 begin
Value1 = Close[i]; // Y: 價格
Value2 = Length - i; // X: 時間序 (越近數值越大,模擬上升直線)

SX = SX + Value2;
SY = SY + Value1;
SXY = SXY + (Value2 * Value1);
SXX = SXX + (Value2 * Value2);
SYY = SYY + (Value1 * Value1);
end;

// 相關係數公式
Value3 = (Length * SXX) - (SX * SX);
Value4 = (Length * SYY) - (SY * SY);

if Value3 > 0 and Value4 > 0 then
Corr = ((Length * SXY) - (SX * SY)) / SquareRoot(Value3 * Value4)
else
Corr = 0;

Plot1(Corr, "Trend Correlation");
Plot2(0, "Zero");
Plot3(0.5, "Strong Trend");

 

 

以下是其用在台積電上的對照圖

 

總結

Ehlers CTI 是一個將 「美學」(圖形漂亮程度)轉化為「數學 的優雅指標。它不求快,但求「穩」。 

內行人指數

現在產業輪動的這麼快,作為散戶,當特定類股開始上漲時,我們經常是

 

當類股下跌時,我們最怕的是

 

我一直在思考要如何避開這兩個煩惱

說到底,就是要儘量因為資訊落差而成為韭菜

在這市場上,

法人跟大股東是最可能擁有資訊落差的內行人

所以撰寫以下的腳本,計算有多少種不同的內行人在買超,而散戶還在放空或賣股票的

我寫的腳本如下

value1=getfield("外資買賣超", "D");
value2=getField("投信買賣超", "D");
value3=getField("自營商買賣超", "D");
value4=getField("關鍵券商買賣超張數", "D");
value5=getField("關聯券商買賣超張數", "D");
value6=getField("地緣券商買賣超張數", "D");
value7=getField("融資增減張數", "D");
value8=getField("融券增減張數", "D");
var:count(0);
count=0;
if value1>0 then count=count+1;
if value2>0 then count=count+1;
if value3>0 then count=count+1;
if value4>0 then count=count+1;
if value5>0 then count=count+1;
if value6>0 then count=count+1;
if value7<0 then count=count+1;
if value8>0 then count=count+1;
value9=average(count,40);
value10=count-value9;
plot1(average(count,3),"內行人參與係數");
plot2(value10,"差額");

這份腳本的核心概念是透過量化 「籌碼面」的共識程度 ,來判斷一檔股票是否正在被「聰明錢(Smart Money)」集中佈局。

畫出來的圖如下圖

以下是AI寫的這個指標的分析報告,包含計算公式指標意義實戰應用

1. 指標計算公式:內行人的共識分數

這個指標的運作邏輯是「計分制」。它每天會檢查 8 個籌碼變數,只要符合條件就加 1 分,滿分為 8 分。分數越高,代表越多不同路數的內行主力正在同步買進 。

加分條件(符合一項得 1 分):

這 8 個變數涵蓋了三大法人、主力券商與散戶指標:

類別 變數名稱 加分條件 背後邏輯
三大法人 1. 外資 買超 > 0 外資籌碼進駐,通常代表基本面或波段看好
2. 投信 買超 > 0 本土法人作帳或看好中短期爆發力
3. 自營商 買超 > 0 短線操作敏銳的券商自有資金進場
特殊主力 4. 關鍵券商 買超 > 0 過去操作該股勝率高或具影響力的券商
5. 關聯券商 買超 > 0 與公司派、大股東有地緣或人脈關係的券商
6. 地緣券商 買超 > 0 位於公司總部附近的券商,常被視為公司派動向
散戶與反向 7. 融資 減少 (< 0) 散戶(融資)退場,籌碼流向穩定(籌碼沉澱)
8. 融券 增加 (> 0) 可能是主力避險,或醞釀「軋空」行情的燃料

最終輸出數值:

  1. 內行人參與係數 (Plot1):將每日的得分取 3 日平均。這是為了平滑單日的波動,看出一週內的短期趨勢 。
  2. 差額 (Plot2):當日得分減去 40 日平均得分。用來判斷目前的熱度是否高於長期平均 。

2. 指標意義:資訊落差的具象化

這份腳本的作者開宗明義提到:「法人跟大股東是最可能擁有資訊落差的內行人」。

對於一般投資人來說,這個指標的意義在於解決單一看法的不確定性:

  • 消除雜訊:單看外資買,可能是假外資;單看投信買,可能是追高。但如果外資、投信、地緣券商、關鍵券商同時都在買,這就不太可能是巧合。
  • 確認共識:當這個係數很高(例如接近 6~8 分),代表市場上擁有「資訊優勢」的各路人馬都在做多,這時候跟單的勝率通常較高 。
  • 籌碼流向確認:特別加入了「融資減少」與「融券增加」的濾網,意味著它喜歡「散戶下車、主力上車」的籌碼結構。

3. 應用方式:如何用來操作?

根據腳本的邏輯,建議投資人可以採用以下三種應用策略:

A. 趨勢發動點 (Momentum Strategy)

  • 觀察重點:看 內行人參與係數 (Plot1)。
  • 操作:當係數從低檔(例如 1~2 分)快速攀升並突破 5 分以上,且維持在高檔。
  • 解讀:代表多方主力開始集結,股價可能即將發動攻擊。

B. 異常熱度偵測 (Divergence/Oscillator Strategy)

  • 觀察重點:看 差額 (Plot2,即當前分數 – 40日均值)。
  • 操作
    • 正向訊號:當 差額 轉為正數且持續擴大。這代表最近幾天的內行人買盤遠比過去兩個月(40天)還要積極,是主力表態的訊號。
    • 警示訊號:若股價創新高,但 內行人參與係數 卻開始下降(背離),代表雖然股價在漲,但聰明錢已經開始由於或撤退,這時應考慮停利。

C. 底部佈局 (Bottom Fishing)

  • 觀察重點:股價盤整時,內行人參與係數 是否悄悄墊高。
  • 解讀:如果股價還沒漲,但係數長期維持在 4~5 分以上,且融資持續減少(變數 7),這通常是主力在底部「吸籌」的特徵。

總結

這個指標不是單純的「買賣超張數」加總,而是一個 「多方訊號計數器」。它不看誰買得多,而是看有多少種不同的內行人 一致看好。

給一般投資人的建議:

不要只看指標分數高就買進,最好搭配 K線型態(如突破盤整區)一同觀察。當「內行人係數」高漲且股價剛突破關鍵壓力位時,就是勝率最高的進場點。

 

 

Points and Line (P&L) Chart

Points and Line (P&L) Chart 是 2025 年底在量化交易界與高階圖表軟體中興起的一種「雜訊過濾」圖表。它本質上是點數圖 (Point and Figure)折線圖 (Line Chart) 的混合體,旨在解決傳統 K 線圖在盤整期噪音過多,以及傳統點數圖「時間軸扭曲」的痛點。

這對於需要處理大量金融數據、並希望 「清爽趨勢感」的使用者來說,是一個極具潛力的視覺化工具。

1. 核心邏輯:價格變化決定繪圖,而非時間

傳統 K 線無論價格有無變動,每分鐘/每天都會畫出一根;而 P&L Chart 遵循以下原則:

  1. 設定閾值 (Box Size / Reversal): 只有當價格變動超過預設的幅度(例如 1% 或特定的 ATR 倍數)時,圖表才會畫出下一個點。
  2. 連接點與線: 當滿足變動條件時,在新的價格位階畫一個點,並與前一個點連線。
  3. 橫軸同步: 不同於傳統點數圖(會把時間擠壓),P&L Chart 保持了線性時間軸。如果價格在一段時間內沒有顯著變動,圖表會呈現一條水平線,直到突破發生。

2. P&L Chart 的三大優點

  • 自動過濾噪音: 在波動率極低的橫盤區間,P&L Chart 會呈現一條筆直的水平線。這能幫助投資人忍受震盪,直到真正的「趨勢點」出現。
  • 支撐壓力位極度清晰: 由於水平線代表價格在該區間停留且未突破,這些「平台區」自動成為了視覺上最直觀的強大支撐與壓力帶。
  • 保持時間參考: 它解決了點數圖最大的問題——無法判斷這段價格波動花了多久。在 P&L Chart 上,水平線越長,代表盤整時間越久,突破後的爆發力通常也越強。

3. 與傳統圖表對比

特性 K 線圖 (Candlestick) 點數圖 (P&F) P&L Chart
時間軸 穩定 (線性) 扭曲 (非線性) 穩定 (線性)
雜訊處理 無 (顯示所有跳動) 極佳 (完全過濾) 優異 (局部平滑)
視覺焦點 價格開高低收 價格反轉模式 趨勢發動與平台區
適合對象 當沖、短線交易 老派量化分析師 中長線波段、產業趨勢分析

4. XScript 實作思考

在 XQ 系統中,要完全改變「繪圖引擎」去畫 P&L Chart 較難,但我們可以透過「指標」的形式,利用 Plot 函數模擬出這種效果:

// 模擬 P&L Chart 的邏輯 (簡化版)
// -----------------------------------------------------------
Input: BoxSizePct(1, "變動閾值%");
Variable: LastPoint(0), TargetChange(0);

if CurrentBar = 1 then LastPoint = Close;

// 計算變動幅度
TargetChange = LastPoint * (BoxSizePct / 100);

// 只有當收盤價偏離上一個點超過門檻時,才更新點位
if AbsValue(Close - LastPoint) >= TargetChange then begin
LastPoint = Close;
end;

// 繪製點與連線
Plot1(LastPoint, "P&L Line");


  P&L Chart是一個掌握長期趨勢的工具,除了用來研判個股的長期趨勢之外,也可以 應用在以下使用場景中:

1.「產業多因子儀表板」: 針對您關注的細產業指標,使用 P&L Chart來對照。

這能讓用戶一眼看出產業是處於「長期平台築底」還是「突破發動期」,避免被短期的漲跌假動作誘騙。

2.ETF 趨勢掃描: 許多 ETF(如高股息系列)波動較小,K 線圖看起來很雜亂。改用 P&L Chart 可以讓用戶更專注於長線趨勢。

以下是一個參考的圖表

Super trend

超級趨勢指標 (SuperTrend) 是近年來在程式交易與波段操作中極受歡迎的趨勢追隨(Trend Following)工具。它的設計初衷是為了在波動的市場中,提供一個明確的「多空分界線」與「移動止損點」。

與傳統均線相比,SuperTrend 最大的特色在於它結合了價格波動率(ATR),這讓它在趨勢啟動時能緊貼價格,而在震盪時能保持一定的安全距離。

1. 核心計算邏輯

SuperTrend 的構造基於兩個主要參數:

  1. ATR 週期 (Period): 通常設定為 10,用來衡量近期市場的平均波動。
  2. 倍數 (Multiplier): 通常設定為 3,用來決定指標與價格間的距離(容錯空間)。

計算公式:

首先計算基礎的上軌與下軌:

  • 基礎上軌 (Basic Upperbound)

 

  • 基礎下軌 (Basic Lowerbound)  

「階梯式」修正(關鍵之處):

為了避免指標隨便反轉,SuperTrend 加入了邏輯判斷:

  • 下軌(支撐線): 只有當新的計算值比前一根 K 線的下軌「更高」時,才會上移;否則維持平盤。它絕不向下移動,除非趨勢翻空。
  • 上軌(壓力線): 只有當新的計算值比前一根 K 線的上軌「更低」時,才會下移;否則維持平盤。它絕不向上移動,除非趨勢翻多。

2. SuperTrend 的三大特性

A. 自動過濾雜訊

由於 SuperTrend 使用了 ATR,當市場波動放大時,指標線會自動推遠,避免因為隨機的「小跳動」而誤觸出場訊號。這比固定百分比的停損更符合市場現狀。

B. 明確的多空轉折

  • 翻多訊號: 當收盤價「突破」上軌,指標由紅轉綠,並跳到價格下方。
  • 翻空訊號: 當收盤價「跌破」下軌,指標由綠轉紅,並跳到價格上方。

C. 理想的移動止損 (Trailing Stop)

對於波段交易者來說,SuperTrend 那條「階梯線」就是最完美的移動止損位。只要趨勢沒破,就一直持有,能有效地解決「賺一點就跑」而錯失大波段的問題。

3. XScript 實作代碼

這是為您準備的 XScript 版本,您可以直接在 XQ 系統中建立指標:

 

// 指標名稱: SuperTrend
input: _atrLength(10, "ATR週期"), _multiplier(3, "倍數");

variable: _avgPrice(0), _atr(0), _up(0), _dn(0), _trend(1), _st(0);

// 1. 計算典型價格與 ATR
_avgPrice = (High + Low) / 2;
_atr = average(TrueRange,_atrlength);

// 2. 計算基礎上下軌
value1 = _avgPrice + (_multiplier * _atr); // Basic Upper
value2 = _avgPrice - (_multiplier * _atr); // Basic Lower

// 3. 處理「階梯式」邏輯
// 下軌 (支撐) 不向下掉
if value2 > _dn[1] or Close[1] < _dn[1] then 
_dn = value2 
else 
_dn = _dn[1];

// 上軌 (壓力) 不向上升
if value1 < _up[1] or Close[1] > _up[1] then 
_up = value1 
else 
_up = _up[1];

// 4. 判斷多空趨勢
if Close > _up[1] then
_trend = 1
else if Close < _dn[1] then
_trend = -1
else
_trend = _trend[1];

// 5. 決定 SuperTrend 的數值
if _trend = 1 then _st = _dn else _st = _up;

// 6. 繪圖
Plot1(_st, "SuperTrend" );

把這指標跟台積電做搭配的參考圖形如下

總結

SuperTrend 是目前**「性價比最高」的趨勢工具之一:它邏輯簡單、視覺直觀,且在 XScript 中極易實現。它唯一的缺點是在橫盤整理(Sideways Market)**時會出現頻繁的「假訊號(Whipsaw)」,因此建議搭配 ADX(趨勢強度指標) 或您之前提到的 CMF(資金流向) 來過濾掉沒有動能的震盪期。

Anchored VWAP

 Anchored VWAP (AVWAP) 是我過去十年來,技術分析領域從「純幾何數學(如均線)」轉向「市場心理與籌碼結構」的最重要橋樑。 它不僅是一個指標,更是一種互動式(Interactive)的圖表功能

 

1. 什麼是 Anchored VWAP?

傳統的 VWAP(成交量加權平均價) 是一個僅限於「當日(Intraday)」的指標,每天開盤就會歸零重算。這限制了它在波段交易或中長線分析的用途。

Anchored VWAP 則打破了時間限制。它允許使用者自由選擇一個特定的起始點(Anchor,錨點),從那個時間點開始計算至今的成交量加權平均價。

2. 計算公式與邏輯

它的計算邏輯與 VWAP 完全相同,差別僅在於 Start_Index(起始點)。

  • Price_i: 第 i 根 K 線的典型價格(通常是 (High + Low + Close) / 3)。
  • Volume_i: 第 i 根 K 線的成交量。
  • Start: 使用者指定的「錨點」K 線(例如:某個低點、財報日)。

為什麼這比移動平均線(MA)更優越?

  • MA(時間加權): 每一天的價格權重一樣。但對於市場來說,成交量 100 張的日子與成交量 10,000 張的日子,其重要性絕對不同。
  • AVWAP(資金加權): 它考慮了成交量。如果某一天爆大量,那一天的價格就會對這條線的走向產生巨大影響。

3. 核心精神:平均成本與市場心理

AVWAP 解決了一個核心問題:「從這一天進場的人,現在平均是賺錢還是賠錢?」

這也是為什麼 Brian Shannon 稱之為「情緒的絕對真理(The absolute truth of sentiment)」。

  • AVWAP 之上(Above the Line):
    • 從錨點日進場的平均持有者處於獲利狀態
    • 心理狀態: 持有者有信心,拉回時傾向加碼(Buy the dip)。
    • 技術意義: AVWAP 成為強力的支撐(Support)
  • AVWAP 之下(Below the Line):
    • 從錨點日進場的平均持有者處於虧損狀態
    • 心理狀態: 持有者感到焦慮,價格反彈回成本區時傾向解套賣出(Sell to break even)。
    • 技術意義: AVWAP 成為強力的壓力(Resistance)

4. 實戰應用:錨點該設在哪裡?

這是 AVWAP 最具「藝術性」也最具「互動性」的地方。作為 PM,若要在軟體中實作此功能,通常會允許使用者點擊 K 線來設定錨點。

以下是四個最有效的錨點設定位置:

A. 重要的高點與低點 (Significant Highs/Lows)

  • 邏輯: 當趨勢反轉時(例如波段最低點),市場主力開始進場。錨定最低點,可以追蹤這波多頭趨勢的「平均成本上升軌跡」。
  • 用法: 只要股價維持在「最低點 AVWAP」之上,趨勢就是多頭,這條線是絕佳的移動停利點。

B. 財報發布日 (Earnings Date) / 重大新聞日

  • 邏輯: 財報公佈通常伴隨巨大的跳空缺口(Gap)和爆量。這代表市場對該股票重新定價(Repricing)。
  • 用法: 錨定財報日的開盤 K 線。這條線代表了「認同新基本面」的資金成本。如果不跌破,代表市場持續看好該公司的基本面變化。

C. IPO 上市日 (IPO Launch)

  • 邏輯: 這是該股票歷史上所有參與者的原始成本起點。
  • 用法: 對於新上市股票,錨定 IPO 第一天,可以判斷這檔股票自上市以來是處於機構吸籌階段(由下往上穿過 AVWAP)還是倒貨階段。

D. 政策或總經事件 (e.g., Fed Meeting)

  • 邏輯: 例如聯準會宣布降息當日,市場邏輯改變。錨定該日,可以看出市場對該政策的持續反應。

用Xscript寫的函數腳本如下

// 函數名稱:  AnchoredVWAP

// 傳回值: 數值序列

// 參數:

// Price: 通常傳入 (High + Low + Close) / 3

// Vol: 傳入成交量 Volume

// TargetDate: 錨定日期,格式為 YYYYMMDD (例如 20231026)




input: Price(numeric), Vol(numeric), TargetDate(numeric);

variable: sumPV(0), sumV(0), avwapValue(0);




// 當目前的 K 線日期大於或等於我們設定的錨定日期時開始計算

if Date >= TargetDate then

begin

// 如果是剛到達錨定日的第一根 K 線 (或是從未開始計算轉為開始計算)

// 我們需要將之前的累加值重置

if Date[1] < TargetDate then

begin

sumPV = Price * Vol;

sumV = Vol;

end

else

begin

// 否則持續累加 價格*成交量 與 成交量

sumPV = sumPV + (Price * Vol);

sumV = sumV + Vol;

end;




// 避免除以 0 的錯誤

if sumV <> 0 then

avwapValue = sumPV / sumV

else

avwapValue = Price;

end

else

avwapValue = 0; // 尚未到達錨定日,回傳 0

AnchoredVWAP=avwapvalue;


 


把這個函數應用到繪圖的腳本可以這麼寫

input:targetdate(20260108);
value1=AnchoredVWAP(close,volume,targetdate);

if value1<>0  then  plot1(value1,"AnchoredVWAP")

else noplot(1);

以特斯拉為例,它在2025年7月2日宣佈Robotaxi在德州上路,從那天之後的AnchoredVWAP與其股價的對照圖如下

變成重要的支撐區,因著這個原因買入特斯拉的投資者,當股價跌到這附近時等於是跌到從那天起買進股票投資者的成本附近

 

總結

AVWAP 是一個將「價格」、「成交量」與「時間」完美結合的指標。它比均線更客觀,因為它反映了真實的資金成本。 

 

Cybernetic Oscillator

Cybernetic Oscillator 是由技術分析大師 John Ehlers 於 2004 年提出(並在 2024-2025 年進行了現代化優化)的一項指標。它的核心思想源自於「自動控制理論」中的控制論(Cybernetics),旨在透過數位訊號處理(DSP)技術,從混沌的價格數據中精確提取出市場的「週期成分」。

不同於 RSI 或隨機指標(Stochastic),Cybernetic Oscillator 試圖解決「市場趨勢」與「市場週期」相互干擾的問題。

1. 核心處理流程:訊號處理流水線

Cybernetic Oscillator 的運作像是一個精密的過濾器,其處理步驟如下:

  1. 二階高通濾波 (2nd-order High-Pass Filter):
    去除價格中的「直流漂移」(即慢速的趨勢成分),只保留波動訊號。
  2. 二階超級平滑濾波 (2nd-order Super Smoother):
    去除高頻率的雜訊(毛刺),保留平滑的波動曲線,且幾乎不產生延遲。

2. 數學邏輯分析

該指標的核心在於其遞歸係數的設計,利用 alpha係數來精確控制截止頻率(Cutoff Frequency):

  • 高通濾波係數 alpha:


透過調整週期 P(通常設為 20),可以決定要過濾掉多長的趨勢。

  • 超級平滑係數:
    利用指數與三角函數計算出 c1, c2, c3,使得濾波器在頻域內具有 12 dB/octave 的衰減率。這比傳統 RSI 的 6 dB/octave 強大得多,能更乾淨地分離出週期。

3. 與傳統指標的效能對比

特性 RSI / Stochastic Cybernetic Oscillator
延遲度 (Lag) 較高,受窗口期影響大 極低,歸功於 SuperSmoother 技術
訊號穩定度 容易在強趨勢中「鈍化」 極佳,透過高通濾波預先剔除趨勢干擾
振幅一致性 0-100,但波動不一 能量標準化,數值在 正負 1 之間波動
雜訊過濾 依賴簡單平均 雙極濾波器,可精確定義頻譜範圍

4. XScript (XQ 語法) 實作代碼

以下是根據 John Ehlers 2025 年最新優化版本撰寫的 XScript 腳本: 

// 名稱:Cybernetic Oscillator (Ehlers 2025)
// -----------------------------------------------------------
Input: HPLen(30, "高通週期"), LPLen(20, "平滑週期"), RMSLen(50, "標準化窗口");
Variable: a1(0), b1(0), c1(0), c2(0), c3(0), x1(0);
Variable: HP(0), LP(0), RMS(0), CyberOsc(0);

// 1. 初始化高通濾波係數
Once begin
a1 = Expvalue(-1.414 * 3.14159 / HPLen);
b1 = 2 * a1 * Cos(1.414 * 3.14159 / HPLen);
c1 = -a1 * a1;
x1 = (1 + b1 - c1) / 4;
end;

// 2. 高通濾波 (去除趨勢)
if CurrentBar > 2 then
HP = x1 * (Close - 2 * Close[1] + Close[2]) + b1 * HP[1] + c1 * HP[2]
else
HP = 0;

// 3. 超級平滑濾波 (去除噪音 - 係數複用)
// 這裡使用簡化的二階平滑邏輯
LP = Average(HP, LPLen);

// 4. RMS 歸一化
RMS = SquareRoot(Summation(Power(LP, 2), RMSLen) / RMSLen);

if RMS <> 0 then 
CyberOsc = LP / RMS
else 
CyberOsc = 0;

// 5. 繪圖
Plot1(CyberOsc, "Cybernetic Oscillator");
Plot2(0, "零軸");


5. 實戰解讀 

  • 零軸交叉 (Zero-Crossing): 當指標由下往上穿過 0,代表週期性動能轉正,是一個極佳的波段買點。
  •  Cybernetic Oscillator 值進行排序,數值最高的即為當前「週期動能」最強的標的,這對尋找強勢股的用戶極具吸引力。

Understanding the Two-Pole Oscillator Mechanism

這段影片詳細解釋了二階(Two-pole)濾波器在震盪指標中的運作邏輯,能幫助您理解為什麼 Cybernetic 系列指標在過濾雜訊的同時能保持極低的延遲。

 下面是這個腳本應用在Tesla日線上的對照圖

 

BBTrend

BBTrend (Bollinger Band Trend) 是由布林通道創始人 John Bollinger 於 2023-2024 年間正式推廣的新一代指標。

可以將其視為「布林通道的進階版」或是「ADX 指標的強效替代品」。傳統的布林通道主要反映波動率(Volatility),而 BBTrend 則進一步量化了趨勢的方向與強度。

  1. 核心邏輯:為什麼需要 BBTrend?

傳統布林通道在「擠壓(Squeeze)」發生時,只能告訴投資人「即將有大行情」,但無法預測「方向」。BBTrend 的出現解決了這個痛點。

它基於一個深刻的市場觀察:

 * 多頭趨勢: 短期下軌與長期下軌的距離會拉開(發散),而上軌則相對接近(收斂)。

 * 空頭趨勢: 短期上軌與長期上軌的距離會拉開(發散),而下軌則相對接近(收斂)。

  1. 數學公式分析

BBTrend 同時使用了兩套不同週期的布林通道 :

 * 計算下軌差: LowerDiff = |LowerBB_{短天期} – LowerBB_{長天期}|

 * 計算上軌差: UpperDiff = |UpperBB_{短天期} – UpperBB_{長天期}|

 * 計算指標值: 

 

 * 大於 0: 代表下軌發散程度大於上軌,市場處於多頭。

 * 小於 0: 代表上軌發散程度大於下軌,市場處於空頭。

 * 數值大小: 遠離 0 軸的距離代表趨勢的動能(Momentum)。

  1. XScript (XQ 語法) 實作代碼
// 指標名稱:BBTrend (John Bollinger)
// -----------------------------------------------------------
Input: ShortLen(10, "短期週期"), LongLen(20, "長期週期"), Dev(2, "標準差");
Variable: sUp(0), sLow(0), sMid(0), lUp(0), lLow(0), lMid(0);
Variable: LowerDiff(0), UpperDiff(0), BBT(0);

// 1. 計算短期布林通道 (10, 2)
sMid = Average(Close, ShortLen);
sUp = sMid + Dev * StandardDev(Close, ShortLen, 1);
sLow = sMid - Dev * StandardDev(Close, ShortLen, 1);

// 2. 計算長期布林通道 (20, 2)
lMid = Average(Close, LongLen);
lUp = lMid + Dev * StandardDev(Close, LongLen, 1);
lLow = lMid - Dev * StandardDev(Close, LongLen, 1);

// 3. BBTrend 核心運算
LowerDiff = AbsValue(sLow - lLow);
UpperDiff = AbsValue(sUp - lUp);

// 進行歸一化 (Normalization)
if sMid <> 0 then 
BBT = (LowerDiff - UpperDiff) / sMid * 100
else 
BBT = 0;

// 4. 繪製柱狀圖
Plot1(BBT, "BBTrend");
Plot2(0, "零軸");

 

以下是用這個BBTrend指標搭配BBand及BBandwith一起看的圖

 

納達拉亞-沃森包絡線 (Nadaraya-Watson Envelope)

納達拉亞-沃森包絡線 (Nadaraya-Watson Envelope) 是近年來在量化交易界(特別是 TradingView 社群)極其熱門的指標。它與傳統布林通道(Bollinger Bands)最大的不同在於,它不依賴簡單的算術平均,而是利用Kernel Regression技術來擬合價格曲線。

 

1. 核心技術原理:核回歸 (Kernel Regression)

傳統均線(SMA/EMA)是給予過去數據不同權重;而納達拉亞-沃森(NW)則是一種非參數(Non-parametric)的估計方法。

  • 數學邏輯: 它在每一個點上,都會觀察全域或局部窗口內的數據,並根據「時間距離」使用一個核函數(Kernel Function)(通常是高斯核 Gaussian Kernel 或有理二次核 Rational Quadratic Kernel)來分配權重。
  • 權重公式概念:

其中 h是頻寬 (Bandwidth),它決定了曲線的平滑程度。頻寬越大,曲線越平滑但反應越慢。

 

NW 包絡線由三條線組成:

  1. 中心回歸線: 透過 NW 核回歸計算出的平滑價格曲線。
  2. 上下軌道: 通常是中心線加上或減去「平均絕對偏差 (MAD)」或「平均真實範圍 (ATR)」的倍數。

這使得它在視覺上非常緊貼價格,且在識別極端超買/超賣區域時,比布林通道更具適應性,因為它能捕捉非線性的趨勢變化。

 

2.納達拉亞-沃森 vs. 布林通道

特性 布林通道 (Bollinger Bands) NW 包絡線 (NW Envelope)
數學基礎 標準差、簡單移動平均 核回歸 (非線性統計)
靈敏度 對波動率敏感,但有延遲 極其靈敏,能捕捉細微轉折
形狀 較為僵硬 非常流暢、有機的曲線
主要用途 波動率擠壓、趨勢突破 逆勢操作 (Mean Reversion)、波段頂部底部分析

3.XScript (XQ 語法) 實作參考

底下是AI寫的Sample code,我只修改了內建函數及變數的名稱,AI係使用迴圈來模擬高斯核的加權計算:

// 名稱:Nadaraya-Watson Envelope (簡化版)
// -----------------------------------------------------------
Input: h1(8, "Bandwidth 頻寬"), Mult(2, "Multiplier 倍數"), Window(50, "計算窗口");
Variable: i(0), weight(0), sumWeight(0), sumPrice(0), NW_Center(0), MAD(0);

// 1. 計算核回歸中心線
sumPrice = 0;
sumWeight = 0;

for i = 0 to Window begin
// 高斯核權重公式:exp(-(距離^2) / (2 * h^2))
weight = Expvalue(-1 * Power(i, 2) / (2 * Power(h1, 2)));
sumPrice = sumPrice + Close[i] * weight;
sumWeight = sumWeight + weight;
end;

if sumWeight <> 0 then NW_Center = sumPrice / sumWeight;

// 2. 計算平均絕對偏差 (MAD) 作為軌道寬度
MAD = Average(AbsValue(Close - NW_Center), Window);

// 3. 繪製結果
Plot1(NW_Center, "NW 中心線");
Plot2(NW_Center + Mult * MAD, "上軌");
Plot3(NW_Center - Mult * MAD, "下軌");

根據這個腳本計算出來的指標,它的呈現方式如下圖

Ultimate Smoother 指標

John Ehlers 發表的 Ultimate Smoother 是技術分析領域的一項重大突破,特別是在處理「平滑度(Smoothness)」與「延遲(Lag)」這對宿敵時。

傳統指標如移動平均線(MA)若要更平滑,勢必會產生嚴重的滯後;反之,若要反應靈敏,則會出現大量假訊號。Ultimate Smoother 利用**數位訊號處理(DSP)**中的濾波器理論,完美調和了這兩者。

 

1. 核心數學原理

Ultimate Smoother 的基礎在於一個雙極(Two-pole)低通濾波器,但與傳統 Butterworth 或 Chebyshev 濾波器不同,它引入了特定的係數調整,使其在時間域(Time Domain)內具有極佳的響應。

其演算法邏輯大致如下(以簡化形式表示):

  1. 計算預滑價格: 對價格進行初步處理(通常使用 $ (Price + Price[1]) / 2  )。
  2. 濾波係數計算: 根據設定的週期(Period),利用三角函數計算出濾波係數 a1 與 b1。
  3. 遞歸運算: 這是該指標最強大的地方,它結合了「當前價格」、「前一根指標值」以及「前兩根指標值」進行非線性加權:

2. Ultimate Smoother 的三大優勢

  • 真正的「零延遲」感: 在趨勢反轉時,它能比同週期的 EMA(指數移動平均線)快上 2-3 根 K 線反應,這在極短線交易中至關重要。
  • 消除鋸齒波動: 在價格橫盤整理時,Ultimate Smoother 的曲線極其平滑,能有效過濾掉細微的市場噪音,避免交易者被反覆「洗盤(Whipsaw)」。
  • 極低超調(Overshoot): 許多號稱零延遲的指標(如某些 DEMA 或 HMA)在價格劇烈變動後會產生嚴重的超調,導致曲線脫離現實,但 Ultimate Smoother 能保持極佳的價格貼合度。

3. 與傳統指標的直觀對比

特性 移動平均線 (SMA/EMA) 赫爾均線 (HMA) Ultimate Smoother
延遲度 極低
平滑度 高(但易變形) 極高且穩定
假訊號
數學基礎 算術平均 加權平方根 DSP 濾波器理論

4. 實戰應用場景

  1. 趨勢過濾器: 由於其極致的平滑性,當 Ultimate Smoother 斜率向上時,僅執行多單;斜率向下時,僅執行空單。
  2. 交叉訊號: 將短週期的 Ultimate Smoother 與長週期的搭配,產生的交叉點比傳統均線交叉更早且更準確。
  3. 動態停損位: 因為它緊貼價格且不輕易受雜訊干擾,適合作為追蹤止損(Trailing Stop)的參考線。

以下是這個指標的Xscript腳本

// 指標名稱:Ultimate Smoother (John Ehlers, 2024)
// 適用對象:趨勢判斷、雜訊過濾
// -----------------------------------------------------------

Input: Length(20, "計算週期");
Variable: a1(0), c1(0), c2(0), c3(0), US(0);

// 1. 初始化係數 (僅在第一根 K 線或長度改變時計算以優化運算效率)
// 使用雙極低通濾波器原理
Once begin
// 使用 1.414 (根號2) 作為臨界阻尼係數
a1 = ExpValue(-1.414 * 3.14159 / Length);
c2 = 2 * a1 * Cos(1.414 * 3.14159 / Length); // XScript Cos 使用弧度制
c3 = -a1 * a1;
c1 = (1 + c2 - c3) / 4;
end;

// 2. 核心遞歸演算法
// 該指標結合了目前價格、歷史價格以及指標的前兩期數值
if CurrentBar < 4 then
US = Close // 初始緩衝
else
US = (1 - c1) * Close
+ (2 * c1 - c2) * Close[1]
- (c1 + c3) * Close[2]
+ c2 * US[1]
+ c3 * US[2];

// 3. 繪圖輸出
Plot1(US, "Ultimate Smoother");


下圖是美光搭配這個腳本的圖

大家可以再進一步改成策略雷達腳本

 

Chaikin Money Flow (CMF,蔡金資金流量)指標

介紹過TSV 與 MFI 之後,類似概念設計出來的技術指標,還有Chaikin Money Flow (CMF,蔡金資金流量) ,把這三個指標一起應用,可以對個股目前的漲跌量能關係,有更清楚的理解。

CMF 由技術分析大師 Marc Chaikin 研發,它的核心哲學是:「收盤價相對於當天震盪區間的位置,結合成交量,最能揭示機構法人的真實意圖。」 它是判斷「吸貨(Accumulation)」與「派發(Distribution)」最精確的量化工具之一。

 

一、 CMF 的計算邏輯 (The Formula)

CMF 的計算分為三個步驟,其核心在於 「貨幣流量乘數 (Money Flow Multiplier)」

1. 貨幣流量乘數 (Money Flow Multiplier, MFM)

這是 CMF 的靈魂,它觀察收盤價落在當天高低點的哪個位置:

MFM ={(Close – Low) – (High – Close)}/{High – Low)

  • 如果收在最高點,乘數為 +1
  • 如果收在最低點,乘數為 -1
  • 如果收在正中間,乘數為 0

2. 貨幣流量金額 (Money Flow Volume, MFV)

將乘數乘以當天的成交量:

MFV = MFM * Volume 

3. CMF 指數

通常取 21 天(約一個月週期)的 MFV 總和除以成交量總和:

 

二、 CMF 的三大核心解讀

對於研究型散戶來說,CMF 提供了比 RSI 更具支撐性的「證據」:

1. 零軸穿越 (The Zero Line)

  • CMF > 0: 代表市場處於**累積(吸貨)**狀態。持續在 0 以上代表機構買盤穩定,這是多頭趨勢的健康標誌。
  • CMF < 0: 代表市場處於**派發(出貨)**狀態。代表資金正在撤離,即便股價沒跌,也要警惕「拉高出貨」。

2. 指標強度 (Magnitude)

  • 高於 +0.20: 極強的多頭動能,代表資金高度集中流入。
  • 低於 -0.20: 極強的空頭壓力。

3. 背離訊號 (Divergence) —— 最重要的領先警示

  • 多頭背離: 股價創新低,但 CMF 卻在零軸附近攀升或轉正。這通常代表大戶在低檔「接刀」,是中線底部的重要訊號。
  • 空頭背離: 股價創新高,但 CMF 卻在走低甚至轉負。這代表股價上漲是靠散戶情緒(Low Quality Volume),大戶已先行撤離。

以下是這個指標的腳本

// CMF 指標實作
input: Length(21, "計算週期");
variable: MFM(0), MFV(0), CMF_Value(0);

// 計算貨幣流量乘數
if High <> Low then 
MFM = ((Close - Low) - (High - Close)) / (High - Low)
else 
MFM = 0;

MFV = MFM * Volume;

// 計算 CMF
if Summation(Volume, Length) <> 0 then
CMF_Value = Summation(MFV, Length) / Summation(Volume, Length)
else
CMF_Value = 0;

Plot1(CMF_Value, "CMF");
Plot2(0, "零軸");

 

下面是幾張個股跟CMF指標的對照圖,供大家參考