
在程式交易或技術分析中,「布林通道 (Bollinger Bands)」絕對是大家最熟悉的指標之一。但是,XQ 內建的布林通道預設僅使用 SMA (簡單移動平均線) 作為中軌,對於反應速度要求較高的短線交易者來說,有時會覺得訊號稍微「延遲」了一點。
「如果能把中軌換成 EMA (指數移動平均),是不是能更快抓到行情發動點?」為了解決這個需求,我重新撰寫了一個「自訂均線型態布林通道」的 XS 指標腳本。這支腳本不只能讓你自由切換 SMA/EMA,還能針對上、下軌設定不同的寬度,適應各種波動特性的商品!
1. 指標概述 (Overview)
自訂均線型態布林通道 (Custom Bollinger Bands) 是一個強化版的布林通道指標。傳統的布林通道強制使用簡單移動平均線 (SMA) 作為中軌,而本指標允許使用者根據交易策略的需求,自由切換使用 SMA (簡單移動平均) 或 EMA (指數移動平均) 作為計算基準。
透過此指標,交易者可以觀察股價的波動範圍、支撐壓力位置,並利用不同均線的特性來捕捉趨勢變化的敏感度。


2. 核心功能與特色
- 雙模式切換:內建 SMA 與 EMA 兩種中軌演算法。SMA 模式:標準布林通道用法,穩定性高,例如用於日線。EMA 模式:加權近期價格,對行情轉折反應較快,例如用於5分K線。
- 彈性通道寬度:可分別設定上通道與下通道的標準差倍數(例如:上通道設 2.5 倍,下通道設 2 倍),適應不同波動特性的商品。
- 樣本標準差:採用統計學上的「樣本標準差 (Sample Standard Deviation)」計算,符合統計學規範。
3. 參數設定說明 (Input Parameters)
在使用此指標時,您可以在設定介面調整以下參數:

4. 圖表閱讀指南 (Interpretation)
指標載入後,畫面上會呈現三條線,代表意義如下:
- 上軌道線 (UB, Plot1):顏色建議:通常設定為紅色或暖色系。意義:視為股價的「壓力線」或「超買區」。當股價沿著上軌運行時,代表強勢多頭格局。
- 中軌道線 (BBandMA, Plot2):顏色建議:通常設定為黃色或顯著的實線。意義:多空分水嶺。SMA 模式下,代表過去 N 天的平均成本。EMA 模式下,代表加權後的趨勢方向。
- 下軌道線 (LB, Plot3):顏色建議:通常設定為綠色或冷色系。意義:視為股價的「支撐線」或「超賣區」。
5. 實戰應用場景
場景 A:趨勢順勢交易 (Trend Following)
- 設定:建議將 _MAType 設為 2 (EMA)。
- 觀察:由於 EMA 對近期價格反應較快,當價格突破上軌且中軌向上彎曲時,EMA 模式能比傳統 SMA 更早確認趨勢發動。
場景 B:箱型震盪操作 (Range Trading)
- 設定:建議將 _MAType 設為 1 (SMA),保持標準布林通道特性。
- 觀察:在盤整期間,股價觸碰上軌回落做空,觸碰下軌反彈做多。SMA 較平滑,能過濾掉部分假突破訊號。
場景 C:通道擠壓 (Squeeze)
- 觀察:當上軌與下軌距離顯著縮窄(標準差變小)時,代表市場進入低波動盤整期,隨後往往伴隨劇烈的行情爆發(開口擴大)。
6. 安裝步驟
- 開啟 XQ 全球贏家或 XQ 操盤高手。
- 進入 「XScript 編輯器」。
- 點選 「指標」 -> 「新增」。
- 將腳本名稱命名為 「自訂均線型態布林通道」。
- 將提供的程式碼完整複製並貼上。
- 點選 「編譯」 確認無誤。
- 回到技術分析圖表,按右鍵選擇 「加入指標」 並選取此腳本即可。
專家建議 (Expert Tips)
如果您發現個股波動極大,經常刺穿上下軌,建議將 _UpperBand 與 _LowerBand 調整為 2.5 或 3,以過濾雜訊。若用於當沖極短線 (如 1 分 K),嘗試將 _MAType 設為 EMA (2) 並配合 _Length 設為 10 或 15,反應會更靈敏。
// ============================================
// 腳本名稱: 自訂均線型態布林通道 (Custom Bollinger Bands)
// 核心目的: 在圖表上繪製可選擇 SMA/EMA 中軌的布林通道指標
// 策略邏輯:
// 1. 使用者可選擇 SMA (1) 或 EMA (2) 作為中軌
// 2. 計算標準差 (樣本標準差 N-1)
// 3. 上軌 = 中軌 + 標準差 × 上通道倍數
// 4. 下軌 = 中軌 - 標準差 × 下通道倍數
// 日期: 2025/12/21
// ============================================
input:
_Length(20, "MA的天數"), // 移動平均線的計算期數
_UpperBand(2, "上通道標準差倍數"), // 上軌道線的標準差倍數
_LowerBand(2, "下通道標準差倍數"), // 下軌道線的標準差倍數
_MAType(1, "移動平均線類型", inputkind:=dict(["SMA", 1], ["EMA", 2])); // 選擇移動平均線的類型 (1: SMA, 2: EMA)
variable:
_mid(0), // 中軌道線數值
_up(0), // 上軌道線數值
_down(0), // 下軌道線數值
_StdDevVal(0); // 標準差計算結果
// ------------------------------
// 1. 計算中軌道線 (MA)
// ------------------------------
if _MAType = 1 then
begin
// 使用 SMA
_mid = Average(Close, _Length);
end
else if _MAType = 2 then
begin
// 使用 EMA
_mid = XAverage(Close, _Length);
end
else
begin
// 防呆:預設回退到 SMA
_mid = Average(Close, _Length);
end;
// ------------------------------
// 2. 計算標準差 (Standard Deviation)
// ------------------------------
// 使用樣本標準差 (除以 N-1)
_StdDevVal = StandardDev(Close, _Length, 2);
// ------------------------------
// 3. 計算上軌道線與下軌道線
// ------------------------------
_up = _mid + (_StdDevVal * _UpperBand);
_down = _mid - (_StdDevVal * _LowerBand);
// ------------------------------
// 4. 繪製布林通道
// ------------------------------
plot1(_up, "UB"); // 上軌道線
plot2(_mid, "BBandMA"); // 中軌
plot3(_down, "LB"); // 下軌道線
// ============================================
// 程式碼結束
// ============================================

















