ATR 是什麼?ATR 指標在量化交易裡怎麼用?
一句話: ATR 指標(Average True Range,平均真實區間)衡量股票近期的真實波動幅度,ATR 計算是先取每日真實波動 TR(當日高低價之差、前日收盤到當日高點、前日收盤到當日低點三者取最大值),再做 N 日移動平均;肯特納通道(Keltner Channel,也作 Keltner 通道)則是以 EMA 為中軸、上下加減 ATR 倍數畫出的趨勢通道。常見入門設定是 EMA 20、ATR 10 或 20、上下軌 2 倍 ATR,本文範例用 EMA 10 搭配 2 倍 ATR。完整公式、Python 查詢與回測見下方各節。
ATR 指標(Average True Range,平均真實區間)是衡量一段期間內價格波動幅度的技術指標。它把每日的真實波動(True Range,TR)做移動平均後,得到一條反映「這檔股票最近震得有多大」的數值;股票 ATR 越高,代表近期價格波動越劇烈。ATR 只描述波動大小,不指出未來方向,所以要和價格趨勢、均線或通道一起解讀。在程式交易裡,ATR 常被用來設定停損停利距離、做 ATR 移動停利,或當作肯特納通道的頻寬。完整 ATR 公式、ATR 計算方法與 Python 查詢方式,見下方各節,也可參考程式交易是什麼的整體脈絡。
如果你的主要問題是「ATR 指標怎麼查」、「股票 ATR 怎麼排序」或「ATR / 收盤價波動率怎麼用在台股選股」,本文後半的應用段會逐一回答;如果想檢查 ATR 條件放進策略後的報酬與風險,可用 FinLab 回測工具 重新跑自己的股票池。
肯特納通道(Keltner Channel)是什麼?
肯特納通道(Keltner Channel)是以移動平均線為中軸、上下用 ATR 的倍數畫出通道的趨勢指標。中軸通常取 EMA,上下軌則是中軸加減某個倍數的 ATR,因此通道寬度會隨波動放大或收斂。它和布林通道的思路相近,差別在於肯特納通道用 ATR 當波動頻寬、用 EMA 當中線,相對標準差更穩定,較適合用來判斷趨勢與抱波段。本文後段會用 finlab 套件實際畫出通道並回測一個突破策略。

