Strategy Quant X 內建指標 : ATR Percent Rank (真實波幅百分位排名)

看穿波動冷脹熱縮的統計學尺規!

在系統化量化交易與策略開發的過程中,如何精確判定市場是處於「死氣沉沉的休眠期」、還是「過度延伸的暴走行情」,是決定策略期望值的勝負手。傳統的平均真實波幅(ATR)或 ATRPercent 雖然能提供即時的波動點數,但卻缺乏時間維度上的「自我相對對比」。換句話說,ATR 值為 50 點,在平靜的夏季可能算是極高波動,但在動盪的財報季可能只算是低波。為了解決這一大盲區,Strategy Quant X (SQX) 引進了極具統計學智慧的技術指標 — ATR Percent Rank (真實波幅百分位排名指標,簡稱 ATRPR)。它利用滑動時間窗口,將當前波動度與歷史波動度進行滾動排序,精確輸出 0 至 100 的相對百分位排名。本文將為您徹底解構其底層 Java 算法、核心參數與自適應波動率突破的實戰交易應用。

一、ATR Percent Rank (ATRPR) 指標概述

真實波幅百分位排名指標 (ATR Percent Rank,常簡稱為 ATRPR) 是一種專門用於量化市場波動率相對位階的高階統計技術指標。它完美解決了傳統 ATR 在不同市場季節與市況轉換時「強弱無客觀標準」的物理缺陷。其核心設計思想是:將當前 K 線計算出的即時 ATR 數值,與過去指定回顧期(例如過去 120 天)內每日的歷史 ATR 數值進行逐一比對,統計當前 ATR 成功超越歷史值的次數比例,進而輸出 0% 到 100% 的百分位排名(Percentile Rank)。這套指標不預測趨勢的方向,而是為市場提供了一個絕對公平、不受絕對報價基數干擾的「波動不穩定性計量器」,是捕捉波動擠壓突破(Volatility Squeeze)與波動耗盡的核心利器。

