YingYun
YingYun

寫一些WEB2及WEB3相關文章,實用性為重,不炒作與推薦項目

交易#2-技術分析篇 : 腳本語言Pine Script基礎應用詳解

技術分析第二篇,撰寫文章同時,也是希望能夠將已經掌握的技術性的內容,能夠更加融會貫通,並與社區上的大家分享,TradingView是每個交易者都定會用到的圖表工具,實際上作為工具應用篇章,原本預計是作為第一篇發出來的,但其內容比較多,整理及撰寫時間花了比較久,作為交易篇章來說,我認為學習這些基礎是相當必要的。

TradingView

TradingView 是一個廣泛受歡迎的網站和應用程式,為交易者和投資者提供了一個強大且全面的交易工具和社區平台。可以進行技術分析、追蹤市場、分享交易觀點並與其他交易者互動。,TradingView 提供了強大的圖表分析工具。可以使用各種技術指標和繪圖工具來進行技術分析,並進行詳細的市場研究。無論您是使用簡單的移動平均線還是較為複雜的布林帶,TradingView 都具有廣泛的指標選擇,以滿足不同交易者的需求,還可以將這些分析結果應用於不同的時間框架,從短期交易到長期投資,經由實時市場數據和報價,追蹤全球市場的股票、外匯、加密貨幣等資產的價格走勢。無論您是日內交易者還是長期投資者,TradingView 都能提供最新的市場資訊,輔助我們做出交易決策。

TradingView基礎功能很多,完全零基礎建議上Youtube看著操作一遍,像是介面設置、加入指標等等,基本操作方面如果沒有接觸過一定是需要先熟悉一下,由於需要大量圖片,文字比較難說明,這邊就不過多介紹基本操作了。

Pine Script

Pine Script 是 TradingView 平台上的一種專有程式語言,專為開發自訂技術指標和策略而設計。它是一種簡單易學的語言,同時也非常強大,讓用戶能夠在 TradingView 平台上創建和自動化交易策略。

首先進入TradingView,進入Pine編輯器

在TradingView,打開Pine編輯器

接下來可以看到編輯介面,也就是Pine編輯器,新增程式後可以處存檔案,以便日後使用,若要新增指標或策略,直接按右鍵也能快速的新增,接下來從最基礎的範例範例開始逐行講解,我會針對程式做講解,但一些語法上基礎的細節如果有問題可以參考官方Pine Script手冊

Pine編輯器

SMA(Simple Moving Average,簡單移動平均線)

可以看到圖中,我已經將第一個程式寫上去了,SMA(Simple Moving Average,簡單移動平均線)是一種常用的技術指標,用於平滑價格數據並識別趨勢的方向。通過計算一段時間內的價格平均值來建立起來,在Pine Script中,您可以使用sma()函數來計算SMA。該函數接受兩個參數:數據源和期間。

  • 數據源:在大多數情況下,您會將SMA應用於收盤價(close),因為收盤價是最常用的價格數據。

  • 期間:表示要計算SMA的時間段。例如,如果要計算14日的SMA,則將期間設置為14。

寫法範例如下 :

//@version=4
study(title="Simpl,e Moving Average", shorttitle="SMA", overlay=true)
length = input(14, minval=1, title="SMA Length")
sma = sma(close, length)
plot(sma, color=color.blue, title="SMA")

範例詳解:

//@version=4:指定腳本使用的Pine Script版本。

study(title="Simple Moving Average", shorttitle="SMA", overlay=true):設置指標的標題和視覺化選項,overlay=true表示將指標繪製在價格圖表上方。

length = input(14, minval=1, title="SMA Length"):定義一個用戶輸入變數length,表示SMA的計算期間,並設置其預設值為14。

sma = sma(close, length):使用sma()函數計算收盤價的SMA,將結果賦值給sma變數。

plot(sma, color=color.blue, title="SMA"):使用plot()函數將SMA繪製在圖表上,並設置顏色為藍色。

這個示例將在圖表上繪製一條藍色的SMA線,該線代表收盤價的14日移動平均,結果如下 :

SMA繪製


strategy - 自動化交易 - 平均線交叉

平均線交叉是一種常見的技術分析策略,常常聽到技術分析中,大家所說的黃金交叉、死亡交叉等,利用不同期間的平均線之間的交叉點來識別買入和賣出信號。該策略通常基於兩條移動平均線:快速均線和慢速均線。

