情緒區間震盪指標 (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 塊錢,在情緒的權重上是完全一樣的。
運算步驟拆解:
-
情緒定位 (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)");
畫出來的參考圖

