導語
如果沒有正確的交易工具,就無法進行有效的技術分析。強大的交易策略有助於避免常見錯誤,改善風險管理,提升識別並利用機會的能力。
對許多人來說,TradingView是一個有問必答的圖表平臺。這一強大的HTML5網絡應用程序提供技術分析工具中心,幫助數百萬用戶追蹤外匯、加密貨幣以及傳統股市的動向。
TradingView擁有諸多強大功能:允許用戶追蹤多個交易平臺上的資產,並在其社交網站上發佈對交易的看法。本文將重點介紹其定製功能。我們將使用TradingView的專屬編程語言Pine Script,它允許我們對圖表佈局進行更細緻的控制。
開始操作吧!
什麼是Pine Script?
Pine Script是一種可用於修改TradingView圖表的腳本語言。TradingView平臺已經提供了許多類似功能,但Pine Script的功能更強大。無論是想更換K線圖顏色,還是想回溯測試一個新策略,Pine Editor支持您依據自身需求定製實時圖表。
代碼本身已有完備記載,所以一定要查看用戶手冊瞭解詳情。本文旨在討論一些基礎知識,並介紹在加密貨幣交易中可以派上用場的指標。
創建
Pine Script簡單易用。我們編寫的任何代碼都是在TradingView的服務器上運行,因此我們可以通過瀏覽器訪問編輯器並開發我們的腳本,無需額外下載或配置。
在本教程中,我們將繪製比特幣/幣安USD(BTCBUSD)貨幣對圖表。如果您還沒有幣安賬戶,請創建一個免費賬戶(也可創建專業會員賬戶,但在本指南中沒有必要)。
打開鏈接,會看到一張類似於以下的圖表:

您的圖表數據可能更新。
現在,我們想獲取擁有豐富功能的圖表,點擊按鈕進入。然後我們就可以看見更詳細的視圖、繪圖工具、繪製趨勢線的選項以及其他功能。

功能齊全的圖表。您可通過點擊高亮選項卡上方的視圖來調整時間表。
我們不會討論如何使用現有的各種工具,但如果真的想要開展技術分析,我們強烈建議您先熟悉這些工具。在左下方(如圖概述),您會看到幾個不同選項卡——點擊Pine Editor。
The Pine Editor

這個編輯器很神奇。我們會告訴它我們想做什麼,然後點擊添加到圖表,就會看到我們添加的註釋出現在圖表中。請注意,如果我們同時添加幾個註釋,就會混成一團,所以我們會在例子中刪除(在圖表中單擊右鍵>刪除指標)。
可以看到,我們已經有幾行代碼了。讓我們點擊添加到圖表,看看會發生什麼。

將第二個圖表添加到原始圖表下方。新圖表剛好顯示相同數據。將鼠標放在我的腳本上,並點擊×刪除。現在,讓我們來研究一下代碼。
研究(“我的腳本”)第一行只是設置我們的註釋。僅需您想調用的指標名稱(本例中爲“我的腳本”),但我們還可以添加一些可選參數。其中一個是覆蓋,該參數指示TradingView將指標放到現有圖表中(而不是新圖表中)。從我們列舉的第一個例子中可以看出,默認值爲false。雖然現在還看不到它是如何操作的,但overlay=true會將指標添加到現有圖表中。
繪製圖表(收盤)這條線是繪製比特幣收盤價圖表的指令。繪製圖表只是給我們提供一張折線圖,但我們也可以呈現K線圖和條形圖,我們很快就會看到。
現在,讓我們試試以下方法:
//@version=4 study("My Script", overlay=true) plot(open, color=color.purple)添加完畢後,應該能看到第二個圖表(看起來像是原圖表向右移動了)。我們做的是繪製開盤價圖表,由於當天的開盤價就是前一天的收盤價,所以這些圖表走勢完全相同是合理的。
好了!讓我們刪除當前註釋(記住,單擊右鍵並點擊刪除指標即可實現)。將鼠標放在比特幣/BUSD上,並點擊隱藏按鈕,可刪除當前圖表。
許多交易者更喜歡使用K線圖,比起我們剛纔做的那種簡單圖表,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線圖的圖表。

幹得漂亮!
繪製移動平均線(MA)
我們已經完成了一些基本操作。讓我們來看看我們的第一個自定義指標——指數移動平均線,或EMA。這個工具很實用,它能使我們過濾掉任何市場噪音,使價格行爲變得平緩。
EMA與簡單移動平均線(SMA)略有不同,它更看重最近的數據。它傾向於對突然的變化作出更多反應,並經常用於短期操作(例如,在日間交易中)。
簡單移動平均線(SMA)
我們也可以繪製SMA,這樣我們之後就可以對兩者進行對比了。將該行添加到您的腳本中。
plot(sma(close, 10))這繪製的是前十天平均數圖表。調整括號裏的數字,看長度變化時,曲線是如何變化的。