平均線交叉策略:

  1. 快速均線:這是一條計算較短期間內的平均價格的移動平均線。它對價格變動更敏感,因此反應更快。

  2. 慢速均線:這是一條計算較長期間內的平均價格的移動平均線。它對價格變動較不敏感,因此更平滑。

在平均線交叉策略中,當快速均線從下方交叉上穿慢速均線時,這被視為一個買入信號。這意味著較短期間內的價格上升趨勢開始,可能代表著股價上漲的趨勢。

相反,當快速均線從上方交叉下穿慢速均線時,這被視為一個賣出信號。這表示較短期間內的價格下降趨勢開始,可能代表著股價下跌的趨勢。

這種策略的核心思想是當短期均線向上交叉長期均線時,表示市場可能處於上升趨勢,因此可以考慮買入。相反,當短期均線向下交叉長期均線時,表示市場可能處於下降趨勢,因此可以考慮賣出。

儘管平均線交叉策略在某些情況下可能有效,但它仍然是一種基礎的技術分析策略,並且無法保證績效。交易者可以根據自己的需求和交易風格進行調整和優化,並結合其他指標和技術工具來進一步改進策略的準確性和可靠性。

下面我先寫個範例 :

//@version=4
strategy(title="Moving Average Crossover", shorttitle="MAC", overlay=true)

fast_length = input(9, minval=1, title="Fast MA Length")
slow_length = input(21, minval=1, title="Slow MA Length")

fast_ma = sma(close, fast_length)
slow_ma = sma(close, slow_length)

if crossover(fast_ma, slow_ma)
    strategy.entry("Buy", strategy.long)

if crossunder(fast_ma, slow_ma)
    strategy.entry("Sell", strategy.short)

//@version=4:指定腳本使用的Pine Script版本。

strategy(title="Moving Average Crossover", shorttitle="MAC", overlay=true):設置策略的標題和視覺化選項,overlay=true表示將策略繪製在價格圖表上方。

fast_length = input(9, minval=1, title="Fast MA Length")slow_length = input(21, minval=1, title="Slow MA Length"):定義兩個用戶輸入變數fast_lengthslow_length,分別表示快速均線和慢速均線的計算期間。

fast_ma = sma(close, fast_length)slow_ma = sma(close, slow_length):使用sma()函數計算快速均線和慢速均線,並將結果賦值給fast_maslow_ma變數。

if crossover(fast_ma, slow_ma):檢查快速均線是否從下方交叉上穿慢速均線。

strategy.entry("Buy", strategy.long):如果上述條件成立,則使用strategy.entry()函數進行買入操作。

if crossunder(fast_ma, slow_ma):檢查快速均線是否從上方交叉下穿慢速均線。

strategy.entry("Sell", strategy.short):如果上述條件成立,則使用strategy.entry()函數進行賣出操作。

執行結果如下 :

平均線交叉

其根本邏輯為,當快速均線從下方交叉上穿慢速均線時,觸發買入信號;當快速均線從上方交叉下穿慢速均線時,則觸發賣出信號。

要注意的是策略調整,可以參考網路很多人分享的策略做出預測,根據不斷績效來調整程式碼,這可能會用到其他的函數或資料庫,需要更深入的學習探討才能創建更有效的策略,主流平台中,平均線交叉是常用的技術分析策略。

以上為兩種最主要的使用方式,新建指標以及自動化交易的基礎,可以看到第一個範例中我開頭使用了study,這是基於Vision4的寫法,V5是使用indicator寫法,兩種常用的類型都稍微認識了,接下來的交易策略也是簡單且受歡迎的技術分析方法

基於布林帶(Bollinger Bands)的交易策略

布林帶是一種常見且廣泛應用於市場分析的技術指標。許多交易者使用布林帶來識別價格波動的範圍和可能的轉折點。布林帶策略是廣泛應用的技術工具,可應用於不同的市場和時間框架。

  • 波動性的衡量:布林帶通過中間線和上下通道的構建,提供了衡量價格波動性的指標。這有助於識別市場的高波動和低波動時期,並在合適的時機進行交易。

  • 趨勢與反轉的識別:布林帶還提供了識別趨勢和可能反轉的線索。當價格趨向上方通道時,可能表明上升趨勢;當價格趨向下方通道時,可能表明下降趨勢。當價格觸及通道邊界時,也可能表明反轉的機會。

  • 簡單易懂:布林帶策略相對簡單易懂,適合初學者學習。它基於基本的統計原理,並使用常見的技術指標計算。對於新手交易者來說,這是一個很好的起點,可以建立對技術分析的基礎理解。

  • 可自定義性:布林帶策略具有一定的自定義性,您可以根據自己的需求和交易風格進行修改和調整。您可以調整計算期間和偏差倍數,也可以添加其他指標和過濾器來提高策略的準確性和適應性。

