我們首先,先介紹一下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專屬註冊連結:
享一個月免費試用Premium帳號,到期後可享50%的續約優惠!
(即使不續約,仍可繼續使用TradingView免費版功能)
⭐目前凱龍承接三大項業務,歡迎洽詢:
- 金融量化系列|凱龍下單機租用 & TradngView & MultiCharts 程式碼諮詢撰寫
- Line官方系列|凱龍Line官方模組租用 & Line官方機器人全系列諮詢架設
- 網站SaaS平台|凱龍雲端應用 & 網站SaaS平台諮詢架設