Author Archives: 發財橘子

SZO情緒指數

情緒區間震盪指標 (Sentiment Zone Oscillator, SZO) 是由 Walid Khalil 於 2012 年發表在《Technical Analysis of Stocks & Commodities》雜誌上的指標。這是一個「行為金融學(Behavioral Finance)」 的工具。傳統的 RSI 或 MACD 都是以「價格變動的幅度(Magnitude)」為計算基礎;但 SZO 徹底摒棄了幅度,它只在乎 「時間與群眾情緒的持續性(Persistence)」 。 因為人性只要漲就會更貪婪,只要跌就會更恐懼。

以下為您詳細拆解 SZO 的數學意義、實戰應用,以及無縫接軌系統的 XScript 腳本。


1. 核心數學意義與邏輯:純粹的群眾投票機

SZO 的底層邏輯非常簡單粗暴:今天只要收紅(上漲),就算多頭贏了一票(+1);只要收黑(下跌),就算空頭贏了一票(-1)。漲跌 1 塊錢跟漲跌 100 塊錢,在情緒的權重上是完全一樣的。

運算步驟拆解:

  1. 情緒定位 (Sentiment Position, SP):

  • 三重指數平滑 (TEMA):

    單純加總每日的 +1 與 -1 會產生太多鋸齒狀雜訊。SZO 採用了極度滑順且延遲極低的三重指數移動平均 (TEMA) 來處理這組數列。

  • 標準化 (Normalization):

    將平滑後的值乘以 100,使其波動範圍完美鎖定在 $+100$$-100$ 之間。

2. 實戰應用指南 (PM 產品視角)

對於您的平台用戶而言,SZO 是一支非常純粹的**「情緒溫度計」**。它的曲線平滑,極度適合用來過濾假訊號與捕捉情緒的極端反轉。

  • 尋找極端情緒 (Euphoria vs. Despair):

    • SZO 通常以 +50-50 作為極端警戒線(這等同於過去 14 天內,有超過 75% 的天數是上漲或下跌的)。

    • 極度貪婪 (+50 以上): 市場處於非理性的狂熱,散戶瘋狂追高(FOMO)。此時隨時可能發生多殺多的踩踏,是右側波段停利的極佳時機。

    • 極度恐懼 (-50 以下): 市場連續多日陰跌,散戶絕望停損。這是賣壓即將枯竭的訊號,適合左側尋找買點

  • 情緒背離 (Sentiment Divergence): 這是 SZO 最具威力的用法。當股價創出新高,但 SZO 卻未能突破前高,這代表**「雖然價格還在漲,但願意每天用真金白銀投下 +1 票的人變少了」**。這種情緒退潮往往領先於價格的崩盤。


3. XScript (XQ 語法) 完整指標腳本

// 指標名稱:Sentiment Zone Oscillator (SZO 情緒區間震盪指標)
// 理論基礎:Walid Khalil (行為金融學)
// -----------------------------------------------------------
Input: Length(14, "計算週期");
Variable: SP(0), EMA1(0), EMA2(0), EMA3(0), SZO(0);

// 1. 計算每日情緒定位 (Sentiment Position)
if Close > Close[1] then
SP = 1
else if Close < Close[1] then
SP = -1
else
SP = 0;

// 2. 計算三重指數移動平均 (VALUE1) 進行極致平滑
// XQ 的 XAverage 函數即為 EMA (Exponential Moving Average)
EMA1 = XAverage(SP, Length);
EMA2 = XAverage(EMA1, Length);
EMA3 = XAverage(EMA2, Length);

// VALUE1 核心公式:3 * EMA1 - 3 * EMA2 + EMA3
VALUE1 = (3 * EMA1) - (3 * EMA2) + EMA3;

// 3. 計算 SZO 最終數值 (標準化至 -100 ~ +100)
SZO = 100 * VALUE1;

// 4. 繪圖輸出
Plot1(SZO, "SZO 情緒指數");
Plot2(0, "零軸 (多空分水嶺)");

// 繪製極端情緒警戒線
Plot3(50, "極度貪婪區 (+50)");
Plot4(-50, "極度恐懼區 (-50)");

畫出來的參考圖

WVIXF

個股合成恐慌指數 (Williams VIX Fix, WVIXF) 是由交易大師 Larry Williams 發明的傑作。傳統的 VIX 指數只能依賴大盤選擇權的隱含波動率來計算,這導致我們無法測量「單一個股」的恐慌程度。WVIXF 的誕生,就是為了讓任何一檔股票、ETF 甚至加密貨幣,都能擁有自己的專屬恐慌指數。

近幾年,TradingView 社群將這個老指標進行了「現代化改良(疊加布林通道)」,使其成為目前抓取個股「極度恐懼(底部)」最精準的工具之一。

1. 核心數學意義與現代化改良

WVIXF 的底層邏輯非常直觀:當前股價距離近期的最高點跌得越深,市場就越恐慌。

原始公式計算

  • 意義: 計算當前低點相較於近期最高收盤價的「最大回撤百分比」。指標數值越高,代表跌幅越深、恐慌越劇烈。

 

現代改良版:疊加動態布林通道 (Bollinger Bands)

原始的 WVIXF 有一個缺陷:每檔股票的股性不同,牛皮股跌 10% 已經是極度恐慌,但妖股跌 10% 只是日常波動。因此,現代量化分析不再使用固定的絕對數值,而是在 WVIXF 曲線之上,疊加一組布林通道的「上軌」

  • 計算方式: 針對 WVIXF 數值,計算其 20 日移動平均線(MA),並加上 2 倍的標準差(Standard Deviation)。
  • 改良意義: 這條布林上軌成為了「動態的極端恐慌閾值」。只有當今天的恐慌程度,超越了該檔股票近期的常態波動範圍,才被認定為真實的「散戶怕到想要賣股票」。

2. 實戰應用指南

這個指標的視覺呈現通常是柱狀圖(Histogram)。它的判讀邏輯與一般指標完全相反:指標衝得越高,代表底部越近。

  • 左側抄底(抓取極端轉折):
    當 WVIXF 的柱狀體向上突破布林上軌時,代表市場出現了極端的拋售高潮(Selling Climax)。這通常伴隨著散戶的停損斷頭賣壓。當柱狀體隨後跌回布林上軌之下的那一刻,代表恐慌情緒開始降溫,這正是極高勝率的左側買點。
  • 過濾正常回檔:
    在多頭趨勢中,股價難免回檔。如果股價下跌,但 WVIXF 的柱狀體離布林上軌還很遠,代表這只是主力正常的洗盤,市場並未陷入恐慌,這時候輕易摸底容易接刀。
  • 大盤與個股的共振:
    若標普500的真實 VIX 飆高,同時個股的 WVIXF 也突破上軌,這種「總體與個體的雙重恐慌」,代表個股的下跌跟外部整體氣氛息息相關,而不是個股的基本面有什麼變化,這往往是長線佈局的機會。