儘管布林帶策略有其優勢,但在真實交易之前使用模擬交易或回測來評估和驗證策略的效果。此外,始終謹慎管理風險,設置止損和止盈水平,並確保具備充分的交易知識和技能,這也是學習技術分析的目的。

//@version=4
Strategy("Bollinger Bands Strategy", shorttitle="BB Strategy")
// 設置布林帶的計算期間和偏差
length = input(20, minval=1, title="BB Length")
mult = input(2, minval=0.1, title="BB Deviation")
// 計算布林帶指標
basis = sma(close, length)
deviation = mult * stdev(close, length)
upperBand = basis + deviation
lowerBand = basis - deviation
// 判斷進出場條件
enterLong = crossover(close, upperBand)
exitLong = crossunder(close, basis)
enterShort = crossunder(close, lowerBand)
exitShort = crossover(close, basis)
// 定義進出場訊號
strategy.entry("Long", strategy.long, when=enterLong)
strategy.close("Long", when=exitLong)
strategy.entry("Short", strategy.short, when=enterShort)
strategy.close("Short", when=exitShort)
// 繪製布林帶
plot(basis, "Basis", color=color.blue)
plot(upperBand, "Upper Band", color=color.red)
plot(lowerBand, "Lower Band", color=color.green)

我在這邊演示了一個基於布林帶的簡單交易策略,是較為簡單的雛型

//@version=4:指定腳本使用的Pine Script版本。

study("Bollinger Bands Strategy", shorttitle="BB Strategy"):設置腳本的標題。

length = input(20, minval=1, title="BB Length"):定義一個用戶輸入變數length,表示計算布林帶指標所需的期間,預設值為20。

mult = input(2, minval=0.1, title="BB Deviation"):定義一個用戶輸入變數mult,表示布林帶的偏差倍數,預設值為2。

basis = sma(close, length):使用sma()函數計算布林帶的中間線,這裡使用的是收盤價的簡單移動平均。

deviation = mult * stdev(close, length):使用stdev()函數計算布林帶的標準差,並乘以偏差倍數得到上下通道的寬度。

upperBand = basis + deviation:計算布林帶的上通道。

lowerBand = basis - deviation:計算布林帶的下通道。

enterLong = crossover(close, upperBand):判斷是否收盤價上穿上通道,表示進場買入信號。

exitLong = crossunder(close, basis):判斷是否收盤價下穿中間線,表示出場賣出信號。

enterShort = crossunder(close, lowerBand):判斷是否收盤價下穿下通道,表示進場賣出信號。

exitShort = crossover(close, basis):判斷是否收盤價上穿中間線,表示出場買入信號。

strategy.entry("Long", strategy.long, when=enterLong):定義進場買入訊號,使用strategy.long表示買入方向。

strategy.close("Long", when=exitLong):定義出場賣出訊號。

strategy.entry("Short", strategy.short, when=enterShort):定義進場賣出訊號,使用strategy.short表示賣出方向。

strategy.close("Short", when=exitShort):定義出場買入訊號。

plot(basis, "Basis", color=color.blue):繪製布林帶的中間線,並設置顏色。

plot(upperBand, "Upper Band", color=color.red):繪製布林帶的上通道,並設置顏色。

plot(lowerBand, "Lower Band", color=color.green):繪製布林帶的下通道,並設置顏色。

基於布林帶(Bollinger Bands)的交易策略


策略根據收盤價和布林帶的上下通道進行交易判斷。當收盤價上穿上通道時,生成進場買入信號,當收盤價下穿中間線時,生成出場賣出信號。同樣,當收盤價下穿下通道時,生成進場賣出信號,當收盤價上穿中間線時,生成出場買入信號。策略中使用的strategy.entry()strategy.close()函數用於進出場訊號的管理。

相對強弱指標(RSI)

