如何使用 TradingView 建立 TA 指標
目錄
前言
什麼是 Pine Script?
設定
Pine 編輯器
繪製移動平均線 (MA)
繪製相對強弱指數 (RSI) 指標
回測
整合在一起
總結
如何使用 TradingView 建立 TA 指標
首頁
文章
如何使用 TradingView 建立 TA 指標

如何使用 TradingView 建立 TA 指標

進階
發佈時間 Aug 28, 2020更新時間 Nov 11, 2022
13m

前言

沒有正確的交易工具,就無法進行有效的技術分析。強大的交易策略將幫助您避免常見錯誤、增進風險管理,並提高識別和利用機會的能力。

對許多人來說,TradingView 是最常用的圖表平台。這個強大的 HTML5 網路應用程式提供了一個技術分析工具中心,數百萬人使用其來追蹤 Forex加密貨幣和傳統股票市場的動向。

TradingView 有許多強大的功能:它允許我們在眾多交易平台上追蹤資產,並在其社群網路發佈交易構思。在本文中,我們將著重介紹它的自訂功能。我們將使用 Pine Script,即 TradingView 自身的程式設計語言,這種語言讓我們可以對圖表版面進行更精細的控制。

讓我們開始吧!


什麼是 Pine Script?

Pine Script 是一種腳本語言,可用來修改您的 TradingView 圖表。雖然平台已經提供了許多功能,但 Pine Script 可以讓您更進階使用。無論您想改變 K 線圖的顏色,或是想回測新的策略,Pine 編輯器都能讓您依照您的需求,自訂您的即時圖表。

程式本身就有很完整的文件,所以一定要查看使用手冊來獲取更多資訊。本課程的目標為討論其基礎知識,並介紹一些在加密貨幣交易中可以派上用場的指標。


設定

Pine Script 非常容易上手。我們所編寫的任何程式碼都在 TradingView 伺服器上執行,因此可以在瀏覽器上使用編輯器來開發我們的腳本 – 不需要另外下載或進行額外的設定。

在本教學中,我們將繪製比特幣/幣安 USD (BTCBUSD) 貨幣交易對圖表。如果您還沒有帳號,可以先建立一個免費帳號(也可以訂閱專業版,但對於本教學並非必要)。 

點擊此連結,您將看到類似下列的圖表:


TradingView 上的 BTCBUSD 圖表

您看到的內容可能會更新。


在這裡,我們想看到的是全功能圖表 – 請按一下此按鈕進入。為我們提供更詳細的視圖、繪圖工具,以及繪製趨勢線的選項等等。


TradingView 上的 BTCBUSD 全功能圖表

全功能圖表。您可以按一下反白顯示標籤上方的視圖,來調整不同的時間範圍。


在這裡,我們不會討論如何使用各種工具,但如果您對技術分析有興趣,我們強烈建議您好好熟悉它們。在左下方(如圖所示),您會看到幾個不同的標籤 – 請按一下 Pine 編輯器


Pine 編輯器


Pine 編輯器的螢幕截圖


編輯器是我們大展身手的地方。我們告訴它我們想要什麼,然後按一下新增到圖表,就會看到我們的註解顯示在上面。請注意,如果我們同時加入多個註解會變得很混亂,所以在不同範例中我們會先將它們移除(在圖表上按一下滑鼠右鍵 > 移除指標)。

您可以看到裡面已經有幾行程式碼。讓我們按一下新增到圖表,看看會發生什麼。


新增第一個腳本到 TradingView 圖表


在原本圖表的下方多出第二個圖表。新的圖表剛好表示相同的資料。將滑鼠暫留在 My Script 圖表上,按一下叉叉圖示將其移除。現在,讓我們來深入研究程式碼。

study("My Script")

第一行只是在設定我們的註解。只需要放入指標的名稱(範例中為「My Script」),還可以加入其他選擇性參數。其中一個參數是 overlay,它告訴 TradingView 將指標加到現有圖表中(而不是另外新增一個圖表)。如同在我們第一個範例中所見,它的預設值是 false。雖然現在看不到它的作用,但 overlay = true 會將指標加到現有圖表。

plot(close)

這一行是繪製比特幣的收盤價。plot 只提供了折線圖,但我們也可以顯示 K 線圖和長條圖,稍後就會介紹。 

讓我們試試下面的程式碼:

//@version=4 study("My Script", overlay=true) plot(open, color=color.purple)

加入該程式碼後,您會看到第二個圖表(看起來像是原圖表向右移動)。這邊我們用開盤價來取替,由於當天的開盤價是前一天的收盤價,所以這二個圖表的形狀相同,這是合理的。

好的!讓我們移除目前的註解(記住,按一下滑鼠右鍵並點擊移除指標即可)。將滑鼠暫留在 比特幣/BUSD 上並按一下隱藏按鈕,也可以移除目前的圖表。