3. XScript的對應腳本

// 指標名稱:個股恐慌指數 (Williams VIX Fix - 現代改良版)
// -----------------------------------------------------------
Input: 
Period(22, "尋找最高價週期"), 
BBLength(20, "布林通道週期"), 
BBMult(2.0, "標準差倍數");

Variable: 
HighestClose(0), WVIXF(0), 
Wvixf_MA(0), Wvixf_Std(0), Wvixf_Upper(0);

// 1. 找出過去 N 天的最高收盤價
HighestClose = Highest(Close, Period);

// 2. 計算 VIX Fix 核心公式 (當下低點距離最高收盤價的回撤百分比)
if HighestClose > 0 then
WVIXF = ((HighestClose - Low) / HighestClose) * 100
else
WVIXF = 0;

// 3. 建立動態極端閾值 (計算 WVIXF 的布林上軌)
Wvixf_MA = Average(WVIXF, BBLength);
Wvixf_Std = StandardDev(WVIXF, BBLength, 1);
Wvixf_Upper = Wvixf_MA + (BBMult * Wvixf_Std);

// 4. 繪圖輸出
// 建議在 XQ 系統中,將 Plot1 樣式設定為「柱狀圖」
Plot1(WVIXF, "WVIXF 恐慌指數");
Plot2(Wvixf_Upper, "極度恐慌閾值(上軌)");

 

畫出來的指標如下

 

 

 

斯坦利·德魯肯米勒 (Stanley F. Druckenmiller)的投資哲學

Fomo研究院昨天寫了一篇文章如連結,這文章是摩根士丹利對傳奇投資人 Stan Druckenmiller 進行了一場深度訪談的內容。我請Gemini把這位大神的投資哲學寫成Xscript的選股腳本,今天我們就來聊一聊這位大神,以及我們要如何透過AI的協助,複製這位大神的投資哲學到台股的投資中。

Druckenmiller是個猛人,他原本在密西根大學唸經濟學博士,唸一唸發現學術界的經濟學模型過於僵化、不具備市場實戰價值而決定退學,直接投入金融業。

1977年他以去Pittsburgh National Bank當實習生,僅花一年時間,便因展現出卓越的商業直覺與分析能力,25 歲就被拔擢為股票研究部主管。

他在這個職務做了四年,1981年創辦了屬於自己的避險基金Duquesne Capital Management

這個基金以 100 萬美元創立 ,最高管理資產規模達 120 億美元。 30 年期間,締造了平均年化報酬率約 30% 的驚人紀錄,且從未有過任何虧損的年度(包含 2000年網路泡沬及2008 年金融海嘯期間仍維持正報酬)。

他最知名的戰役是,他曾從1988到2000年兼任過索羅斯量子基金的操盤手,在1992年重倉放空英鎊,為量子基金一天就賺了10億美金。

2010年之後,他就把錢都退完給客戶,目前專注於管理自有資金,持續活躍於全球市場,近年在 AI 浪潮(如 Nvidia)與生技醫療等領域亦有精準的佈局。

這樣一位如神一般存在的投資人,他的投資邏輯必有值得我們學習的地方

Fomo研究院這一篇寫的很好,內容請大家點連結進去看,基於版權我不好多寫

不過我可以在這篇文章提的這五點之外,另外分享幾點

一,永遠聚焦 18 到 24 個月後的未來

Druckenmiller 從不根據今天的財報或明天的新聞來交易,他認為現在的數據早就被市場定價了。 他的工作是想像「18 到 24 個月後,這家公司或這個世界的經濟樣貌會是什麼?」然後在現在尋找能夠引發那種改變的催化劑。他買的不是公司現在的價值,而是買它兩年後的變化率。

他的這個觀點我超級認同

二,將技術分析作為「測溫計」與「計時器」

他不迷信簡單的圖表型態,但他極度依賴技術分析來驗證基本面觀點。 如果他的基本面研究顯示某檔股票極佳,但圖表卻呈現不斷破底的空頭走勢,他會選擇觀望,認為「市場一定看到了我沒看到的東西」。他利用技術分析來感受市場的情緒、尋找絕佳的進場時機(Timing),並設定嚴格的停損點。

看完了他的投資哲學之後,我想要跟大家分享我如何用AI+XQ來複製他的投資哲學

第一步:  我把Fomo研究院的這篇文章貼到 gemini上,然後gemini就幫我整理出這篇文章的重點,然後gemini問我要不要進一步探討如何利用程式(例如 XScript 或 Python)將這些哲學轉化為具體的選股濾網嗎?例如,我們可以試著構思一段邏輯,專門篩選出「本益比處於歷史低位,但近兩季研發費用卻異常暴增」的潛在轉型股。

我說  yes,gemini就幫我生成了一份xscript的選股腳本

第二步,我把這腳本貼到XQ的 Xscript編輯器去編譯

然後就出現下面的錯誤訊息

第三步: 修正腳本

我看了一下,發現他的腳本中用了GetField(“營業研發費用”, “Q”); 但Xscript的研發費用欄位,並沒有營業兩個字,所以我就直接把這兩個字去掉,重新編譯,就成功了

成功後的腳本如下

// 腳本名稱:轉型迷霧淘金 (低本益比 + 研發爆增)
// 資料頻率:日

// 參數設定
input: PE_Length(750, "本益比歷史區間(天,預設約3年)");
input: PE_Threshold(1.2, "歷史低位容忍倍數(1.2=距最低點20%內)");
input: RD_Growth(30, "近兩季研發費用年增率門檻(%)");

// --- 條件一:本益比處於歷史低位 ---
value1 = GetField("本益比", "D");
value2 = Lowest(value1[1], PE_Length); // 過去N天的最低本益比

// 確保本益比為正值(排除虧損),且目前本益比接近歷史最低點
condition1 = value1 > 0 and value1 <= (value2 * PE_Threshold);


// --- 條件二:近兩季研發費用異常暴增 ---
// 取得研發費用 (以季為頻率)
value3 = GetField("研發費用", "Q"); // 最近一季
value4 = GetField("研發費用", "Q")[1]; // 前一季
value5 = GetField("研發費用", "Q")[4]; // 去年同期 (最近一季)
value6 = GetField("研發費用", "Q")[5]; // 去年同期 (前一季)