ATR 指標公式與計算方法
ATR 指標全名為 Average True Range,中文常稱平均真實區間或平均真實波幅。它要解決的是一般高低價區間看不到的跳空問題:今天最高價與最低價的距離很小,不代表昨天收盤到今天開盤之間沒有出現大幅跳空。
ATR 公式分兩步。第一步先算每天的 TR(True Range):
TRt = max(Ht - Lt, abs(Ht - Ct-1), abs(Lt - Ct-1))
第二步再把 TR 做 N 日移動平均,常見 ATR 計算可寫成:
ATR(n) = EMA(TR, n)
其中 Ht 是當日最高價,Lt 是當日最低價,Ct-1 是前一日收盤價。TR 會取下列三個數值中的最大值:
- 當日高低價之差額
- 前日收盤與當日最高價之差額
- 前日收盤與當日最低價之差額
第一點衡量當日 K 棒內的波動,第二與第三點把跳空缺口納入計算,避免只看單一 K 棒造成低估。用 EMA 計算 ATR,會把 TR 平滑成較穩定的波動讀數,讓指標不易被單日極端值拉得暴起暴落;和 SMA(簡單移動平均)相比,EMA 對近期波動的反應也較快。
| 查詢問題 | 可看的 ATR 數字 | 實務用法 |
|---|---|---|
| ATR 是什麼指標? | N 日平均真實波幅 | 衡量近期價格震幅,不判斷多空方向 |
| ATR 公式怎麼算? | 先算 TR,再做 EMA | 把高低價與跳空缺口一起納入 |
| 股票 ATR 怎麼看? | ATR 或 ATR / 收盤價 | 比較同一檔股票近期波動,跨股票比較建議用 NATR |
| ATR 停損停利怎麼設? | 1.5 至 3 倍 ATR 常見 | 依股性調整出場距離,需回測驗證 |
| 肯特納通道怎麼畫? | EMA 中軸 ± k × ATR | 用 ATR 當通道寬度,追蹤趨勢突破 |
ATR 如何解讀與使用
ATR 指標的重點在只反映波動性,而不指出未來價格方向。看股票 ATR 時,最好同時看價格趨勢,才能分辨波動放大是「上漲擴張」還是「下跌擴張」。
- ATR 指標和價格趨勢同步向上,代表向上波動加強,價格甩高機會變大。
- ATR 指標和價格趨勢同步向下,代表向下波動加強,價格急跌機會變大。
- ATR 指標向下,價格趨勢向上,代表向上動能漸弱,價格高檔震盪走向整理機會變大。
- ATR 指標向上,價格趨勢向下,代表向下動能漸弱,價格急跌後出現反彈整理機會變大。
多數看盤軟體或 ATR 指標 app 都會直接顯示 ATR 線,但如果想查詢全市場股票 ATR、批次計算 ATR 指標或把它放進選股條件,用 Python 會更方便。下面用 finlab 套件畫出 ATR 技術指標與肯特納通道。以近期飆股 6104 創惟為例,ATR 與股價不一定同向:
顯示程式碼
from finlab import data
from finlab.plot import plot_tw_stock_candles
from finlab.data import indicator
overlay_func={
'ema_10':indicator('EMA',timeperiod=10),
'keltner_up':indicator('EMA',timeperiod=10)+2*indicator('ATR',timeperiod=10),
'keltner_down':indicator('EMA',timeperiod=10)-2*indicator('ATR',timeperiod=10),
}
technical_func={
'atr_10':indicator('ATR',timeperiod=10),
'atr_20':indicator('ATR',timeperiod=20)
}
plot_tw_stock_candles('6104',overlay_func=overlay_func,technical_func=technical_func)股價波動率
ATR 主要應用在停損停利設定與結合通道理論來操作。每一檔股票的價格不同,直接比較 ATR 金額會失真,所以跨股票比較時通常會看 NATR,也就是 ATR / 收盤價 × 100%。高波動率股票代表劇烈震盪是常態,適合短線或當沖交易者追蹤;低波動率股票則較適合不想承受短線劇烈波動、或想找底部沉澱期的投資人。把 ATR 換算成波動率後拿來選股,就是跨股票比較時最常用的正規化做法。
6104短線波動率大,適合當作短線標的。
6263波動率小,不適合短線操作。
停損停利
停損停利改用 ATR 作為標準,能避免用固定的單一數值統一出場造成粗糙結果。例如整個策略統一用 10% 當停損點,但大波動股票上下震盪 20% 可能是常態,用 10% 停損容易被洗出場。若改成「進場價或近期高點 - 2 倍 ATR」這類 ATR 停損線,就能依每檔股票的波動性調整出場距離。
ATR 移動停利也是同一個概念:價格創高時停利線跟著上移,停利距離用 1.5 至 3 倍 ATR 表示。倍數越小,出場越快;倍數越大,越能抱波段,但回吐也會增加。停損停利參數仍需用回測驗證,因為不同頻率、持股數與股票池會讓結果差很多;用 ATR 控制波動與回吐後,是否真的換到更好的風險調整後報酬,可用夏普比率計算器實際比對不同停損距離下的夏普值與最大回撤。想進一步用回測數據檢驗停損距離該設多遠,可參考MAE / MFE 分析與停損停利設定;若想看 ATR 移動停損在台股月頻策略中的反面教材,可讀ATR 停損台股實測。
肯特納通道(Keltner Channel)設定
通道模型利用過去一段時間內的價格訊息,繪製出上下軌通道,藉此設定股價的相對高低界線;兩條通道線的距離也呈現股價的震盪幅度,震盪小時通道窄,震盪大時通道寬。通道模型將價格高低與波動幅度融合,能協助判斷市場趨勢,也能過濾均線系統中的假突破訊號。
肯特納通道設定通常有三個元素:中軸 EMA 週期、ATR 計算週期、ATR 倍數。常見入門設定是 EMA 20、ATR 10 或 20、上下軌 2 倍 ATR;本文範例使用 EMA 10 搭配 2 倍 ATR,反應較快,較偏短線。若你在券商軟體或 ATR 指標 app 查詢 Keltner Channel,看到的參數欄位通常也是這三個。
常見的通道模型為「布林通道」用股價的標準差當作波動頻寬,肯特納通道的概念也非常類似,主要差異在使用 ATR 當作波動頻寬,並使用 EMA 當中間線。
肯特納通道 V.S. 布林通道
2倍標準差的布林通道與2倍ATR的肯特納通道比較
由上面的比較圖可知,布林通道(bband)的標準差(std)收斂和發散快,數值跳動很大。剛往上突破、通道開始發散時,布林上軌是明顯訊號;但上軌不一定適合當趨勢線,因為只要股價動能稍弱,就很容易跌破上軌,不適合作為抱波段或中途切入的指標。
ATR 的波動相較標準差穩定,數值不會太急速跳動,更適合當作抱長波段的指標,減低大飆股太早被洗出場的可能。布林通道標準差的概念較適合做逆勢策略,抓價格過高或過低的反轉點。
兩者的結構差異整理如下(以下為概念性對照,實際績效仍需以自己的選股池回測為準):
| 比較項目 | 肯特納通道(Keltner Channel) | 布林通道(Bollinger Bands) |
|---|---|---|
| 中軸 | 多以 EMA 指數移動平均為中線 | 多以 SMA 簡單移動平均為中線 |
| 通道寬度依據 | ATR 平均真實區間(含跳空缺口) | 價格標準差(std) |
| 寬度變化特性 | 隨波動緩步擴張或收斂,數值較穩定 | 收斂與發散較快,數值跳動較大 |
| 對突破與抱波段 | 上軌相對穩定,較適合順勢追突破、抱長波段 | 上軌易因動能稍弱被跌破,較不利抱波段 |
| 對盤整的反應 | 盤整時通道平緩,假突破訊號相對少 | 盤整時帶寬快速收窄,常見作為逆勢反轉與過熱判斷 |
肯特納通道策略範例
策略條件
- 限定上市櫃普通股股票。
- 收盤價位剛站上肯特納上軌通道為買進條件。
- 收盤價位於肯特納上軌通道之上為持有條件,位於之下則賣出。
- EMA均線多頭排列。
- 換股頻率為兩週(短線)。
- 排除日均成交量過小標地。
顯示程式碼
from finlab.backtest import sim
from finlab import data
data.set_universe(market='TSE_OTC')
adj_close = data.get('etl:adj_close').loc['2012':]
ema_5=data.indicator('EMA', adjust_price=True, resample='D',timeperiod=5)
ema_10=data.indicator('EMA', adjust_price=True, resample='D',timeperiod=10)
ema_20=data.indicator('EMA', adjust_price=True, resample='D',timeperiod=20)
atr=data.indicator('ATR', adjust_price=True, resample='D',timeperiod=10)
keltner_up=ema_10+2*atr
vol=data.get('price:成交股數')/1000
vol_avg=vol.average(20)
cond1 = (adj_close > keltner_up) & (adj_close.shift() < keltner_up.shift())
cond2 = (ema_5 > ema_10) & (ema_10 > ema_20)
cond3 = vol_avg > 100
entries = cond1 & cond2 & cond3
exits = adj_close < keltner_up
position = entries.hold_until(exits,nstocks_limit=20, rank=vol_avg)
rr=sim(position,resample='2W',position_limit=0.05)回測結果
效果普通,多頭年份較強。可能要搭配其他指標應用,也可以把這套通道突破條件丟進線上回測平台,疊加其他因子後再看整體績效。