許多交易者更喜歡使用 K 線圖,因為它比剛剛那種簡單的圖表可以提供更多的資訊。接下來,讓我們來將其加入吧。 

//@version=4 study("My Script", overlay=true) plotcandle(open, high, low, close)

這是一個好的開始,但是沒有顏色看起來有點平淡。理想情況下,在給定的時間範圍內,當開盤價大於收盤價,我們會有紅色的 K 線,如果收盤價大於開盤價,則為綠色的 K 線。我們在 plotcandle() 函數前加入一行程式碼:

//@version=4 study("My Script", overlay=true) colors = open >= close ?color.red : color.green plotcandle(open, high, low, close)

它會查看每個 K 線,並檢查是否開盤價大於或等於收盤價。如果是,即表示價格在這段時間內下降,所以會將 K 線圖畫成紅色。反之,會將其畫成綠色。修改 plotcandle() 函數,通過以下配色方案:

//@version=4 study("My Script", overlay=true) colors = open >= close ?color.red : color.green plotcandle(open, high, low, close, color=colors)

如果您還沒有移除目前的指標,請先將其移除再把該指標新增到圖表中。現在,我們應該有一個類似一般 K 線圖的圖表。


TradingView 上的 K 線圖表

很漂亮!


繪製移動平均線 (MA)

我們已經學習了一些基本知識。現在,讓我們製作第一個自訂指標 – 指數移動平均線,或稱作 EMA。這是很有用的工具,因為它能讓我們篩選掉市場的噪音,讓價格走勢變得平滑。 

EMA 與簡單移動平均線 (SMA) 略有不同,因為它更重視最新的資料。它對突發的波動更加敏感,通常用於短期交易(例如,日間交易)。


簡單移動平均線 (SMA)

我們也會製作 SMA,這樣就可以對兩者進行比較。請在您的腳本中新增這一行:

plot(sma(close, 10))

這會取前十天的平均值。讓我們調整括號裡的數字,看看在考慮不同時間長度的情況下,曲線會有什麼變化。


基於前 10 天的簡單移動平均線

這個 SMA 是取前十天的值。


指數移動平均線 (EMA)

EMA 會有點難以理解,但是不用擔心。我們先來分解這個公式:

EMA = (Close - Previous Day’s EMA) * Multiplier - Previous Day’s EMA

那麼,這告訴我們什麼呢?對於每一天,我們都會根據前一天的移動平均線計算新的移動平均線。乘數是指最近一段時間的「權重」,並使用以下公式計算:

Multiplier = 2 / (Length of EMA + 1)

與簡單移動平均線一樣,我們需要指定 EMA 的長度。在語法上,繪製 EMA 的函數與 SMA 的函數類似。和 SMA 繪製在一起,以便您對兩者進行比較:

//@version=4 study("My Script", overlay=true) plot(sma(close, 10)) plot(ema(close,10))


同一個 TradingView 圖表上的 EMA 和 SMA

您可以看到兩種類型的 MA 略有不同。


➟ 想開始使用加密貨幣嗎?於幣安買入比特幣!


內建腳本

到目前為止,我們已經手動編寫我們自己的程式碼,讓您感受一下。現在,我們要來介紹一些可以為我們節省時間的東西,特別是如果我們要寫更複雜的腳本,但是又不想從頭開始。

在編輯器的右上方,按一下新增。您會看到下拉選單,裡面有各式各樣的技術指標。按一下移動平均指數,即可看到 EMA 指標的來源碼。



Pine 腳本中的移動平均指數

將它新增到圖表中。


這與我們的不同 – 您會看到 input() 函數。從易用性角度來看這很方便,因為您可以按一下這個方塊…


修改 TradingView 介面上的圖表


...按一下設定齒輪圖示,即可輕鬆變更彈出視窗中的一些值。


變更 EMA 輸入


我們將在下一個腳本中新增幾個 input() 函數來展示。


繪製相對強弱指數 (RSI) 指標

相對強弱指數 (RSI)技術分析中的另一個重要指標。它被稱為動量指標,用來衡量資產買入和賣出的速度。RSI 以 0 到 100 來表示,指示投資者該資產是超買還是超賣。通常情況下,如果資產的分數小於或等於 30,可能是超賣,如果分數大於或等於 70,可能是超買。

如果您前往「新增」>「RSI 策略」,可以自己試看看。RSI 通常以 14 為一個週期進行測量(即 14 小時或 14 天),但您可以自行調整設定以適應您的策略。

將此新增到圖表中。您應該可以看到一些箭頭(由程式碼中的 strategy.entry()函數定義)。RsiLE 表示做多資產的潛在機會,因為它可能超賣。RsiSE 表示做空資產的潛在機會,因為它可能超買。請注意,和所有指標一樣,不應該把這些指標作為價格一定會上升或下降的依據。


回測