condition2 = false;
// 確保去年同期的研發費用大於0,避免分母為零的運算錯誤
if (value5 + value6) > 0 then begin
// 計算近兩季研發費用總和的年成長率
value7 = ((value3 + value4) - (value5 + value6)) / (value5 + value6) * 100;

// 若成長率突破門檻,則觸發條件
if value7 >= RD_Growth then condition2 = true;
end;


// --- 綜合篩選與輸出 ---
if condition1 and condition2 then begin
ret = 1;
outputField1(value1, "目前本益比");
outputField2(value7, "近兩季研發年增率(%)");
outputField3(value3 + value4, "近兩季研發總額(百萬)");
end;

我把它拿來回測了一下,持有天數直接設為120天,我用的是普通股扣除KY,金融股及營建股

回測報告如下

我把這個選股加到每日自動執行的清單中,就可以知道有那一檔台股符合Druckenmiller的選股標準,接下來我就把這檔股票放到自選股,用其他技術分析指標來研判是否出現進場訊號

 

以上是我用AI+XQ的協作過程,先前介紹的技術指標,蠻多也是先請AI幫我寫腳本,寫完再放到Xscript編輯器裡去編譯,然後再根據錯誤訊息去修改,以我目前的心得,大部份的錯誤都是getfield的欄位名稱跟XS有小小落差,或是畫圖的語法,XS是直接用UI來設,不支援直接用語法寫,但AI對於寫程式的邏輯倒是很少有出過錯,甚至比我們人寫還精準

昨天有網友在問我寫的這些指標是怎麼做出來的,謹以此篇作例子,也請大家可以自己試看看。

 

 

VSA (Volume Spread Analysis, 量價分析) 中的 「無供應 (No Supply)」

VSA 是理查·奈(Richard Ney)與湯姆·威廉斯(Tom Williams)將威科夫理論現代化後的最強分支。它將威科夫的「努力與結果(Effort vs. Result)」法則直接寫成 K 線的辨識邏輯。

無供應 (No Supply) / 測試 (Test): 發生在下跌區間。K 線收跌,但波幅縮小,成交量極度萎縮。這代表市場上的浮動籌碼已經洗乾淨,賣壓枯竭,是威科夫理論中極佳的買點。

深入探討 VSA (Volume Spread Analysis, 量價分析) 中的 「無供應 (No Supply)」,是將威科夫理論從「抽象哲學」落地為「具體交易訊號」的關鍵一步。

在傳統技術分析中,散戶常常看見下跌就恐慌,或是迷信「放量才是買點」。然而,VSA 的核心理念是:主力的建倉往往是悄無聲息的;當市場上真正沒有人願意倒貨時,只要一點點買盤,股價就能輕鬆推升。

以下為您詳細拆解「無供應」的底層意義、嚴謹的定義方式,以及如何將其轉化為高勝率的實戰策略。

1. 核心意義:看透賣壓的枯竭

「無供應 (No Supply)」K 線的出現,代表市場上的浮動籌碼 (Floating Supply) 已經被清洗乾淨

  • 心理學視角: 想像一檔股票經歷了回檔洗盤,散戶該停損的都停損了,套牢的也已經麻木不再看盤。這時,主力會進行「測試 (Test)」,他們刻意不掛買單,任由價格自然滑落。
  • 主力行為特徵: 如果價格滑落時,成交量極度萎縮,且價格跌不下去(實體與波幅很小),這就給了主力一個明確的綠燈——「市場上已經沒有潛在的拋售壓力(無供應)了,現在拉抬股價阻力最小,成本最低。」

2. 計算方式與嚴謹定義 (XScript 邏輯拆解)

VSA 不是一個有著絕對數學公式的指標(如 RSI 的 0 到 100 ),它是一套 「條件特徵比對」 的邏輯。要精準定義一根「無供應」K 線,必須同時滿足以下三個嚴格條件:

  1. 條件 A:價格收跌 (Down Bar)
    • 定義: 當根 K 線的收盤價,必須低於前一根 K 線的收盤價(Close < Close[1])。
    • 意義: 這是一次向下的測試,用來逼迫潛在的賣壓出籠。
  2. 條件 B:波幅狹窄 (Narrow Spread)
    • 定義: 當根 K 線的最高價減最低價(High – Low),必須明顯小於過去一段時間(例如 20 天)的平均波幅。
    • 意義: 如果賣壓很重,價格會被輕易摜破,波幅會放大。波幅狹窄代表「跌不下去」,下方有隱形的限價買盤托底。
  3. 條件 C:成交量極度萎縮 (Ultra-Low Volume)
    • 定義: 當根 K 線的成交量,必須低於前兩根 K 線的成交量(Volume < Volume[1] And Volume < Volume[2]),甚至低於近期的平均成交量。
    • 意義: 這是最重要的靈魂。下跌卻沒有成交量,代表主力與散戶都沒有意願在這個價位拋售。

根據這樣的想法,寫出來的腳本如下

// 指標/選股名稱:VSA 威科夫無供應 (No Supply) 偵測
// 邏輯:尋找賣壓枯竭的 K 線
// -----------------------------------------------------------
Variable: Spread(0), AvgSpread(0);
Variable: IsDownBar(False), IsNarrow(False), IsLowVol(False);
Variable: IsNoSupply(False);

// 1. 定義波幅 (Spread)
Spread = High - Low;
AvgSpread = Average(Spread, 20); // 過去 20 天的平均波幅

// 2. 條件 A:這是一根下跌的 K 線 (或收在相對低點)
IsDownBar = Close < Close[1];

// 3. 條件 B:波幅必須小於近期平均 (窄幅震盪,代表沒有強烈拋售動能)
if Spread > 0 then
IsNarrow = Spread < (AvgSpread * 0.8)
else
IsNarrow = False;

// 4. 條件 C:成交量必須「顯著萎縮」(通常定義為低於前兩根 K 線)
IsLowVol = Volume < Volume[1] and Volume < Volume[2];

// 5. 綜合判斷:觸發威科夫「無供應」訊號
IsNoSupply = IsDownBar and IsNarrow and IsLowVol;

// 6. 繪圖與視覺化提示
if IsNoSupply then begin
// 在 K 線下方畫一個向上的綠色箭頭或標記
Plot1(Low * 0.97, "No Supply");

end;

3. 實戰用法與操作紀律

單獨看一根「無供應」K 線是危險的,「背景脈絡 (Context)」決定了這根 K 線的含金量。