結合二次創高策略
融合hahow課程中的二次創高策略,將收盤價位於肯特納上軌通道之上為持有條件,位於之下則賣出,換股頻率改為2週。更加確認股價突破強度。

常見問題(FAQ)
ATR 是什麼指標?
ATR 是 Average True Range 的縮寫,中文常稱平均真實區間或平均真實波幅,是用來衡量價格波動幅度的技術指標。它會把當日高低價、前一日收盤到當日高點、前一日收盤到當日低點三者中的最大值納入,再做移動平均。ATR 高代表近期波動大,ATR 低代表近期波動小;它不判斷價格會漲或跌,所以實務上會搭配趨勢、均線、布林通道或肯特納通道一起看。想看更多技術指標的台股實測,可延伸到技術指標回測總覽。
肯特納通道(Keltner Channel)是什麼?
肯特納通道(Keltner Channel,也作 Keltner 通道)是以移動平均線為中軸、上下用 ATR 的倍數畫出通道的趨勢指標。中軸通常取 EMA,上下軌則是中軸加減某個倍數的 ATR,因此通道寬度會隨波動放大或收斂。它和布林通道的思路相近,差別在於肯特納通道用 ATR 當波動頻寬、用 EMA 當中線,相對標準差更穩定,較適合用來判斷趨勢與抱波段。常見入門設定是 EMA 20、ATR 10 或 20、上下軌 2 倍 ATR;本文範例使用 EMA 10 搭配 2 倍 ATR,反應較快,較偏短線。
ATR 指標怎麼計算?
ATR 計算先求每天的真實波動 TR,再對 TR 取 N 日的指數移動平均。TR 取三個數值的最大值:當日高低價之差、前日收盤與當日最高價之差的絕對值、前日收盤與當日最低價之差的絕對值,第二與第三項把跳空缺口也納入考量。用 EMA 而非 SMA 來平滑,能讓指標較不易被單日暴衝的雜訊干擾,也較能反映近日的波動。實務上不必手刻 ATR 公式,用 finlab 套件的 indicator('ATR', timeperiod=10) 一行就能算出,計算原理也可對照用 Python 計算 158 種常見技術指標。
股票 ATR 查詢要看哪個數字?
單看某一檔股票時,可以看原始 ATR,因為它代表近期平均每天大約震多少元。跨股票比較時,建議看 NATR,也就是 ATR 除以收盤價後的百分比,否則高價股的 ATR 天然會比低價股大。舉例來說,500 元股票 ATR 10 元和 20 元股票 ATR 1 元,原始 ATR 看起來前者較大,但換成比例後分別是 2% 與 5%,後者才是波動更劇烈的標的。
ATR 指標設定要用 10、14 還是 20?
Wilder 原始 ATR 常用 14 期,技術分析軟體也常把 14 設為預設值。短線交易者會用 10 期讓 ATR 更敏感,波段交易者可能用 20 期讓波動讀數更平滑。本文肯特納通道範例用 ATR 10,是因為策略換股頻率為兩週,較重視短期突破;若用在月頻選股或中長線停損,建議把 10、14、20 都放進回測比較,不要只相信預設參數。
ATR 可以用來做什麼?
ATR 最常見的用途是設定停損停利、衡量股票波動率,以及當作通道指標的頻寬。因為它反映的是每檔股票自己的波動股性,用 ATR 的倍數來設出場點,比所有股票統一用固定百分比更細膩,能降低大波動股票太早被洗出場的機會。把 ATR 除以股價換算成波動率,也可以用來區分適合短線或波段操作的標的。要提醒的是 ATR 只描述波動大小,不指出方向,需搭配價格趨勢一起解讀。想把 ATR 進一步變成出場規則,上面連過的 ATR 移動停利實測有完整的台股數據。
ATR 停損停利怎麼設?
常見做法是用 1.5 至 3 倍 ATR 當距離。多單停損可寫成「進場價 - k × ATR」或「近期最高價 - k × ATR」;若價格創新高,停損線跟著上移,就變成 ATR 移動停利。k 值越小,停損越緊、被洗出的機率越高;k 值越大,越能抱波段,但回吐也會變大。ATR 停損不一定適合所有策略,尤其月頻選股籃常已透過換股自然出場,相關實測可看ATR 移動停損台股反面教材。
肯特納通道的參數怎麼設?
肯特納通道有三個主要參數:中軸 EMA 的週期、ATR 的計算週期,以及上下軌使用的 ATR 倍數。本文範例用 EMA 10 當中軸、ATR 10 的 2 倍當上下軌寬度,倍數越大通道越寬、訊號越少但越不易被假突破洗出。週期短、倍數小會讓通道更敏感、進出更頻繁,適合短線;週期長、倍數大則偏向抱波段。參數沒有絕對最佳解,建議用回測在自己的選股池上比較不同組合。
肯特納通道和布林通道差在哪?
兩者結構類似,都是中線加上下軌構成的通道,差別在波動頻寬的算法。布林通道用價格的標準差,肯特納通道用 ATR,且中線通常取 EMA。標準差收斂與發散較快、數值跳動大,股價動能稍弱就容易跌破上軌,較適合抓過高過低的逆勢反轉;ATR 相對穩定、不易急速跳動,上軌更適合當趨勢線抱長波段。本文中段附有兩者疊在同一張圖上的比較,若想看布林通道的完整台股回測,可讀布林通道策略實測。
ATR 指標 app 或券商軟體查不到怎麼辦?
多數看盤 app 會把 ATR 放在技術指標清單,也可能寫成 Average True Range。若找不到,可以先確認是否支援 TA-Lib 類型指標,或改用 Python/FinLab 批次計算。手動查單檔時,app 顯示的 ATR 適合看近期股性;若要做全市場選股、排序股票 ATR 或比較不同參數,程式化查詢比較穩定,因為它能統一資料期間、還原價格與選股池口徑。
肯特納、肯特纳通道、肯透納通道是同一個指標嗎?
一般來說是同一個 Keltner Channel,只是中文翻譯與輸入法不同。台灣常見寫法是「肯特納通道」,簡體資料常寫「肯特纳通道」,也有人誤打成「肯透納通道」。查資料時可以同時用 Keltner Channel 與「肯特納通道」搜尋,較容易找到完整的參數說明與策略範例。
想直接把本文的 ATR 與肯特納通道條件跑成自己的策略,可用 AI 輔助流程安裝 finlab,一行算出全市場 ATR 並回測:
用 AI 開始 FinLab
把這句話交給你的AI,它會帶你完成設定並做出第一個策略。
告訴你的AI:
幫我設定 FinLab,重現這篇文章,請讀:https://finlab.finance/setup?relatedUrl=/blog/keltner-channel-atr-indicator
風險提示
免責聲明:本文所有策略與回測結果僅供教學與研究用途,不構成投資建議。過去績效不代表未來表現。投資一定有風險,請審慎評估自身風險承受能力。
檔案分享
Reference
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始

