如何使用 TradingView 建立 TA 指標
首頁
文章
如何使用 TradingView 建立 TA 指標

如何使用 TradingView 建立 TA 指標

進階
發佈時間 Aug 28, 2020更新時間 Jun 15, 2023
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 編輯器來執行哪些操作。現在,您應該有信心對價格圖表進行簡單的註釋,讓您從指標中獲得額外的洞察力。

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

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