SZO情緒指數

By | 2026-03-05

情緒區間震盪指標 (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)");

畫出來的參考圖