在 Strategy Quant X (SQX) 中:真實波幅百分位排名指標被定義為一個 BuildingBlock 條件區塊,其模組名稱為 (ATRPR) ATR Percent Rank。其幫助提示簡明地標注為:"ATRPercentRank help text";在 UI 顯示格式為:ATR Percent Rank(@Chart@#ATRPeriod#,#Lenght#)[#Shift#],返回類型被定義為 ReturnTypes.Number,代表它是一個疊加在副圖窗口獨立運行的百分位震盪指標。

二、ATR Percent Rank 指標的組成部分與參數

ATR Percent Rank 指標在副圖獨立窗口輸出單一機率震盪曲線,其計算與對應依賴於雙週期參數與以下核心組件:

組件類型 組件名稱 預設值 底層物理定義與技術說明
主要輸出 (Output) Value (百分位排名曲線) 波動於 0 到 100 固定範圍內的統計學百分比排名曲線,代表當期波動度在歷史窗口中的強弱位階。
核心參數 (Parameter) Input (數據源) 收盤價 計算 ATR 所基於的原始價格序列,在 SQX 預設使用收盤價(Input.Close)。
核心參數 (Parameter) ATRPeriod (ATR 週期) 12 用於計算底層基礎 ATR 絕對波動點數的 K 線根數。SQX 預設值為 12。
核心參數 (Parameter) Lenght (回顧窗口長度) 120 用於進行歷史遍歷比對的滑動窗口長度(K 線根數)。(備註:Java 原始代碼中變數命名存在拼寫誤差為 Lenght,策略調用時需對準此命名參數,常規概念即為 Length 窗口)。

運作機制與底層計算原理(純文字 HTML 版)

在 SQX 的底層 Java 代碼實現中,系統會首先自動適應不同的回測與運行引擎。在 `OnBarUpdate()` 中,會先判定當前的執行環境:如果是 TradeStation 引擎則執行 `onBarUpdateTS()`,若是 MT4/5 引擎則執行 `onBarUpdateMT()`。兩大引擎的遍歷計數邏輯完全一致,計算步驟如下:

  • 第一步:計算當前 K 棒的基礎 ATR 絕對值
    • MT4/5 引擎: 調用 12 週期的 Indicators.MTATR,並將當前最新的 ATR 數值精確保留 5 位小數點:
      atrValue = MTATR(Input, 12) 的當前值(保留 5 位小數)
    • TradeStation 引擎: 直接調用 12 週期的 Indicators.ATR
      atrValue = ATR(Input, 12) 的當前值
  • 第二步:進行滾動窗口歷史遍歷比對 (Loop Comparison)
    • 初始化計數器 atrRank = 0
    • 套用 for 循環,從歷史第 1 根前 K 線(i = 1)一直遍歷比對到設定的窗口長度 Lenght(預設 120 根 K 線)。
    • 在循環中,逐一讀取歷史每一天的 ATR 數值,若當前最新的 atrValue 「嚴格大於」該天歷史 ATR 數值,則將計數器加 1:
      若 當期 atrValue > 歷史第 i 天 ATR 值:atrRank = atrRank + 1
  • 第三步:百分比標準化生成最終 Value
    • 將累計超越歷史的次數(atrRank),除以總回顧窗口長度(Lenght),並乘以 100.0d 進行百分比歸一化:
      ATRPercentRank = (atrRank / Lenght) * 100
    • 此最終 Value 點被寫入輸出序列,代表當期波動度在過去 120 天中的百分位排名(Percentile Rank)。

三、ATR Percent Rank (ATRPR) 指標的數值範圍 (有界性)

ATR Percent Rank 是一套在數學上極度嚴格、完全標準化的「有界震盪系統」:

  • 嚴格的 0 到 100 物理區間
    • 由於比對計數最大不可能超越窗口長度(atrRank <= Lenght),根據公式,ATRPR 的輸出數值被死死鎖定在 0 到 100 之間。在 SQX 程式碼中 min=0, max=100,步長為 0.1。
    • 0% 極小值: 代表當前最新波動度是過去 120 天以來的「絕對最低點」(當前 ATR 小於或等於歷史上的每一天),暗示市場進入了極度壓縮的冬眠期。
    • 100% 極大值: 代表當前最新波動度是過去 120 天以來的「絕對最高點」(當前 ATR 嚴格大於歷史上的每一天),暗示市場波動爆發達到了歷史沸點。
  • 中心平衡線中點
    • 多空波動對半平衡的中點為 50 (middleValue=50)。當 ATRPR 處於 50 附近時,說明當期的波動度剛好處於過去 120 天波動率的中位數(Median)水平。

四、ATR Percent Rank (ATRPR) 指標的解讀與應用

因為 ATR Percent Rank 剔除了價格基數與市場季節性的干擾,將波動度完全相對化、排序化。在實戰交易與高階量化開發中,它具有以下核心應用特點:

  • 1. 精確捕捉波動擠壓 (Volatility Squeeze) 蓄勢破位起跑點
    • 這是 ATRPR 在量化突破系統中最高勝率、最核心的經典用法:
    • Squeeze 壓縮狀態判定(ATRPR < 20% 或 15%): 當指標線持續下滑並沉降至 20% 以下,說明當前的價格波動度已經萎縮到了過去 120 天(約半年交易日)中最平靜的 20% 區間。市場波動嚴重「窒息」,多空雙方高度控盤蓄勢。
    • 波動爆發進場點: 當價格突破平台邊界(如唐奇安通道或布林帶),且原本沉寂在低檔的 ATRPR 指標線「突然強勢掉頭勾頭向上、衝破 20% 門檻」時,代表市場波動率正式啟動「擴張(Expansion)」。此時順勢建立突破多單或突破空單,其爆發力與推進速率往往最強。
  • 2. 識別波動性耗盡 (Volatility Exhaustion) 的高風險追高防線
    • 在單邊行情推進時,波動率不會無限放大。
    • 波動耗盡狀態(ATRPR > 80% 或 90%): 當指標飆升並高懸於 80% 以上,說明當前的波動速度已經達到了過去 120 天中最狂熱的 20% 頂端(屬於统计學上的小機率極端偏離)。
    • 這暗示多空能量已被高度宣洩,市場進入過熱或恐慌耗盡期。此時,強烈警告**切勿盲目追高或在低檔恐慌殺跌**,因為市場隨時面臨波動率降速與行情劇烈回撤(均值回歸)的風險。
  • 3. 跨資產交易策略的波動率「門檻過濾器」
    • 多數突破策略在波動率不足的盤整市中,會因隨機鋸齒而遭受連續的假突破止損。
    • 客觀過濾: 交易者可以在 SQX 策略代碼中加入統一的統計學過濾防線。例如限制:「唯有當 ATRPR 大於 30% 時,才允許執行技術指標的突破進場指令;低於 30% 一律過濾不開倉」,藉此在源頭直接屏蔽掉低效無效的垃圾時間,大幅保護帳戶本金。
  • 4. 核心參數 (Lenght) 的設定指南與影響
    • 短窗口設定(如 10 至 20 週期): 指標對近期價格波動的相對位階極其敏感,能極快對最新兩週的波幅做出百分位反應,適合高頻短線策略,但容易因單一突發突發噪聲而產生誤判。
    • 長窗口設定(如 120 或 200 週期,預設 120): 計算基於更長期的歷史數據,能極其客觀、穩定地呈現市場在長線大格局下的「波動率常態(Baseline Volatility)」。曲線極其流暢,其給出的 Squeeze 壓縮與 Expansion 擴張信號具備極高的統計學信賴度,是中長線策略的黃金定海神針。

📌 本文核心修煉要點

  • 統計學滾動排序計數算法
    • ATR Percent Rank 採用滾動窗口歷史遍歷比對,統計當前 ATR 絕對值高於歷史值的頻率。
    • 這套百分位排序(Percentile Rank)算法將無單位的波動率,完美轉化為 0 至 100 之間極具統計學意義的強弱位階。
  • Squeeze 與 Expansion 的黃金感應器
    • 指標在低位(< 20%)沉寂代表波動度極致壓縮,是新趨勢爆發前的黃金冬眠期。
    • 指標快速向上突破 20% 水平,代表市場進入波動擴張期,為破位順勢突破系統提供了最客觀的「破位確認綠燈」。
  • SQX 策略開發配置優化
    • 在 SQX 自動生成與篩選策略時,強烈建議將 (ATRPR) ATR Percent Rank 作為「趨勢突破過濾器」或「波動自適應條件」。
    • 例如設定經典突破邏輯:「當價格向上突破唐奇安通道上軌,且當 (ATRPR) ATR Percent Rank 自 20% 以下低檔轉向上穿 20% 時執行突破多單」,這能幫您精確過濾掉 85% 以上在橫盤整理期發生的假突破磨損,優化出回撤極小、夏普比率(Sharpe Ratio)與資金效率極佳的完美回測曲線。