我學 Pine Script 的時候,最痛苦的不是語法——而是找不到一篇像樣的中文教學。
Google 搜「Pine Script 教學」,出來的不是簡體中文就是英文文件的機器翻譯,讀起來像在解密碼。TradingView 的官方文件寫得很完整,但全是英文,而且對沒有程式基礎的人來說,那些術語本身就是障礙。
所以我寫了這篇。目標很明確:讓一個從沒寫過程式的人,看完之後能在 TradingView 上寫出一個能跑回測的均線交叉策略。不講廢話,每一行程式碼都會解釋為什麼這樣寫。
Pine Script 是什麼?為什麼要學它?
Pine Script 是 TradingView 專用的程式語言,用來寫技術指標和交易策略。它跟 Python、JavaScript 這些通用程式語言不一樣——Pine Script 只做一件事:處理金融數據和交易邏輯。
這個「只做一件事」反而是優勢。你不需要學怎麼連資料庫、不需要學怎麼架伺服器、不需要處理 API 認證。打開 TradingView 的 Pine 編輯器,寫完按「加到圖表」,結果就直接顯示在 K 線圖上。
學 Pine Script 對你有什麼用?
第一,回測你的交易想法。 你覺得「BTC 跌到 20 日均線就買、漲到均線上方 5% 就賣」這個策略有效嗎?寫成 Pine Script 跑一次歷史回測,三分鐘就有答案。不用再靠感覺。
第二,自動化交易。 Pine Script 策略可以透過 TradingView 的 Alert 功能設定通知,再搭配 Webhook 連接到 3Commas 或其他自動交易平台,實現從信號到下單的自動化。
第三,看懂別人的策略。 TradingView 社群有幾萬個免費指標和策略,但你不懂 Pine Script 的話,它們對你來說就是黑箱。學了之後你能看懂邏輯、修改參數、甚至組合多個策略。
環境準備(2 分鐘搞定)
你需要的東西:一個 TradingView 帳號(免費版就夠用)。打開任何一張 K 線圖,點底部的「Pine 編輯器」按鈕,就是你寫程式的地方。
沒了。不需要安裝任何軟體、不需要設定環境變數、不需要命令列。這也是 Pine Script 對新手最友善的地方。
你的第一個策略:均線交叉
我們要寫的是一個經典的「雙均線交叉策略」:當短期均線(7 日)從下往上穿越長期均線(25 日),視為買入信號;當短期均線從上往下穿越長期均線,視為賣出信號。這不是什麼神策略,但它足以讓你理解 Pine Script 的核心概念。
完整程式碼
//@version=6
strategy("雙均線交叉策略", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// 參數設定(可在圖表上直接調整)
fastLen = input.int(7, "短期均線天數", minval=1)
slowLen = input.int(25, "長期均線天數", minval=1)
// 計算均線
fastMA = ta.sma(close, fastLen)
slowMA = ta.sma(close, slowLen)
// 畫在圖表上
plot(fastMA, "短期均線", color=color.orange, linewidth=2)
plot(slowMA, "長期均線", color=color.blue, linewidth=2)
// 交叉判斷
longCondition = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)
// 執行交易
if longCondition
strategy.entry("買入", strategy.long)
if shortCondition
strategy.close("買入")
逐行解釋
第 1 行://@version=6 — 告訴 TradingView 你用的是 Pine Script 第 6 版。這是 2026 年的最新版本,語法跟舊版有些差異。網路上很多教學還在用 v4 或 v5,如果你照抄可能會報錯——注意版本號。
第 2 行:strategy(...) — 這行宣告「這是一個策略」而不是一個單純的指標。差異在於策略可以做回測(模擬買賣),指標只能顯示數值。overlay=true 策略畫在 K 線圖上面;default_qty_value=100 每次用 100% 的資金。
第 5-6 行:input.int(...) — 建立可以在圖表上直接調整的參數。你不需要改程式碼就能測試不同的均線天數——在圖表的策略設定裡拖一下滑桿就行。
第 9-10 行:ta.sma(close, fastLen) — ta.sma 是「簡單移動平均線」函數。close 代表收盤價,fastLen 是天數。這行的意思就是「算最近 7 天的平均收盤價」。
第 17-18 行:ta.crossover 和 ta.crossunder — 這是 Pine Script 的內建函數,專門偵測兩條線的交叉。crossover 是「從下往上穿越」(黃金交叉),crossunder 是「從上往下穿越」(死亡交叉)。
第 21-24 行:strategy.entry 和 strategy.close — strategy.entry("買入", strategy.long) 建立多頭倉位,strategy.close("買入") 平掉倉位。就這樣,整個策略 15 行程式碼。
怎麼跑回測?
把上面的程式碼貼到 Pine 編輯器,按「加到圖表」。TradingView 會自動在 K 線圖上畫出均線,並且在底部的「策略測試器」面板顯示回測結果。你會看到幾個關鍵數據:
淨利潤:策略從開始到結束總共賺了多少(或虧了多少)。
總交易次數:策略觸發了幾次買賣。如果次數太少(比如整年只交易 3 次),數據的統計意義不大。
勝率:贏的交易佔總交易的比例。但注意,勝率高不代表策略好——如果你贏的每次賺 1%、輸的每次虧 5%,即使勝率 80% 也是虧的。
盈虧比(Profit Factor):所有獲利交易的總利潤 ÷ 所有虧損交易的總虧損。大於 1 代表整體是賺的。我個人的基準是 Profit Factor 要大於 1.5 才值得考慮。
最大回撤(Max Drawdown):策略在運行期間從高點到低點的最大虧損幅度。這個數字比淨利潤更重要——你的策略可能最終賺了 50%,但中間有一段虧了 40%,你有辦法扛住嗎?
怎麼改進這個策略?
均線交叉策略有一個經典問題:在震盪行情中會被反覆打臉(假突破太多)。以下是三個常見的改進方向:
加一個趨勢過濾器
只在大趨勢方向順的時候才交易。比如加一條 200 日均線,只有價格在 200 日均線上方才做多:
trendFilter = close > ta.sma(close, 200)
if longCondition and trendFilter
strategy.entry("買入", strategy.long)
加一個止損
原始版本沒有止損,如果遇到急跌會損失慘重。加一個 5% 的追蹤止損:
if longCondition
strategy.entry("買入", strategy.long)
strategy.exit("止損", "買入", trail_points=close * 0.05 / syminfo.mintick, trail_offset=close * 0.02 / syminfo.mintick)
結合 RSI 過濾
只在 RSI 不在超買區時才買入,避免追高:
rsi = ta.rsi(close, 14)
if longCondition and rsi < 70
strategy.entry("買入", strategy.long)
每加一個條件,記得重新跑回測比較前後差異。有時候加了過濾器反而讓表現變差——這就是回測的價值。
Pine Script 常用函數速查表
| 函數 | 功能 | 用法範例 |
|---|---|---|
ta.sma(source, length) | 簡單移動平均線 | ta.sma(close, 20) |
ta.ema(source, length) | 指數移動平均線 | ta.ema(close, 12) |
ta.rsi(source, length) | RSI 相對強弱指標 | ta.rsi(close, 14) |
ta.macd(source, fast, slow, signal) | MACD 指標 | ta.macd(close, 12, 26, 9) |
ta.crossover(a, b) | a 從下往上穿越 b | ta.crossover(fastMA, slowMA) |
ta.crossunder(a, b) | a 從上往下穿越 b | ta.crossunder(fastMA, slowMA) |
ta.highest(source, length) | N 期最高值 | ta.highest(high, 20) |
ta.lowest(source, length) | N 期最低值 | ta.lowest(low, 20) |
ta.atr(length) | 平均真實範圍 | ta.atr(14) |
ta.bb(source, length, mult) | 布林通道 | ta.bb(close, 20, 2) |
下一步
學完這篇你已經能寫出基本的 Pine Script 策略了。接下來可以:深入了解回測技巧、了解更多策略類型、如果你想跳過寫程式直接開始可以看不用 Code 的方法、或回到系列起點。
常見問題 FAQ
Pine Script 需要程式基礎才能學嗎?
不需要。Pine Script 的語法比 Python 和 JavaScript 都簡單,而且它只處理金融數據這一件事。一個完整的均線交叉策略只需要 15 行程式碼。如果你看得懂 Excel 的 IF 函數,你就能學 Pine Script。
Pine Script v6 和 v5 有什麼差別?
v6 是 2025 年推出的最新版本,主要改進了類型系統和錯誤處理。對新手來說最大的差別是部分函數名稱和語法有變化。如果你是新學的,直接學 v6 就好。網路上很多舊教學用 v4 或 v5,照抄可能會報錯,注意第一行的版本號。
免費版 TradingView 可以跑 Pine Script 嗎?
可以。免費版可以寫和執行 Pine Script 策略,也能看回測結果。限制是同時只能在圖表上放 3 個指標/策略、歷史數據量比付費版少。對學習和基本回測來說免費版完全夠用。
Pine Script 寫的策略可以自動下單嗎?
Pine Script 本身不能直接連交易所下單,但可以透過 TradingView 的 Alert + Webhook 功能,把信號傳給 3Commas 等第三方平台來自動執行。如果你想完全自動化,建議學 Python 直接連 OKX API,詳見 Python 量化交易入門。
Mr. Slash 不是你的理財顧問。本文中的策略程式碼僅用於教學目的,不構成投資建議。回測結果不代表未來表現,任何策略上線前請用小額資金測試。

發表迴響