【TradingView】【RSI指標策略】程式碼逐條解說

【TradingView】【RSI指標策略】程式碼逐條解說

更新於 發佈於 閱讀時間約 11 分鐘
投資理財內容聲明

首先先來介紹一下RSI的公式跟原理

RSI (相對強弱指標) = 100*n根K棒內漲幅加總/n根內漲幅加總+n根內跌幅加總)

其實RSI的原理非常簡單,舉例:n若為5根K棒,其中三根漲,漲幅分別為2點、5點及7點,兩根跌,跌幅分別為4點及7點

套用公式即可得到RSI為:100*(2+5+7)/[(2+5+7)+(4+7)]=56

RSI指標表達出,近n根K棒內,買方對盤勢的相對強勢程度。但RSI用在小型股時要特別注意,由於小型股價格較容易操縱,要檢視漲勢是否為曇花一現,以上例來說,若五根內只有一根漲,但漲幅為40點,其他四根跌幅分別為2點、4點、7點以及8點

其RSI將為:100*40/[40+(2+4+7+8)]=66,還是相對高。此時可以回看那根大漲是否為曇花一現的消息面漲幅,待消息消散,是否仍會持續看漲!


在了解RSI基本原理及公式之後

我們就可以進入Tradingview的程式碼講解環節

//@version=5
strategy("RSI Strategy", overlay=true)

//@version=5 是告訴TradingView該用哪種版本編譯這次的程式碼

我們之後都會用version5來講解策略範例

strategy()是宣告這個策略的基本設定函數

第一個參數"RSI Strategy"則是將這個策略取名

第二個參數overlay則是設定是否把這個策略覆蓋在圖表上面

我們設定為overlay=true,即把進出場訊號標在K棒上面


length = input.int(title="Length", defval=14)
oversold = input.int(title="Oversold", defval=20)
overbought = input.int(title="Overbought", defval=80)

首先,我們先設定三個變數length、oversold還有overbought

分別為rsi的週期長度、超賣區以及超買區

input.int()函數,它是建立一個input物件並利用其中的方法int

建立input物件的好處是能讓我們事後在平台軟體上就可以修改參數

不用再回來原始碼這裡修改代碼

int則是integer的縮寫,即是這個參數需要為整數

然而,三行代碼的頭一個參數title都是設定名稱

第二個參數defval是default value的縮寫

也就是這個數值的預設值,譬如rsi預設取14天,defval就設定為14

同理,oversold跟overbought各自預設為20以及80


rsiValue = ta.rsi(close, length)
buySignal = ta.crossover(rsiValue, overbought)
sellSignal = ta.crossunder(rsiValue, oversold)

ta.rsi()函數是利用TradingView內建的ta(Technical Analysis)物件

這個內建物件可以直接把rsi的值帶出來

我們只需要設定rsi指標的close以及length參數

close即是設定rsi要用成交價計算

length則是我們要取的rsi期間,我們這次舉例預設為14天

接下來我們設定buySignal買進訊號以及sellSignal賣出訊號

用TradingView內建物件ta裡面的crossover方法

crossover方法即為「第一個參數向上穿越超買區overbought」的那根K棒

crossunder方法即為「第一個參數向下穿越超賣區oversold」的那根K棒

(我們這次的範例是用順勢策略作示範)

讀者會發現後面第二個參數都是我們在上一段設定的值

分別為length、overbought跟oversold

上一段先宣告這三個變數,就是為了在此建立訊號用


if (buySignal)
strategy.entry("Buy", strategy.long)
if (sellSignal)
strategy.entry("Sell", strategy.short)

這一段就是建立進出場訊號了!

跟絕大部分程式交易語法一樣,都是建立if條件式

if 後面就是利用我們上一段建立的buySignal成立條件

後面則是用TradingView內建物件strategy裡的進場方法,即strategy.entry()

第一個參數"Buy"是幫這個訊號取名

他會在進場的時候把這時候取的名稱標記在圖表上