有種方法可以測試我們的自訂指標。雖然過去的表現不能保證未來的結果,但對我們的腳本進行回測,可以讓我們了解它在取得訊號時的效果。 

下面將展示一個簡單的腳本範例。我們來建立一個簡單的策略,當 BTC 價格跌破 11,000 美元時,進入多頭倉位,當價格超過 11,300 美元時則退出。然後我們可以看看這個策略,在過去會有多大的獲利。

//@version=4 strategy("ToDaMoon", overlay=true) enter = input(11000) exit = input(11300) price = close if (price <= enter)     strategy.entry("BuyTheDip",strategy.long,comment="BuyTheDip") if (price >= exit)     strategy.close_all(comment="SellTheNews")

在這裡,我們將 entryexit 定義為變數 – 兩者都是 input,這表示我們之後可以在圖表上進行變更。我們還設定了 price 變數,來抓取每個期間的收盤價。然後,我們在 if 指令中建立一些邏輯。如果括號裡的部份為真,那麼其下內縮的程式區塊將會被執行。否則,它們將會被跳過。

因此,如果價格小於或等於我們期望的進入值,表示第一個運算式為真,我們將建立多頭倉位。一旦價格大於或等於期望的出場值,表示第二個區塊將會被觸發,關閉所有未平倉位。 

我們用箭頭來註解圖表中我們的進入/退出點,因此我們用 comment 參數指定這些標籤的內容(在此範例中是「BuyTheDip」和「SellTheNews」)。複製該程式碼,並將它新增到圖表中。


指標在 TradingView 圖表上處於活動狀態

現在您可以在圖表中看到指標。可能需要放大來看。


TradingView 會自動將您的規則套用到舊資料。您還會注意到,它從 Pine 編輯器切換到策略測試器標籤。讓您看到潛在獲利概況、交易清單,以及它們各自的表現。


TradingView 策略測試器

我們進入和退出的倉位。


整合在一起

是時候用我們所學到的概念來編寫自己的腳本了。我們要把 EMA 和 RSI 結合在一起,用它們的值來為 K 線圖上色,產生易於觀察的分析。 

這不應被認為財務建議 – 沒有客觀正確的方式來使用這個指標。它和其他指標一樣,應該與其他工具一起使用來自訂您自己的策略。

讓我們開始進行新腳本。先在圖表中移除所有的指標,並隱藏比特幣/BUSD 圖表,這樣我們就有一個乾淨的畫面。

我們從定義 study 開始。您可以為它取任何名稱,只需要確定 overlay=true

study(title="Binance Academy Script", overlay=true)

記住前面的 EMA 公式。我們需要為乘數提供 EMA 的長度。我們將 input 設定為整數(所以沒有小數位)。再設定最小值 (minval) 和預設值 (defval)。

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0)


使用這個新的變數,我們可以計算出圖表中每個 K 線的 EMA 值:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength)


做的很好。接下來是 RSI。我們以類似的方式給它一個長度:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer,defval=25, minval=0)

現在,我們可以進行計算:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer,defval=25, minval=0) rsiVal = rsi(close, rsiLength)

在這個階段,我們將 K 線圖依據 EMA 和 RSI 值上色的邏輯加進來。我們假設 (a) K 線圖的收盤價超過 EMA,(b) RSI 值高於 50。

為什麼?您可能會決定將這些指標結合在一起,來告訴您何時做多或做空比特幣。例如,您可能認為滿足這兩個條件即表示進入多頭倉位的好時機。或是反過來,您可能會用它來通知您什麼時候不要做空,即使其他指標沒有指示。

因此,我們的下一行將會如下所示:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer,defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal and rsiVal > 50 ?color.green : color.red

如果把這行翻成白話即為,如果 EMA 值超過收盤價, RSI 值超過 50,我們就將 K 線畫成綠色。反之,則將它畫成紅色。 

接下來,繪製 EMA:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer,defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal and rsiVal > 50 ?color.green : color.red plot(emaVal, "EMA")

最後,繪製 K 線圖,確定有包含到 color 參數:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer,defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal and rsiVal > 50 ?color.green : color.red plot(emaVal, "EMA") plotcandle(open, high, low, close, color=colors)

這就是我們的腳本!請將它新增到圖表中,來看看實際效果。


正在執行的 Tradingview 腳本

帶有 EMA/RSI 指標的 BTC/BUSD 圖表。


總結

在本文中,我們用一些基本的範例,說明可以使用 TradingView 的 Pine 編輯器來執行哪些操作。現在,您應該有信心對價格圖表進行簡單的註釋,讓您從指標中獲得額外的洞察力。

雖然我們只介紹了幾個指標,但是 – 透過新增內建腳本或是自己編寫,可以輕鬆建立更複雜的指標。

是否缺乏靈感?下列文章可能會為您的下一個專案提供一些想法: