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

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

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

我們首先,先介紹一下MACD的公式及原理

快線:12根價格指數平均線

慢線:26根價格指數平均線

macd: 快線-慢線

signal: 9根的macd指數平均線

柱狀體:macd-signal


MACD最原始的策略

當柱狀體由負值轉正,我們做多

當柱狀體由正值轉負,我們做空

但隨著時代的演進,MACD的運用早已變幻莫測

但我們今天先以原始型態來做介紹


在了解MACD交易理念後,我們就來一窺TradingView pine script語法

//@version=5
strategy(title="MACD strategy", overlay=false)

跟Multicharts不同的是,pine script不需要先宣告參數以及變數

"//"後的是註記文字,不會被編程,這裡的@version=5是註記使用版本五

版本五與版本四語法上會稍有不同,這裡介紹將以版本五為主

strategy( )函數是一個pine script內建函數,用來設定策略的基本設置

title="MACD strategy" 是將策略名稱設定為"MACD strategy"

overlay=false 是將MACD指標線置於圖表下方,不要重疊於圖表


fastLen = input.int(title="Fast Length", defval=12)
slowLen = input.int(title="Slow Length", defval=26)
signalLen = input.int(title="Signal Length", defval=9)

設置這個區域的程式碼,是為了讓我們能直接在版面上調整參數

input.int( )是設置了一個能輸入整數數字的參數輸入選項

title="" 是設置了這個參數的名稱

defval=12 則是為這個參數設置了Default Value,這個示範為12根K棒


fastMA = ta.ema(close, fastLen)
slowMA = ta.ema(close, slowLen)
macd = fastMA - slowMA
signal = ta.ema(macd, signalLen)

這個區塊的程式碼主要要介紹 ta.ema() 這個內建函數

"ta"是"Technical Analysis"的縮寫,是pine script內建的技術指標函數

而ema則與我們Multicharts的XAverage一樣,是指數平均函數

指數平均函數跟我們一般平均函數的差別是

指數平均函數會把近期的價格加權加重,如此一來會使得指數均線更加貼近行情

使用指數平均是MACD的預設設定


plot(macd, color=color.blue, title="MACD")
plot(signal, color=color.red, title="Signal")

plot( )跟Multicharts一樣是畫上指標的函數

plot(macd, color=color.blue, title="MACD")

第一個參數是欲使用的變數,第二個參數是指標顏色

也可以用color.rgb(***, ***, ***)來調整細節顏色

第三個參數則是為這個指標設定一個名稱


buySignal = ta.crossover(macd, signal)
if (buySignal)
strategy.entry("Buy", strategy.long)
sellSignal = ta.crossunder(macd, signal)
if (sellSignal)
strategy.entry("Sell", strategy.short)

buySignal = ta.crossover(macd, signal)

這段是程式碼是編寫買進訊號(buySignal),其輸出為布林值,即True和False

並運用pine script內建ta.crossover(macd, signal)函數

表達macd柱狀體由負值轉正,亦即macd大於signal的那個瞬間

ta.crossover(參數一, 參數二)

即是放在前面的參數一大於參數二的那個瞬間叫做crossover

前後位置預設的,編寫的時候要注意不要把前後順序搞錯了!

strategy.entry("Buy", strategy.long)則是如此表達

第一個參數"Buy"是會顯示在圖表上的名稱

第二個參數則是表達進場多單

這一區塊程式碼要特別注意的是

pine script的"if條件式"是不需要":"或者"then"等等的條件式編寫

甚至連在這個範例舉出的"if (buySignal)"中的"( )"都不是必要的!

但還是建議可以加上括號,避免在整理及維護的時候難於閱讀


那我們這裡就詳細的介紹完了這個用pine script撰寫的MACD策略

TradingView是一個非常非常強大的看盤軟體

在國際間享負盛名

在之後的文章中

除了用pine script介紹策略程式碼

也將介紹一些實用的TradingView使用小訣竅


最後把上面各段的程式碼整理並放在下面

方便各位複製直接貼在TradingView編輯介面,並按下右上角的「新增到圖表」

這樣就可以直接檢視這個MACD策略的績效

//@version=5
strategy(title="MACD strategy", overlay=false)

fastLen = input.int(title="Fast Length", defval=12)
slowLen = input.int(title="Slow Length", defval=26)
signalLen = input.int(title="Signal Length", defval=9)

fastMA = ta.ema(close, fastLen)
slowMA = ta.ema(close, slowLen)
macd = fastMA - slowMA
signal = ta.ema(macd, signalLen)

plot(macd, color=color.blue, title="MACD")
plot(signal, color=color.red, title="Signal")

buySignal = ta.crossover(macd, signal)
if (buySignal)
strategy.entry("Buy", strategy.long)
sellSignal = ta.crossunder(macd, signal)
if (sellSignal)
strategy.entry("Sell", strategy.short)

尚未註冊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
留言分享你的想法!