第二個參數strategy.long即為進一口多單,同理可推第二段空單進場!

這裡要特別注意的是,就像Multicharts的語法buy跟sellshort一樣

這裡的strategy.long跟strategy.short也都會直接反向建倉

譬如現在持有一口多單,策略偵測到空頭訊號,會直接下兩口空單

部位會直接變成一口空單,即不會有空手的階段

這是一個策略的最初雛形,尚未有停損停利設定的最原始狀態


plotshape(buySignal, style=shape.triangleup, 
location=location.belowbar, color=color.green, size=size.small)
plotshape(sellSignal, style=shape.triangledown,
location=location.abovebar, color=color.red, size=size.small)

這一段我們來幫訊號標(plot)上圖表吧

plotshape()函數是將零星的標示標於圖表的函數

第一個參數buySignal即為欲標記的情形,即是我們上面所設定的"買進訊號"

第二個參數style即為當第一個參數設定的訊號出現時,出現的標記圖形形狀

(這裡要特別注意的是,跟上一段的"Buy"會標記在圖表不一樣,譬如現在手上有一口多單,因為我們預設最多一口,此時又出現buySignal就不會再出現"Buy",而只會出現我們現在在這裡設定的buySignal的標示)

第三個參數location是設定希望上一個參數設定的圖案要置於K棒上方還是下方

color參數則為設定標示顏色,此座標TradingView很貼心

可以直接用滑鼠選顏色,各位客官用了就知道!

size參數則為設定標示圖形大小,除了我們這個範例設定為small

它還可以設定為huge、large、normal以及tiny,由大到小排列

然而sellSignal同理可推,讀者可以自行做上下程式碼的比較!


那這樣我們就完成了今天在TradingView上用pine script程式碼的演示!

這裡把整段程式碼貼在下面,方便讀者可以一次複製

直接貼在TradingView編碼視窗,然後按「新增到圖表」就會跑出策略績效了

//@version=5
strategy("RSI Strategy", overlay=true)

length = input.int(title="Length", defval=14)
oversold = input.float(title="Oversold", defval=20)
overbought = input.float(title="Overbought", defval=80)

rsiValue = ta.rsi(close, length)
buySignal = ta.crossover(rsiValue, overbought)
sellSignal = ta.crossunder(rsiValue, oversold)

if (buySignal)
strategy.entry("Buy", strategy.long)
if (sellSignal)
strategy.entry("Sell", strategy.short)

plotshape(buySignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

讀者要注意,要複製到右下角的程式碼喔,不要漏掉了!


尚未註冊TrdingView的投資朋友歡迎使用Kevin專屬註冊連結:

https://www.tradingview.com/?aff_id=131489

享一個月免費試用Premium帳號,到期後可享50%的續約優惠!

(即使不續約,仍可繼續使用TradingView免費版功能)


⭐目前凱龍承接三大項業務,歡迎洽詢:

  1. 金融量化系列|凱龍下單機租用 & TradngView & MultiCharts 程式碼諮詢撰寫
  2. Line官方系列|凱龍Line官方模組租用 & Line官方機器人全系列諮詢架設
  3. 網站SaaS平台|凱龍雲端應用 & 網站SaaS平台諮詢架設

⭐凱龍Line官方:@979qbbfo

⭐凱龍官方網站:https://kevinwtf524.com/

⭐instagram:https://www.instagram.com/kevinwtf524/

⭐YouTube:https://www.youtube.com/@kevinwtf524

avatar-img
Kevin 凱龍
21會員
17內容數
嗨!我是凱龍負責人Kevin - ⭐️凱龍金融量化(期貨程式交易看這裡) 凱龍下單機 $545起/月 - ⭐️凱龍商城(餐飲業線上訂餐看這裡) 凱龍訂餐模組 $690/月 - ⭐️專案客製(各類客製專案看這裡) 金融量化策略撰寫、Line@機器人及各類網站客製架設 - ⭐凱龍官方Line:@979qbbfo
留言
avatar-img
留言分享你的想法!