實戰場景一:多頭趨勢中的回檔 (最強買點)

  • 背景: 股票處於明確的上升趨勢(例如在 20MA 或 60MA 之上)。
  • 觸發: 股價漲多拉回,在均線或前波支撐區附近,連續出現「無供應」K 線。
  • 行動: 這代表主力的洗盤結束,隨時準備發動下一波主升段。
  • 確認機制 (極重要): VSA 的鐵律是 「無供應需要被確認」。出現無供應訊號後,必須等待下一根 K 線收漲 (Up Bar) ,才能正式進場做多。
  • 停損設定: 設在無供應 K 線的最低點下方一點。因為如果這真的是無供應,主力絕不允許價格再跌破這個測試低點。

實戰場景二:底部盤整區的「彈簧效應 (Spring)」前兆

  • 背景: 經歷長期下跌後,進入長達數個月的橫盤區間(威科夫的 Phase B)。
  • 觸發: 股價慢慢向下滑落,逼近區間底部的支撐線,此時成交量極度萎縮,波幅變小(無供應)。
  • 行動: 這是主力在底部「最後測試」籌碼穩定度的跡象。這時進場,買在起漲點的機率極高。

實戰場景三:空頭趨勢中的無供應 (無效訊號 / 誘多)

  • 背景: 股票處於明確的下跌趨勢,均線蓋頭。
  • 觸發: 出現無供應 K 線。
  • 意義:不代表主力要買進!這只代表「暫時沒人賣」,但因為上方套牢賣壓太重,缺乏主動買盤的推升,股價很快會因為一點點賣單而繼續破底。(此處絕對不可做多)

 可以參考下面這張圖

 

將 VSA 邏輯指標化,對於消除 「主觀恐懼」具有極大價值。 

 

WaveTrend Oscillator

波浪趨勢震盪指標 (WaveTrend Oscillator, WT) 是近年在 TradingView 等新世代社群中被奉為「抓轉折神器」的指標,最初由開發者 LazyBear 發表後迅速爆紅。

WT 完美解決了傳統 KD(隨機指標)與 RSI 最讓散戶痛苦的問題:鋸齒狀的劇烈跳動與頻繁的假交叉。

以下為您深度拆解 WT 的數學意義、實戰應用,以及 XScript 腳本。

1. 核心數學意義與邏輯:極致平滑的 CCI 變體

WT 的底層邏輯其實是源自於商品通道指數 (Commodity Channel Index, CCI),但它加上了非常精巧的雙重指數平滑 (Double EMA Smoothing) 機制,硬生生將原本暴躁的數據,馴化成如海浪般起伏的平滑曲線。

運算步驟拆解:

  1. 典型價格 (Typical Price): 不單看收盤價,而是取 (最高價 + 最低價 + 收盤價) / 3,這能更真實地反映當日多空交戰的平均成本。
  2. 計算絕對偏差的 EMA: 先算出典型價格的指數移動平均 (EMA),再計算價格偏離這條均線的「絕對距離」,並對這個距離再做一次 EMA。這等於量化了「波動的厚度」。
  3. 常態化 (Normalization): 將價格的偏離程度除以「波動厚度 x 0.015」(這是源自 CCI 的經典常數,能將 70% 到 80% 的數值收斂在 +100 到 -100 之間)。
  4. 終極平滑: 對上述算出的數值再做一次長週期的 EMA 得到主線 WT1,接著對 WT1 做 4 週期的簡單均線得到訊號線 WT2

 

// 指標名稱:WaveTrend Oscillator (WT 波浪趨勢指標)
// 理論基礎:LazyBear
// -----------------------------------------------------------
Input:
ChannelLen(10, "通道計算週期(n1)"),
AverageLen(21, "平滑計算週期(n2)");

Variable:
ap(0), esa(0), d(0), ci(0),
wt1(0), wt2(0);

// 1. 計算典型價格 (Typical Price)
ap = (High + Low + Close) / 3;

// 2. 計算典型價格的指數移動平均 (EMA)
esa = XAverage(ap, ChannelLen);

// 3. 計算絕對偏差的 EMA (量化波動厚度)
d = XAverage(AbsValue(ap - esa), ChannelLen);

// 4. 計算通道指數 (常規化處理)
// 乘以 0.015 是為了將絕大多數數值壓縮到 -100 ~ +100 之間
if d > 0 then
ci = (ap - esa) / (0.015 * d)
else
ci = 0;

// 5. 計算 WT1 (主線) 與 WT2 (訊號線)
wt1 = XAverage(ci, AverageLen);
wt2 = Average(wt1, 4); // 訊號線通常固定取 4 週期 SMA

// 6. 繪圖輸出
Plot1(wt1, "WT1 (主線)");
Plot2(wt2, "WT2 (訊號線)");

// 繪製極值參考線
Plot3(60, "超買線");
Plot4(53, "警戒天花板"); // 輔助觀察線
Plot5(-60, "超賣線");
Plot6(-53, "警戒地板"); // 輔助觀察線
Plot7(0, "多空分水嶺");

 

 

2. 實戰應用指南 (PM 產品視角)

WT 的曲線異常圓滑,這在產品設計與使用者體驗(UX)上有著極大的優勢。用戶不會再因為盤中的小波動而感到焦慮。

  • 精準的深水區交叉 (極值反轉):
    WT 的超買超賣線通常設定在 +60-60(更極端為 +80/-80)。

    • 買進: 當 WT1 與 WT2 雙雙跌破 -60,隨後 WT1 在深水區由下往上穿過 WT2(黃金交叉),這通常是極佳的波段起漲點。
    • 賣出: 當兩線進入 +60 以上的高空區,並發生死亡交叉,代表波段推升力道耗盡。
  • 視覺化頂底背離 (Divergence):
    這是 WT 最強大的功能。因為曲線沒有雜訊,用戶可以非常輕易地用肉眼看出:股價創了新低,但 WT 的交叉點卻比上一次的交叉點還要高(底背離)。

 

 

QQE

定量定性估計指標 (Quantitative Qualitative Estimation, QQE) 是近年在 TradingView 與量化社群中被譽為「趨勢跟隨與過濾雜訊神作」的現代指標。

它完美解決了我們前面討論過的痛點:傳統震盪指標(如 RSI、KD)在強趨勢中會「鈍化」,導致投資人過早逆勢進場而受傷。

以下為您深度拆解 QQE 的意義、實戰應用,以及如何在 XQ 中用 XScript 實作。

1. 核心數學意義與邏輯:動態的超買超賣線

傳統 RSI 的致命傷在於使用「固定的天花板與地板」(例如 70 與 30)。但在極強的牛市中,RSI 可以連續幾個月維持在 80 以上。

QQE 的核心創舉是:為 RSI 裝上了一個基於「波動率」的動態追蹤停損線 (Trailing Line)。

