前言
讓我們開始吧!
什麼是 Pine Script?
設定
Pine Script 非常容易上手。我們所編寫的任何程式碼都在 TradingView 伺服器上執行,因此可以在瀏覽器上使用編輯器來開發我們的腳本 – 不需要另外下載或進行額外的設定。
您看到的內容可能會更新。
全功能圖表。您可以按一下反白顯示標籤上方的視圖,來調整不同的時間範圍。
Pine 編輯器
study("My Script")
plot(close)
讓我們試試下面的程式碼:
//@version=4 study("My Script", overlay=true) plot(open, color=color.purple)
許多交易者更喜歡使用 K 線圖,因為它比剛剛那種簡單的圖表可以提供更多的資訊。接下來,讓我們來將其加入吧。
//@version=4 study("My Script", overlay=true) plotcandle(open, high, low, close)
//@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 線圖的圖表。
很漂亮!
繪製移動平均線 (MA)
簡單移動平均線 (SMA)
我們也會製作 SMA,這樣就可以對兩者進行比較。請在您的腳本中新增這一行:
plot(sma(close, 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))
您可以看到兩種類型的 MA 略有不同。
內建腳本
到目前為止,我們已經手動編寫我們自己的程式碼,讓您感受一下。現在,我們要來介紹一些可以為我們節省時間的東西,特別是如果我們要寫更複雜的腳本,但是又不想從頭開始。
將它新增到圖表中。
繪製相對強弱指數 (RSI) 指標
回測
有種方法可以測試我們的自訂指標。雖然過去的表現不能保證未來的結果,但對我們的腳本進行回測,可以讓我們了解它在取得訊號時的效果。
下面將展示一個簡單的腳本範例。我們來建立一個簡單的策略,當 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")
因此,如果價格小於或等於我們期望的進入值,表示第一個運算式為真,我們將建立多頭倉位。一旦價格大於或等於期望的出場值,表示第二個區塊將會被觸發,關閉所有未平倉位。
現在您可以在圖表中看到指標。可能需要放大來看。
我們進入和退出的倉位。
整合在一起
是時候用我們所學到的概念來編寫自己的腳本了。我們要把 EMA 和 RSI 結合在一起,用它們的值來為 K 線圖上色,產生易於觀察的分析。
這不應被認為財務建議 – 沒有客觀正確的方式來使用這個指標。它和其他指標一樣,應該與其他工具一起使用來自訂您自己的策略。
讓我們開始進行新腳本。先在圖表中移除所有的指標,並隱藏比特幣/BUSD 圖表,這樣我們就有一個乾淨的畫面。
study(title="Binance Academy Script", overlay=true)
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:
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")
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)
這就是我們的腳本!請將它新增到圖表中,來看看實際效果。
帶有 EMA/RSI 指標的 BTC/BUSD 圖表。
總結
在本文中,我們用一些基本的範例,說明可以使用 TradingView 的 Pine 編輯器來執行哪些操作。現在,您應該有信心對價格圖表進行簡單的註釋,讓您從指標中獲得額外的洞察力。
是否缺乏靈感?下列文章可能會為您的下一個專案提供一些想法: