康納相對強弱指數

By | 2026-03-31

康納相對強弱指數 (Connors RSI, CRSI) 在量化交易界享有極高的聲譽,被譽為「均值回歸 (Mean Reversion) 的勝率之王」。傳統的 RSI 常常在 30 附近來回洗盤,讓摸底的投資人受盡折磨;而 CRSI 的發明者 Larry Connors 透過疊加三個不同維度的因子,將「超賣」定義的更精細,努力創造出極高勝率的左側買點。

 

一、 核心數學意義與三大動能支柱

CRSI 的數值範圍與傳統 RSI 一樣是 0 到 100,但它的底層公式是由三個完全獨立的動能元件取算術平均而成:

這三個元件分別負責測量市場的短、中、長線極端情緒:

  1. 第一支柱:價格的極短線動能 RSI price
    • 計算方式: 對收盤價取 3 週期的 RSI。
    • 意義: 傳統 RSI 用 14 天,反應太慢。3 天的 RSI 非常神經質,只要股價連續跌個兩三天,數值就會迅速掉到 10 以下,這能第一時間反映極短線的價格恐慌。
  2. 第二支柱:連漲連跌的心理折磨 RSI price
    • 計算方式: 這是 CRSI 最天才的設計。首先,把 K 線轉化為「連勝/連敗」的整數序列。
      • 今天收紅,數值為 +1;明天繼續收紅,數值為 +2。
      • 今天收黑,數值為 -1;明天繼續收黑,數值為 -2。
      • 平盤為 0。
        接著,對這組「整數序列」取 2 週期的 RSI。
    • 意義: 跌 5 天每天跌 1%,跟 1 天暴跌 5%,在心理上的折磨是不同的。連跌 5 天會讓散戶的絕望感達到頂峰。這個元件量化了「連跌天數帶來的恐懼」。
  3. 第三支柱:相對跌幅的歷史位階 PercentRank
    • 計算方式: 將今天的「單日漲跌幅」拿去跟過去 100 天的單日漲跌幅做比較,看看今天的表現贏過過去 100 天裡多少百分比的日子。
    • 意義: 這是一個橫向的相對強弱比較。如果今天跌了 3%,且在過去 100 天內從來沒有單日跌這麼重過,這個數值就會趨近於 0。這代表今天的拋售力道是近期極為罕見的極端事件。

二、 實戰應用指南 (波段操作戰略)

CRSI 不是用來順勢追高的,它是純粹的逆勢抄底(Pullback Trading)」武器。 

  • 大環境濾網 (極重要): 均值回歸的前提是「趨勢向上」。因此,在掃描 CRSI 之前,必須確保股價處於長期多頭(例如:收盤價 > 200 日均線)。不要在空頭市場抄底,那不叫均值回歸,叫接刀。
  • 極端買點觸發: 當股價在 200 日均線之上,且 CRSI < 10(甚至設定嚴格一點為 5)。這代表一檔長期向上的好股票,剛經歷了罕見的短線暴跌與連續收黑。此時進場,隔日或幾日內反彈的機率極高。
  • 靈活停利: 均值回歸的獲利時間極短,通常不超過 5 天。當股價反彈,收盤價突破 5 日均線,或是 CRSI 回升至 70 以上,即刻獲利了結。

 

三、 XScript 完整指標腳本

在 XScript 中實作 CRSI,最複雜的地方在於處理連跌序列與計算百分位排名。以下是 Gemini寫的腳本,我最後為了判讀方便,把CRSI再做了5日平均

// 指標名稱:Connors RSI (CRSI 康納相對強弱指數)
// 理論基礎:Larry Connors
// -----------------------------------------------------------
Input:
RSI_Len(5, "價格 RSI 週期"),
Streak_Len(10, "連勝/連敗 RSI 週期"),
Rank_Len(100, "百分位排名週期");

Variable:
RSI_Price(0),
Streak(0), RSI_Streak(0),
TodayRet(0), HistoryRet(0), RankCount(0), PctRank(0), i(0),
CRSI(0);

// 1. 計算第一支柱:極短線價格 RSI
RSI_Price = RSI(Close, RSI_Len);

// 2. 計算第二支柱:連勝/連敗序列的 RSI
// 記錄連續漲跌天數
if Close > Close[1] then begin
if Streak < 0 then Streak = 1 else Streak = Streak + 1;
end else if Close < Close[1] then begin
if Streak > 0 then Streak = -1 else Streak = Streak - 1;
end else begin
Streak = 0;
end;

// 對連勝連敗序列計算 RSI (XQ 的 RSI 函數可接受數值變數)
RSI_Streak = RSI(Streak, Streak_Len);

// 3. 計算第三支柱:單日漲跌幅的歷史百分位 (PercentRank)
// 確保有足夠的 K 線數據
if CurrentBar > Rank_Len then begin
TodayRet = (Close - Close[1]) / Close[1];
RankCount = 0;

// 迴圈比對過去 N 天的單日報酬率
for i = 1 to Rank_Len - 1 begin
HistoryRet = (Close[i] - Close[i+1]) / Close[i+1];
if HistoryRet < TodayRet then
RankCount = RankCount + 1;
end;

// 算出百分比 (0 ~ 100)
PctRank = (RankCount / Rank_Len) * 100;
end else begin
PctRank = 50; // 數據不足時給予中性值
end;

// 4. 計算最終 CRSI (三者算術平均)
CRSI = (RSI_Price + RSI_Streak + PctRank) / 3;
value1=average(CRSI,5);

// 5. 繪圖輸出
Plot1(value1, "Connors RSI");
Plot2(30, "極度超賣(黃金買點)");

下圖是這個指標對應台積電的圖