它的計算邏輯分為三個層次:

  1. 平滑化 RSI: 先計算標準 RSI,再對其取指數移動平均 (EMA),這過濾了單日暴漲暴跌的毛刺。
  2. 計算 RSI 的真實波幅 (ATR of RSI): 這是 QQE 最天才的地方。它不計算「股價」的 ATR,而是計算「RSI 數值本身」的變動絕對值,並對其進行兩次 EMA 平滑。這量化了**「動能的波動率」**。
  3. 乘數與動態追蹤線: 將上述算出的動能波動率乘以一個費波南希常數(通常是 4.236),加減到平滑 RSI 上,形成一條動態的快慢追蹤線。

2.對應指標腳本

// 指標名稱:QQE (Quantitative Qualitative Estimation)
// -----------------------------------------------------------
Input: 
RSILen(14, "RSI週期"), 
SF(5, "RSI平滑週期(EMA)"), 
QQE_Factor(4.236, "波動率乘數(通常為4.236)");

Variable: vRSI(0), SmoothRSI(0), AbsDelta(0);
Variable: AtrRSI(0), SmoothAtrRSI(0), Darvas(0);
Variable: TrLevel(0); // 動態追蹤線

// 1. 計算 RSI 並進行平滑處理
vRSI = RSI(Close, RSILen);
SmoothRSI = XAverage(vRSI, SF);

// 2. 計算 RSI 的變動絕對值 (量化動能的波動)
if CurrentBar > 1 then
AbsDelta = AbsValue(SmoothRSI - SmoothRSI[1])
else
AbsDelta = 0;

// 3. 對波動率進行雙重平滑 (標準設定為 27 期 EMA)
AtrRSI = XAverage(AbsDelta, 27);
SmoothAtrRSI = XAverage(AtrRSI, 27);

// 4. 計算動態區間 (Darvas Box 原理)
Darvas = SmoothAtrRSI * QQE_Factor;

// 5. 計算動態追蹤停損線 (Trailing Level)
// 邏輯:根據 RSI 與前一期追蹤線的相對位置,決定追蹤線是要收斂還是翻轉
if CurrentBar = 1 then begin
TrLevel = SmoothRSI;
end else begin
if SmoothRSI < TrLevel[1] and SmoothRSI[1] < TrLevel[1] then
// 空頭延續:追蹤線只能向下壓,不能往上退
TrLevel = MinList(TrLevel[1], SmoothRSI + Darvas)
else if SmoothRSI > TrLevel[1] and SmoothRSI[1] > TrLevel[1] then
// 多頭延續:追蹤線只能向上墊,不能往下退 (保護獲利)
TrLevel = MaxList(TrLevel[1], SmoothRSI - Darvas)
else if SmoothRSI > TrLevel[1] then
// 剛由空翻多:重新設定下緣支撐
TrLevel = SmoothRSI - Darvas
else
// 剛由多翻空:重新設定上緣壓力
TrLevel = SmoothRSI + Darvas;
end;

// 6. 繪圖輸出
Plot1(SmoothRSI, "平滑 RSI");
Plot2(TrLevel, "動態追蹤線");
Plot3(50, "多空強弱分界");

 

3. 實戰應用指南 

 QQE 是一個非常適合做成 「波段自動交易策略」或是「趨勢確診儀表板」 的核心元件,因為它的訊號非常客觀,完全沒有模糊空間。

  • 過濾假突破 (趨勢確認):
    當股價突破新高,但 QQE 的「平滑 RSI 線」未能向上突破「動態追蹤線」,甚至發生背離,這就是強烈的假突破警告。系統可以自動發出警示:「動能未獲波動率確認,慎防誘多」。
  • 黃金交叉與死亡交叉 (精準買賣點):
    • 買進訊號: 平滑 RSI 線由下往上穿過動態追蹤線(且最好發生在 50 中軸附近或之上),代表多頭動能正式超越了近期的雜訊波動。
    • 賣出/停損訊號: 平滑 RSI 線由上往下穿過動態追蹤線。因為追蹤線是動態計算的,在強勢上漲中,它會自動向上收斂,成為非常完美的「移動停利點」。

逆費雪轉換 RSI

逆費雪轉換 RSI (Inverse Fisher Transform on RSI, IFT-RSI) 是技術分析大師 John Ehlers 針對傳統震盪指標「鈍化」與「假訊號」痛點,所提出的一項工程級別的解決方案。

傳統的 RSI 在盤整時經常於 40 到 60 之間無意義地跳動,而在強勢趨勢中又會長時間卡在 80 以上,導致投資人提早逆勢操作而受傷。IFT-RSI 完美解決了這個問題,它將模糊的指標轉化為 「非黑即白」的數位訊號 。

1. 核心數學意義與邏輯

IFT-RSI 的底層邏輯是將機率統計學中的特徵轉換應用於金融時間序列:

  1. 數值平移與壓縮: 首先將傳統 RSI(範圍 0 到 100)減去 50,使其圍繞「零軸」波動,並乘以 0.1,將其數值壓縮到 -5 到 +5 之間。
  2. 平滑過濾: 對壓縮後的數值進行加權移動平均(WMA),過濾掉極短線的微小波動。

逆費雪轉換: 將平滑後的數值  代入逆費雪公式:

2.對應的XQ腳本

// 指標名稱:IFT-RSI (Inverse Fisher Transform on RSI)
// 理論基礎:John Ehlers
// -----------------------------------------------------------
Input: RSILen(5, "RSI 計算週期"), WMA_Len(9, "WMA 平滑週期");
Variable: vRSI(0), ScaledRSI(0), SmoothRSI(0), vxt(0), IFT(0);

// 1. 計算基礎 RSI
vRSI = RSI(Close, RSILen);

// 2. 數值平移與壓縮
// 將 0~100 的 RSI 平移至零軸,並壓縮至大約 -5 到 +5 的區間
ScaledRSI = 0.1 * (vRSI - 50);

// 3. 雜訊平滑處理
// Ehlers 建議使用加權移動平均 (WMA) 來保留近期的權重同時過濾雜訊
SmoothRSI = WMA(ScaledRSI, WMA_Len);

// 4. 逆費雪轉換核心公式
// 公式: (e^(2x) - 1) / (e^(2x) + 1)
vxt = ExpValue(2 * SmoothRSI);

if (vxt + 1) <> 0 then
IFT = (vxt - 1) / (vxt + 1)
else
IFT = 0;

// 5. 繪圖輸出
Plot1(IFT, "IFT-RSI");

// 繪製極端參考線
Plot2(0.5, "超買反轉線");
Plot3(-0.5, "超賣反轉線");
Plot4(0, "零軸");

 

 

可以將 IFT-RSI 設計成一個 「極端反轉警示 (Reversal Alert)」 模組。因為它的訊號非常明確 ,演算法在做全市場掃描時,不會像傳統 RSI 一樣產生大量模糊的假警報,這能大幅降低程式推播垃圾訊號給用戶的機率。