學習相對強弱指標(RSI)是因為它是一個相對簡單且廣泛使用的技術指標,對於初學者來說相對容易理解和應用:

  1. 相較於其他複雜的指標和技術分析工具,RSI的計算方法相對簡單明瞭。它使用價格變動的相對強弱來提供交易信號,這使得初學者可以較容易理解和應用。

  2. RSI可以提供超買和超賣的信號,幫助識別市場的過度購買和過度賣出條件。這些信號可以作為買入和賣出的參考,幫助理解和為在適當的時機進行交易。

  3. RSI還可以提供趨勢反轉的信號。當RSI從超買或超賣區域回落並跌破特定閾值時,這可能意味著市場趨勢即將反轉。這對於初學者來說是一個重要的參考點,可以幫助他們抓住趨勢轉折的機會。

  4. RSI在許多交易市場和時間框架中都被廣泛應用,包括股票、外匯、期貨等。可以將所學應用於不同的市場和交易工具中。

RSI指標介紹:

  • RSI的計算:RSI使用了一個計算式來衡量價格變動的強度和速度。它基於一定期間內的價格變化來計算,通常使用14個交易日作為常見的計算期間。

  • RSI的範圍和解讀:RSI的值範圍在0到100之間。一般來說,RSI在70以上被視為超買區域,意味著市場可能過度上漲,可能發生價格的回調或反轉;RSI在30以下被視為超賣區域,意味著市場可能過度下跌,可能發生價格的反彈或反轉。

RSI的使用方法:

  • 超買和超賣信號:當RSI超過70時,表示市場處於超買狀態,可能是賣出的時機。當RSI低於30時,表示市場處於超賣狀態,可能是買入的時機。

  • 轉向點和趨勢反轉:當RSI從超買區域回落下跌,並跌破70時,可能意味著市場的上漲趨勢結束,可能發生趨勢反轉。相反,當RSI從超賣區域上升,並超過30時,可能意味著市場的下跌趨勢結束,可能發生趨勢反轉。

  • RSI的背馳現象:當價格形成高點或低點時,同時RSI的相應變化形成低點或高點,而不是與價格形成相應的高點或低點時,稱為背馳現象。背馳可以提供反轉的信號。

  • RSI的設置:除了計算期間外,還可以調整RSI的設置來改變其靈敏度和準確性。一般來說,較短的計算期間會使RSI更靈敏,但也更容易產生錯誤信號,而較長的計算期間則會使RSI更平滑,但可能會延遲信號的產生。

//@version=4
study(title="Relative Strength Index", shorttitle="RSI", overlay=false)
length = input(14, minval=1, title="RSI Length")
rsi = rsi(close, length)
plot(rsi, color=color.blue, title="RSI")
hline(70, "Overbought", color=color.red)
hline(30, "Oversold", color=color.green)

//@version=4:指定腳本使用的 Pine Script 版本。

study(title="Relative Strength Index", shorttitle="RSI", overlay=false):設置指標的標題和視覺化選項,overlay=false 表示將指標繪製在獨立的窗格中。

length = input(14, minval=1, title="RSI Length"):定義用戶輸入變數 length,表示 RSI 的計算長度。

rsi = rsi(close, length):使用 rsi() 函數計算 RSI,並將結果賦值給 rsi 變數。

plot(rsi, color=color.blue, title="RSI"):使用 plot() 函數將 RSI 繪製在圖表上,並設置顏色為藍色。

hline(70, "Overbought", color=color.red)hline(30, "Oversold", color=color.green):使用 hline() 函數繪製 RSI 的超買和超賣水平線,並分別設置顏色為紅色和綠色。


相對強弱指標(RSI)

可以看到直接帶入RSI函數就能簡單的繪製了,RSI是一個單一指標,僅提供了價格變動的相對強弱信息,通常會與其他技術指標和分析工具一起使用,以獲得更全面的市場分析和交易決策。同樣,也需要模擬來評估和驗證策略的效果

總結

本篇為我整理的技術分析筆記第二篇,撰寫文章同時,也期望能夠將已經掌握的技術性的內容更加融會貫通,並與社區上的大家分享,TradingView是每個交易者一定會用到的圖表工具,也是每個學習技術分析必須學習的軟體,多學習總不會錯,對相關領域有興趣的朋友也可以多多學習,創造更加有趣的策略







CC BY-NC-ND 4.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

第一个支持了这篇作品
加载中…
加载中…

发布评论