介紹

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

對於許多人來說,TradingView 是首選的圖表平臺。強大的 HTML5 Web 應用程序提供技術分析工具中心,數百萬人使用它來跟蹤外匯、加密貨幣和傳統股票市場的走勢。

TradingView 擁有許多強大的功能:它允許我們跨衆多交易平臺跟蹤資產並在其社交網絡中發佈交易想法。在本文中,我們將重點關注其可定製性。我們將使用 TradingView 自己的編程語言 Pine Script,它使我們能夠對圖表佈局進行精細控制。

讓我們開始吧!


什麼是Pine腳本?

Pine Script 是一種腳本語言,可用於修改您的 TradingView 圖表。該平臺已經爲您提供了許多功能來做到這一點,但 Pine Script 允許您更進一步。無論您是想更改燭臺的顏色還是回溯測試新策略,Pine 編輯器都可以讓您根據需要自定義實時圖表。

代碼本身有很好的文檔記錄,因此請務必查看用戶手冊以獲取更多信息。我們在本教程中的目標是討論一些基礎知識並介紹可以在加密貨幣交易中派上用場的指標。


配置

開始使用 Pine Script 非常簡單。我們編寫的任何代碼都在 TradingView 的服務器上運行,因此我們可以從瀏覽器訪問編輯器並開發腳本 - 無需任何額外的下載或配置。

在本教程中,我們將繪製比特幣/幣安美元 (BTCBUSD) 貨幣對的圖表。如果您還沒有,請繼續創建一個免費帳戶(也有專業訂閱可用,但本指南不是必需的)。

點擊此鏈接,您將看到類似於以下內容的圖表:


BTCBUSD Chart on tradingview

您的可能會更新。


在這裏,我們想要獲得全功能的圖表 - 單擊按鈕即可訪問它。這爲我們提供了更詳細的視圖、繪圖工具以及繪製趨勢線的選項等。


Full featured chart on tradingview for BTCBUSD

功能齊全的圖表。您可以通過單擊突出顯示的選項卡上方的視圖來調整時間範圍。


我們不會討論如何使用各種可用的工具,但如果您認真對待技術分析,我們強烈建議您熟悉它們。在左下角(如圖所示),您會看到幾個不同的選項卡 - 單擊 Pine Editor。


松樹編輯


screenshot of the pine editor


這個編輯器就是神奇發生的地方。我們將告訴它我們想要做什麼,然後單擊添加到圖表以查看我們的註釋出現在上面。請注意,如果我們同時包含多個註釋,事情可能會變得混亂,因此我們將在示例之間刪除它們(右鍵單擊圖表 > 刪除指標)。

您可以看到我們已經有幾行代碼了。讓我們點擊“添加到圖表”看看會發生什麼。


Adding first script to tradingview chart


第二個圖表將添加到原始圖表下方。新圖表恰好代表相同的數據。將鼠標懸停在“我的腳本”上,然後單擊叉號將其刪除。現在,讓我們深入研究代碼。

研究(“我的腳本”)

第一行只是設置我們的註釋。它只需要您想要調用指標的名稱(在本例中爲“我的腳本”),但我們還可以添加一些可選參數。其中之一是覆蓋,它告訴 TradingView 將指標放置在現有圖表上(而不是新的部分)。正如您從我們的第一個示例中看到的,它默認爲 false。儘管我們現在看不到它的實際效果,但overlay=true 會將指標添加到現有圖表中。

情節(關閉)

該線是繪製比特幣收盤價的指令。 plot 只是給我們一個折線圖,但我們也可以顯示燭臺和條形圖,我們很快就會看到。

現在,讓我們嘗試以下操作:

//@版本=4
研究(“我的腳本”,覆蓋= true)
繪圖(打開,顏色=color.purple)

添加此後,您應該會看到第二個圖表(看起來像原始圖表向右移動)。我們所做的只是繪製開盤價,並且由於當天的開盤價是前一天的收盤價,因此它們具有相同的形狀是有道理的。