韋斯波段成交量 (Weis Wave Volume)

韋斯波段成交量 (Weis Wave Volume) 是當代威科夫理論(Wyckoff Method)權威 David Weis 基於百年經典理論所開發出的現代化指標。

什麼是威科夫理論呢?

威科夫理論(Wyckoff Method)是由理查·威科夫(Richard D. Wyckoff)在 20 世紀初提出的一套技術分析與市場行為理論。它不是單純看技術指標的金叉或死叉,而是透過「價格」與「成交量」的互動,來推測市場背後大資金(主力)的動向

以下是威科夫理論的核心架構:

一、 三大基本定律 (The Three Laws)

威科夫理論建立在三個客觀的市場運作法則之上:

  1. 供需定律 (Law of Supply and Demand): 決定價格的唯一因素。當需求大於供給,價格上漲;供給大於需求,價格下跌。在圖表上,這通常透過觀察大陽線/大陰線配合成交量的放大來確認。

  2. 因果定律 (Law of Cause and Effect): 強調市場的趨勢不會憑空產生,需要經過一段時間的「醞釀」。例如,橫盤震盪的時間越長(因),未來突破後的漲跌幅就越大(果)。這在量化上可以用來計算「盤整區間的長度」與「潛在目標價」的關係。

  3. 努力與結果定律 (Law of Effort vs. Result): 這是威科夫理論中最精妙的一環,主要透過「成交量(努力)」和「價格變動(結果)」是否背離來判斷。例如,成交量爆出天量(極大的努力),但價格卻無法突破前高甚至收黑(沒有結果),這通常暗示主力在逢高出貨。

二、 主力思維:綜合人 (The Composite Man)

威科夫建議投資人將市場上所有的買賣行為,想像成是由一個單一實體——「綜合人」(即我們常說的主力或莊家)在操作。理解了綜合人的動向,就能順勢而為。綜合人會在低檔耐心「吸籌」,拉高後在散戶瘋狂時「派發」。

三、 市場的四大週期 (The Price Cycle)

威科夫將市場價格走勢分為四個不斷循環的階段,這也是在開發選股模組或看盤儀表板時,非常適合用來做標的分類的架構:

  • 1. 吸籌區 (Accumulation): 綜合人在市場悲觀時,於底部區間悄悄買入。此階段價格通常在一個箱型區間內震盪,特徵是下跌時量縮,上漲時量增。

  • 2. 拉升期 (Markup): 吸籌完畢,籌碼穩定後,價格突破箱型頂部,進入明確的上升趨勢。這是順勢交易者獲利最豐厚的階段。

  • 3. 派發區 (Distribution): 價格來到高檔,好消息滿天飛,散戶湧入。綜合人開始將籌碼倒給散戶。特徵是價格波動加劇,且經常出現爆量但不漲的現象(努力與結果背離)。

  • 4. 下跌期 (Markdown): 綜合人出清籌碼後,需求枯竭,價格跌破盤整區間,進入漫長的下降趨勢。


Weis Wave volume 是怎麼實驗威科夫理論呢?

在傳統看盤介面中,我們習慣看「以時間為單位」的成交量(例如:日K線下方對應一根日成交量)。但這種時間切分往往會切斷主力的連續性動作。Weis Wave volume的核心革命在於:它徹底拋棄了時間,改以「價格波段(Price Wave)」來累積成交量。

這對於想要在籌碼分析功能上做出突破的軟體產品來說,是一個能帶來極大視覺震撼與實戰價值的工具。

1. Weis Wave Volume 的核心意義:看見「努力與結果」

Weis Wave 的運作邏輯類似於「轉折線(ZigZag)」。它會定義一個反轉門檻(例如價格回檔 1% 或 N 個檔位),只要價格沒有觸發反轉,它就會把這期間內所有的成交量全部加總,畫成一根不斷長高的巨型柱狀圖。

這種呈現方式完美契合了威科夫理論的三大定律之一:「努力與結果的關係 (Effort vs. Result)」

  • 努力 (Effort): 累積的成交量(Weis Wave 柱子的高度)。
  • 結果 (Result): 價格波段推進的幅度。

2. 實戰應用:如何判讀主力行為?

透過將波段成交量視覺化,投資人可以輕易抓出主力的「隱蔽行為」:

  • 情境 A:主力的「吸收 (Absorption)」底層建倉
    價格在底部震盪,雖然每波「下跌波」的價格都創新低,但你會發現下方的 Weis Wave 綠柱(下跌累積量)越來越小(賣壓枯竭)。接著,出現一個幅度不大、但 Weis Wave 紅柱(上漲累積量)異常巨大的波段。這代表主力正在底部用極大的成交量「吸收」散戶的停損單,是即將發動的強烈買訊。
  • 情境 B:主力的「派發 (Distribution)」高檔倒貨
    價格創出新高,但推升這波行情的 Weis Wave 紅柱,卻比前一個上漲波小很多(買盤縮手)。隨後的一個下跌波,價格跌幅不深,但 Weis Wave 綠柱卻創下近期新高。這代表高檔的供應量(Supply)已經完全壓過需求(Demand),主力正在出貨。
  • 情境 C:缺乏需求 (Lack of Demand) / 缺乏供應 (Lack of Supply)
    在一個健康的上升趨勢中,回檔波段(綠柱)的累積成交量應該要非常小,這在威科夫理論中稱為「缺乏供應」,是絕佳的順勢加碼點。

3. XScript (XQ 語法) 完整實作代碼

// 指標名稱:Weis Wave Volume (韋斯波段成交量)
// 邏輯:基於波段高低點反轉來累積成交量
// -----------------------------------------------------------
Input: RevPct(1.5, "波段反轉門檻(%)"); // 預設 1.5% 反轉才算新波段
Variable: Trend(1), vxt(0), WaveVol(0), RevAmt(0);

// 1. 初始狀態設定
if CurrentBar = 1 then begin
vxt = Close;
WaveVol = Volume;
Trend = 1; // 假設初始為上漲波 (1為上漲,-1為下跌)
end else begin

// 根據當前極值與使用者設定的百分比,計算反轉所需的絕對價差
RevAmt = vxt * (RevPct / 100);

// 2. 當前為「上漲波」的邏輯
if Trend = 1 then begin 
if High > vxt then vxt = High; // 不斷更新波段最高點

// 判斷是否觸發向下反轉 (從最高點回落超過設定門檻)
if (vxt - Low) >= RevAmt then begin 
Trend = -1; // 翻轉為下跌波
vxt = Low; // 紀錄新的極低點
WaveVol = Volume; // 重新開始累加下跌波成交量
end else begin
WaveVol = WaveVol + Volume; // 未反轉,持續累加上漲波成交量
end;
end 