SMA基於前十天的數據。
指數移動平均線(EMA)
EMA的理解比較複雜,但不用擔心。我們先來分析一下這個公式:
EMA=(收盤價-前一天的EMA)*倍數-前一天的EMA這說明什麼呢?每一天,我們會在前一天的基礎上計算出一個新的移動平均線值。倍數是“加權”最近的天數,用以下公式計算:
倍數=2/(EMA長度+1)與簡單移動平均線一樣,我們需要爲EMA的長度賦值。在句法上,繪製EMA函數與繪製SMA函數類似。將其與SMA一起繪製,您就可以將兩者進行對比了。
//@version=4 study("My Script", overlay=true) plot(sma(close, 10)) plot(ema(close, 10))
您會看到這兩種類型的MA略有不同。
➟ 想要開啓加密貨幣之旅?歡迎前往幣安購買比特幣!
內置腳本
到目前爲止,我們已經手動編寫了我們的代碼,您會有一個直觀感受。現在我們會介紹一些能夠節約時間的功能,特別是如果我們要編寫更復雜的腳本,但又不想從頭開始的時候。
在編輯器右上方,點擊新建。會得到一個顯示各種不同技術指標的下拉菜單。點擊移動平均指數,查看EMA指標的源代碼。

點擊並將其添加到圖表中。
這個指數與我們的不同,您會注意到input()函數。從可用性角度來看,這些都很不錯,因爲您可點擊此框……

……並點擊設置的齒輪圖標,在彈窗中輕鬆更改一些數值。

我們將在下一個腳本中添加幾個input()函數來演示這一內容。
繪製相對強弱指數(RSI)指標圖表
相對強弱指數(RSI)是技術分析中的另一個重要指標。稱爲動量指標,衡量資產買賣的價格。在0到100範圍內,RSI得分嘗試告知投資者資產是超買還是超賣。通常情況下,如果一項資產的得分小於或等於30分,就可能被認爲是超賣,而得分大於或等於70分,就可能是超買。
前往新建>RSI策略,您可親自查看。RSI一般以14爲週期進行測量(即14小時或14天),但您可以自由調整這一設置來適應自己的策略。
將RSI添加到圖表中。您應該看到現在顯示的幾個箭頭(由該代碼中的strategy.entry()函數定義)。RsiLE表示延長資產的潛在機會,因爲它可能被超賣。RsiSE強調在資產超買時可能做空的點。請注意,與所有指標一樣,您沒必要把這些指標作爲價格將要下降/增加的鐵證。
回溯測試
有一種方法可供我們測試自己的自定義指標。雖然過去的表現不能保證未來的結果,但對我們的腳本進行回溯測試可以使我們瞭解其在捕捉信號方面的有效性。
下面我們將舉一個簡單的腳本例子。我們計劃一個簡單明瞭的策略,當比特幣的價格跌至1.1萬美元時進入多頭頭寸,當價格超過1.13萬美元時退出多頭頭寸。然後我們可以看到這一策略在歷史上的盈利情況。
//@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")這裏我們把進入和退出定義爲變量——兩者都是輸入,意味着我們以後可以在圖表中對兩者做出更改。我們還設置了價格變量,取每期的收盤價。然後,我們有一些邏輯按照if句式進行。如果括號中部分爲真,那麼它下面的縮進區塊就會被運行。否則,會被跳過。
因此,如果價格小於或等於我們期望的入市價,且第一個表達式評估爲真,我們將建立一個多頭頭寸。一旦價格等於或超過所需的退市價,第二個區塊將被觸發,關閉所有未平倉頭寸。
我們用箭頭爲圖表添加註釋,顯示我們進入/退出的位置,所以我們用評價參數來指定標記這些點的內容(在本例中是"BuyTheDip"和"SellTheNews")。複製代碼,並將其添加到圖表中。

現在您可以在圖表中看到這些指標。可能需要放大。
TradingView會自動將您的規則應用於較早的數據。您還會注意到,TradingView從Pine Editor切換到策略測試者選項卡。以便讓您看到潛在利潤概覽、交易清單以及各指標的表現。

我們已經進入和退出的頭寸。
結合起來
現在,我們可以利用目前爲止看到的一些概念來編寫我們自己的腳本。我們會將EMA和RSI結合起來,用它們的值來影響K線圖的顏色,使我們可以輕鬆看懂。
但這並不構成理財建議,在使用這些指標方面,客觀地說並沒有完全正確的方法。與其他所有工具一樣,應該將其與其他工具相結合,制定自己的投資策略。
現在讓我們來研究一下新腳本。從圖表中刪除所有指標,同時隱藏比特幣/BUSD圖表,這樣我們就有一個簡潔的操作背景了。
讓我們先研究定義。隨意命名,只要確保設置overlay=true即可。
study(title="Binance Academy Script", overlay=true)記住我們前面的EMA公式。我們需要使用EMA長度來計算出倍數。讓我們把它變成需要整數位的輸入,所以不要留小數位。我們還會設定最小值(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線圖,請務必包含顏色參數:
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指標的比特幣/BUSD圖表。
總結
在本文中,我們通過一些基本例子來向您演示了TradingView上Pine Editor的功能。現在,您應該有信心對價格圖表進行簡單註釋,以便從自己的指標中獲得更多見解。
我們在本文中只介紹了其中幾個指標,但建立更復雜的指標並不難——可選擇新建內置腳本或自己編寫內置腳本。
依然缺乏靈感?下列文章可能爲您的下一個項目提供一些想法:
《拋物線指標簡明指南》
《斐波那契回調學習指南》
《先行指標和滯後指標詳解》
指數平滑移動平均線(MACD)指標詳解