好的!讓我們刪除當前的註釋(記住,我們通過右鍵單擊並點擊“刪除指示器”來做到這一點)。將鼠標懸停在比特幣/BUSD 上,然後單擊隱藏按鈕也可清除當前圖表。

許多交易者更喜歡燭臺圖,因爲它們比我們剛纔做的簡單圖表給我們提供更多信息。接下來讓我們添加它們。

//@版本=4
研究(“我的腳本”,覆蓋= true)
蠟燭圖(開盤價、最高價、最低價、收盤價)

這是一個好的開始,但缺乏色彩讓它有點平淡。理想情況下,當給定時間範圍內的開盤價大於收盤價時,我們應該有紅色蠟燭;如果收盤價超過開盤價,我們應該有綠色蠟燭。我們將在plotcandle()函數上方添加一行:

//@版本=4
研究(“我的腳本”,覆蓋= true)
顏色 = 打開 >= 關閉?顏色.紅色 : 顏色.綠色
蠟燭圖(開盤價、最高價、最低價、收盤價)

它會查看每個燭臺並檢查開盤價是否大於或等於收盤價。如果是,則意味着價格在此期間下跌,因此燭臺將變成紅色。否則,它會將其染成綠色。修改plotcandle()函數以傳遞此配色方案:

//@版本=4
研究(“我的腳本”,覆蓋= true)
顏色 = 打開 >= 關閉?顏色.紅色 : 顏色.綠色
plotcandle(開盤價、最高價、最低價、收盤價、顏色=顏色)

如果尚未刪除當前指標,請將其添加到圖表中。現在我們應該有類似於常規燭臺圖的東西。


Candlestick chart on tradingview

美麗的!


繪製移動平均線 (MA)

我們已經掌握了一些基礎知識。讓我們繼續討論我們的第一個自定義指標 - 指數移動平均線,或 EMA。這是一個很有價值的工具,因爲它使我們能夠過濾掉任何市場噪音並平滑價格走勢。

EMA 與簡單移動平均線 (SMA) 略有不同,因爲它更重視最新數據。它往往對突然的變動更加敏感,通常用於短期交易(例如日內交易)。


簡單移動平均線 (SMA)

我們不妨繪製 SMA,這樣我們就可以在之後比較兩者。將此行添加到您的腳本中:

繪圖(sma(收盤,10))

這繪製了前十天的平均值。調整括號中的數字,看看考慮到不同長度時曲線如何變化。


Simple moving average based on previous 10 days

SMA,基於前十天。


指數移動平均線 (EMA)

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

EMA = (收盤價 - 前一日 EMA) * 乘數 - 前一日 EMA

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

乘數 = 2 /(EMA 長度 + 1)

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

//@版本=4
研究(“我的腳本”,覆蓋= true)
繪圖(sma(收盤,10))
情節(EMA(關閉,10))


EMA and SMA on one tradingview chart

您可以看到兩種類型的 MA 之間存在細微差別。


➠ 想要開始使用加密貨幣?在幣安上購買比特幣!


內置腳本

到目前爲止,我們已經手動編寫了代碼,以便您可以感受一下。但是讓我們介紹一些可以節省時間的東西,特別是當我們編寫更復雜的腳本並且我們不想從頭開始編寫它們時。

在編輯器的頂部右側,單擊“新建”。您將獲得一個包含各種不同技術指標的下拉菜單。單擊移動平均指數查看 EMA 指標的源代碼。



Moving average exponential in pine script

繼續並將其添加到圖表中。


這個與我們的不同——您會注意到 input() 函數。從可用性的角度來看,這些很好,因爲您可以單擊此框......


Modifying a chart on tradingview interface


...並通過單擊“設置”輪輕鬆更改彈出窗口中的某些值。


changing inputs on EMA


我們將在下一個腳本中添加幾個 input() 函數來演示這一點。


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

相對強弱指數(RSI)是技術分析中的另一個重要指標。它被稱爲動量指標,意味着它衡量資產買賣的速率。 RSI 分數以 0 到 100 的範圍呈現,試圖告知投資者資產是否超買或超賣。通常,如果資產的得分小於或等於 30,則可能被視爲超賣;如果資產的得分大於或等於 70,則可能被視爲超買。