// 3. 當前為「下跌波」的邏輯
else if Trend = -1 then begin 
if Low < vxt then vxt = Low; // 不斷更新波段最低點

// 判斷是否觸發向上反轉 (從最低點反彈超過設定門檻)
if (High - vxt) >= RevAmt then begin 
Trend = 1; // 翻轉為上漲波
vxt = High; // 紀錄新的極高點
WaveVol = Volume; // 重新開始累加上漲波成交量
end else begin
WaveVol = WaveVol + Volume; // 未反轉,持續累加下跌波成交量
end;
end;
end;

// 4. 繪圖輸出
if trend=1 then begin
Plot1(WaveVol, "Weis Wave");
noplot(2);
end else begin
noplot(1);
plot2(WaveVol, "Weis Wave");
end;

 

指標應用

將這套邏輯導入分析系統時,有一個非常關鍵的使用者體驗(UX)細節需要考量:反轉參數的自適應(Adaptive Parameter)

  • 痛點: 如果讓用戶自己輸入 RevPct (反轉百分比),看台積電時設 1% 可能剛好,但看小型飆股時 1% 會產生無數個碎波段,導致 Weis Wave 失去意義。
  • 解法建議: 在後端運算時,可以將固定的「百分比」改為「動態波動率」。例如,將反轉門檻設定為1.5  倍  ATR  (平均真實波幅)。這樣一來,不論是高波動的科技股,還是低波動的金融股,系統都能自動畫出最完美的波段成交量,大幅降低使用者的學習門檻。

 

成交量流量指標 (Volume Flow Indicator, VFI)  

成交量流量指標 (Volume Flow Indicator, VFI) 是由 Markos Katsanos 發表於《Technical Analysis of Stocks & Commodities》的重量級指標。

散戶最常犯的錯誤是看見某天爆出天量長紅就衝進去,或者看見長黑破底就恐慌停損,而這正是主力製造「假突破」與「假跌破」來進行派發與收集的慣用手法。

VFI 完美解決了傳統 OBV(能量潮指標)最大的缺陷:極易被單日異常天量扭曲

1. VFI 的核心設計邏輯與意義

VFI 將主力資金的「收集(Accumulation)」與「派發(Distribution)」行為進行了科學化的拆解,其演算法包含三個極具巧思的過濾機制:

  1. 過濾極端天量 (Volume Capping):
    如果某天發生錯帳、指數調整或極端的單一事件導致成交量暴增,傳統 OBV 會永久性地被這天的數據拉高或壓低。VFI 強制設定一個上限(通常是移動平均成交量的 2.5 倍),任何超過這個上限的量都會被截斷,確保指標反映的是「常態性的資金流動」,而非單日雜訊。
  2. 波動率截止閾值 (Cutoff Threshold):
    這是 VFI 最精華的設計。股價每天都有微幅漲跌,但這些微小的波動不代表主力在介入。VFI 引入了標準差(波動率)作為門檻,只有當當日價格變動大於「截止閾值」時,當天的成交量才被視為有效的多空能量。這有效過濾了盤整期的無效雜訊。
  3. 長週期視角:
    VFI 的標準預設週期是 130 天(約半年)。它不看短線的蠅頭小利,而是專注於掃描長期的資金底蘊。

2. 如何判讀主力的收集與派發?

  • 底部收集背離 (Bullish Divergence):
    股價在底部不斷破底,散戶因恐慌而拋售。但 VFI 曲線不僅沒有跟著破底,反而開始走平甚至向上抬升。這代表主力的限價買單正在底部默默「吸收」這些拋出的籌碼(過濾了雜訊與天量後,真實的淨現金流是正的)。
  • 頂部派發背離 (Bearish Divergence):
    股價屢創新高,市場氣氛熱烈。但 VFI 曲線卻未能創高,甚至提前跌破零軸。這強烈暗示推升股價的只是少數追高的散戶量,主力的大資金早已在逢高「倒貨」。
  • 零軸突破 (Zero-Line Crossover):
    VFI 是一項圍繞零軸波動的指標。當 VFI 由下往上強勢穿越零軸,並維持在上方,代表長期的籌碼流向已正式由空翻多。

 

3. XScript  語法

// 指標名稱:Volume Flow Indicator (VFI) - 成交量流量指標
// 作者:Markos Katsanos
// -----------------------------------------------------------
Input: 
Length(130, "計算週期(預設130)"), 
Coef(0.2, "截止係數(預設0.2)"), 
Smooth(3, "平滑週期(預設3)");

Variable: TP(0), PrevTP(0), MF(0), Cutoff(0);
Variable: Vave(0), Vmax(0), VC(0), DirVol(0);
Variable: SumDirVol(0), VFI_Raw(0), VFI(0);

// 1. 計算典型價格 (Typical Price)
// 結合最高、最低與收盤價,比單看收盤價更具代表性
TP = (High + Low + Close) / 3;

if CurrentBar = 1 then 
PrevTP = TP 
else 
PrevTP = TP[1];

// 價格變化量
MF = TP - PrevTP;

// 2. 計算波動率截止閾值 (Cutoff)
// 這裡使用 30 日收盤價的標準差乘以係數,作為過濾盤整雜訊的門檻
Cutoff = Coef * StandardDev(Close, 30, 1);

// 3. 異常成交量截斷 (Volume Cap)
// 限制單日最大成交量不得超過平均量的 2.5 倍
Vave = Average(Volume, Length);
Vmax = Vave * 2.5;
VC = MinList(Volume, Vmax);

// 4. 判斷有效資金流向 (Directional Volume)
// 只有當價格變動「大於」波動閾值時,才計入有效成交量
if MF > Cutoff then
DirVol = VC
else if MF < -1 * Cutoff then
DirVol = -1 * VC
else
DirVol = 0; // 變動太小,視為雜訊,資金流為 0

// 5. 計算 VFI 原始數值
// 將過去 N 天的有效資金加總,並除以平均量進行標準化
SumDirVol = Summation(DirVol, Length);

if Vave > 0 then
VFI_Raw = SumDirVol / Vave
else
VFI_Raw = 0;

// 6. 最終平滑處理
// 使用 XAverage (EMA) 讓曲線更平滑,便於判讀
VFI = XAverage(VFI_Raw, Smooth);

// 7. 繪圖與視覺化
Plot1(VFI, "VFI");
Plot2(0, "零軸");

// 顏色標示:零軸之上為紅(資金流入),之下為綠(資金流出)

 

 

4. 產品應用:將 VFI 轉化為核心競爭力

直接將這個指標的邏輯包裝進選股模組中,能創造出非常具備實戰價值的應用場景:

  • 建立「主力暗中吸籌榜」:
    設定選股腳本:股價創 60 日新低VFI > VFI[20] (VFI 逆勢上揚)VFI > 0
    這能直接幫一般投資人篩選出那些「表面上看起來很慘,但大戶正在瘋狂撿便宜」的標的,完美切合散戶喜歡「買在底部」的需求,同時又提供了量化數據的保護。
  • 中長線過濾器:
    在回測系統中,鼓勵用戶將 VFI > 0 作為任何突破策略的前提。這可以大幅度降低在派發期(主力拉高出貨)追高被套牢的機率。

VFI 是一個底蘊非常深厚的指標。將它與我們先前討論過的 KAMA (自適應均線) 結合,一個負責判斷資金底氣,一個負責找尋高效率的進場點,這會是一套非常強大的現代交易系統核心。

斬波指標(Choppiness Index, CHOP)

這是由澳洲商品交易員 E.W. Dreiss 開發的指標,它利用 「分形幾何 (Fractal Geometry)」 的概念來量化市場的「混亂程度」。

  • 核心原理: 它不是方向性指標(不告訴你漲跌),而是「狀態指標」。
    • 數值範圍 0~100。
    • CHOP > 61.8: 市場處於高度混亂(Choppy)、無序震盪。這時候任何突破都極可能是假的。
    • CHOP < 38.2: 市場處於強烈趨勢中(無論漲跌)。
  • 如何用它確認趨勢? 這是一個完美的「濾網 (Filter)」。
    • 當你的主策略(如 MACD 或 突破策略)發出買進訊號時,檢查 CHOP。
    • 如果 CHOP > 50,忽略訊號(視為假突破)。
    • 如果 CHOP < 50 且正在下降,大膽進場,因為趨勢正在形成且結構紮實。

1. 核心數學與公式詳解

CHOP 的數學基礎建立在混沌理論分形幾何 (Fractal Geometry) 之上。它利用價格的「幾何維度」來判斷市場效率。

  • 概念邏輯:
    • 高效率(趨勢): 價格走勢像一條直線,兩點之間距離最短。這時 CHOP 數值低。
    • 低效率(盤整): 價格走勢像一團亂麻,雖然走了很長的路(波動大),但最後沒移動多少距離。這時 CHOP 數值高。

計算公式

 

步驟拆解:

  1. 真實波幅 (True Range, TR): 計算每日的波動幅度(包含跳空缺口)。
  2. 路徑總長 (Sum of TR): 將過去 N 天的 TR 加總。這代表價格實際「走過的路」。
  3. 直線距離 (Range): 過去 N 天的最高價減去最低價  。這代表價格實際「產生的位移」。
  4. 對數比率: 計算「路徑總長」與「直線距離」的比率,並取對數(Logarithm)。這就是在計算分形維度。

2. 指標意義與數值解讀

CHOP 的數值範圍在 0 到 100 之間,與費波南希數列 (Fibonacci) 密切相關:

  • CHOP > 61.8 (盤整/混亂):
    • 意義: 市場處於高度混亂狀態,缺乏明確方向。
    • 能量觀點: 這通常代表「能量正在壓縮」,就像彈簧被壓縮一樣。數值越高,未來爆發大行情的機率越高。
    • 操作建議: 空手或進行區間操作(高出低進),切勿追價。
  • CHOP < 38.2 (趨勢/效率):
    • 意義: 市場處於強烈趨勢狀態(可能是暴漲或暴跌)。
    • 能量觀點: 能量正在釋放中。
    • 操作建議: 順勢操作。若持有部位,應續抱直到 CHOP 開始回升。
  • 38.2 ~ 61.8 (過渡區):
    • 市場正在轉換體制,訊號不明確。

3. XScript (XQ 語法) 完整腳本

// 指標名稱:Choppiness Index (CHOP)
// 作者:E.W. Dreiss
// -----------------------------------------------------------
Input: Length(14, "計算週期");
Variable: TR(0), SumTR(0);
Variable: MaxHi(0), MinLo(0), RangeLen(0);
Variable: CHOP(0);

// 1. 計算真實波幅 (True Range)
// XQ 內建 TrueRange 函數,若無則使用 MaxList 手動計算
TR = TrueRange;

// 2. 計算分子:路徑總長 (過去 N 天波動總和)
SumTR = Summation(TR, Length);

// 3. 計算分母:直線位移 (過去 N 天的高低區間)
MaxHi = Highest(High, Length);
MinLo = Lowest(Low, Length);
RangeLen = MaxHi - MinLo;

// 4. 核心公式計算
// 保護機制:避免分母為 0 (雖然極少發生)
if RangeLen > 0 and SumTR > 0 then begin
// Log 在 XQ 中是以 10 為底,這正是公式需要的
Value1 = SumTR / RangeLen;
CHOP = 100 * Log(Value1) / Log(Length);
end else begin
CHOP = 50; // 若無法計算,給予中性值
end;

// 5. 繪圖輸出
Plot1(CHOP, "Choppiness Index");

// 繪製參考線
Plot2(61.8, "盤整界線 (Fib 61.8)");
Plot3(38.2, "趨勢界線 (Fib 38.2)");

 

 

4. 實戰應用 

可以將 CHOP 定位為 「假突破過濾神器」 :

應用 A:突破策略的「保險絲」

  • 痛點: 用戶常抱怨:「看到布林通道開口打開就追進去,結果馬上反轉被套牢。」
  • 解法: 當您的策略 發出「突破訊號」時,背後先檢查 CHOP。
    • 情境 1: 價格突破新高,但 CHOP > 60
      • 判定: 這是假突破機率極高。
    • 情境 2: 價格突破新高,且 CHOP < 50 且正在下降
      • 判定: 趨勢確立。

應用 B:抓「起漲點」 (The Squeeze)

  • CHOP 最迷人的地方在於極值
  • 當 CHOP 數值飆升到 70 以上(極度壓縮),代表波動率低到極點。這就像是暴風雨前的寧靜。
  • 產品功能: 您可以設計一個選股條件:「尋找 CHOP > 70 的股票」。這份清單就是 「即將變盤(大漲或大跌)」 的潛力股清單,對於喜歡做波動率爆發的交易者來說非常有價值。

總結

附圖是跟KAMA一起對照的斬波指標,在確認趨勢這件事上,斬波指標的確有其獨到的地方

 

CHOP 是一個 「中立」 的指標,它不帶有多空偏見。這正是它強大的原因,因為它客觀地描述了市場的結構效率。