如果您前往“新建”>“RSI 策略”,您可以親自看到這一點。 RSI 通常在 14 個週期(即 14 小時或 14 天)內進行測量,但您可以自由調整該設置以適合您自己的策略。

將其添加到圖表中。您現在應該會看到顯示一些箭頭(由代碼中的strategy.entry() 函數定義)。 RsiLE 表明存在做多該資產的潛在機會,因爲該資產可能超賣。 RsiSE 強調了當資產超買時可能做空該資產的點。請注意,與所有指標一樣,您不必依賴這些作爲價格將會下降/上漲的萬無一失的證據。


回測

我們有一種方法來測試我們的自定義指標。儘管過去的表現並不能保證未來的結果,但回測我們的腳本可以讓我們瞭解它們在獲取信號方面的有效性。

下面我們將給出一個簡單腳本的示例。我們將創建一個簡單的策略,當 BTC 價格跌破 11,000 美元時進入多頭頭寸,並在價格超過 11,300 美元時平倉。然後我們可以看到該策略在歷史上的盈利能力有多大。

//@版本=4
策略(“ToDaMoon”,覆蓋= true)
輸入=輸入(11000)
退出=輸入(11300)
價格=收盤價

if (價格<=輸入)
Strategy.entry("BuyTheDip", Strategy.long, comment="BuyTheDip")
if (價格 >= 退出)
Strategy.close_all(評論=“SellTheNews”)

在這裏,我們將進入和退出定義爲變量 - 兩者都是輸入,這意味着我們可以稍後在圖表上更改它們。我們還設置了價格變量,該變量獲取每個期間的收盤價。然後,我們有一些 if 語句形式的邏輯。如果括號中的部分爲 true,則將運行其下方的縮進塊。否則,它將被跳過。

因此,如果價格小於或等於我們想要的入場價格,第一個表達式的計算結果爲 true,我們將建立多頭頭寸。一旦價格等於或超過所需的退出,第二個區塊將被觸發,關閉所有未平倉頭寸。

我們將用箭頭註釋圖表,顯示我們進入/退出的位置,因此我們使用 comment 參數指定了標記這些點的內容(在本例中爲“BuyTheDip”和“SellTheNews”)。複製代碼,並將其添加到圖表中。


indicator active on tradingview chart

您現在可以看到圖表上的指標。您可能需要縮小。


TradingView 會自動將您的規則應用於舊數據。您還會注意到它從 Pine 編輯器切換到策略測試器選項卡。這使您可以看到潛在利潤的概覽、交易列表以及每筆交易的表現。


Trading view strategy tester

我們已經進入和退出的頭寸。


將其綁在一起

是時候使用我們迄今爲止看到的一些概念來編寫我們自己的腳本了。我們將結合 EMA 和 RSI 並使用它們的值來爲燭臺着色,從而產生我們可以輕鬆可視化的見解。

這不應被視爲財務建議——沒有客觀正確的方法來使用該指標。與所有其他工具一樣,它應該與其他工具一起使用來制定您自己的策略。

現在讓我們開始編寫新腳本。從圖表中刪除所有指標,並隱藏比特幣/BUSD 圖表,以便我們有一個乾淨的畫布可以處理。

讓我們首先定義我們的研究。您可以隨意命名它,只要確保設置overlay=true即可。

研究(標題=“幣安學院腳本”,overlay=true)

記住我們之前的 EMA 公式。我們需要提供具有 EMA 長度的乘數。讓我們將其設置爲需要整數的輸入(因此,沒有小數位)。我們還將設置一個最小值 (minval) 和一個默認值 (defval)。

研究(標題=“幣安學院腳本”,overlay=true)
emaLength = input(title="EMA 長度", type=input.integer, defval=25, minval=0)


使用這個新變量,我們可以計算圖表中每根蠟燭的 EMA 值:

研究(標題=“幣安學院腳本”,overlay=true)
emaLength = input(title="EMA 長度", type=input.integer, defval=25, minval=0)
emaVal = ema(關閉, emaLength)


偉大的。進入 RSI。我們將以類似的方式給出它的長度:

研究(標題=“幣安學院腳本”,overlay=true)
emaLength = input(title="EMA 長度", type=input.integer, defval=25, minval=0)
emaVal = ema(關閉, emaLength)
rsiLength = input(title="RSI 長度", type=input.integer, defval=25, minval=0)

現在,我們可以計算它:

研究(標題=“幣安學院腳本”,overlay=true)
emaLength = input(title="EMA 長度", type=input.integer, defval=25, minval=0)
emaVal = ema(關閉, emaLength)
rsiLength = input(title="RSI 長度", type=input.integer, defval=25, minval=0)
rsiVal = rsi(收盤價, rsiLength)

在此階段,讓我們整理根據 EMA 和 RSI 值爲燭臺着色的邏輯。讓我們考慮這樣一種情況:(a) 蠟燭的收盤價超過 EMA,(b) RSI 高於 50。

爲什麼?那麼,您可能會決定將這些指標結合使用來告訴您何時多頭或空頭比特幣。例如,您可能認爲滿足這兩個條件意味着現在是建立多頭頭寸的好時機。或者相反,您可以用它來通知您何時不要做空,即使其他指標另有說明。

所以,我們的下一行將如下所示:

研究(標題=“幣安學院腳本”,overlay=true)
emaLength = input(title="EMA 長度", type=input.integer, defval=25, minval=0)
emaVal = ema(關閉, emaLength)
rsiLength = input(title="RSI 長度", type=input.integer, defval=25, minval=0)
rsiVal = rsi(收盤價, rsiLength)
顏色 = 接近 > emaVal 和 rsiVal > 50 ?顏色.綠色 : 顏色.紅色

如果我們將其翻譯成簡單的英語,我們只是說,如果 EMA 值超過收盤價並且 RSI 分數超過 50,我們會將蠟燭塗成綠色。否則,我們會將其染成紅色。

接下來,繪製 EMA:

研究(標題=“幣安學院腳本”,overlay=true)
emaLength = input(title="EMA 長度", type=input.integer, defval=25, minval=0)
emaVal = ema(關閉, emaLength)
rsiLength = input(title="RSI 長度", type=input.integer, defval=25, minval=0)
rsiVal = rsi(收盤價, rsiLength)
顏色 = 接近 > emaVal 和 rsiVal > 50 ?顏色.綠色 : 顏色.紅色
繪圖(emaVal,“EMA”)

最後,繪製蠟燭圖,確保包含顏色參數:

研究(標題=“幣安學院腳本”,overlay=true)
emaLength = input(title="EMA 長度", type=input.integer, defval=25, minval=0)
emaVal = ema(關閉, emaLength)
rsiLength = input(title="RSI 長度", type=input.integer, defval=25, minval=0)
rsiVal = rsi(收盤價, rsiLength)
顏色 = 接近 > emaVal 和 rsiVal > 50 ?顏色.綠色 : 顏色.紅色
繪圖(emaVal,“EMA”)
plotcandle(開盤價、最高價、最低價、收盤價、顏色=顏色)

這就是劇本!將其添加到圖表中以查看其實際情況。


Tradingview script in action

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


結束語

在本文中,我們介紹了一些基本示例,說明您可以使用 TradingView 的 Pine 編輯器執行哪些操作。到目前爲止,您應該有信心對價格圖表進行簡單的註釋,以便從您自己的指標中獲得更多見解。

我們在這裏只對幾個指標感興趣,但是很容易啓動更復雜的指標 - 通過從 New 中選擇內置腳本或自己編寫它們。

缺乏靈感?以下文章可能會爲您的下一個項目提供一些想法:

  • 拋物線轉向指標簡要指南

  • 掌握斐波那契回撤指南

  • 領先指標和滯後指標的解釋

  • MACD 指標解釋