Strategi Trading Tren Berdasarkan Indikator MACD

Penulis:ChaoZhang, Tanggal: 2024-02-02 11:32:48
Tag:

img

Gambaran umum

Inti dari strategi ini didasarkan pada indikator yang dikembangkan dalam artikel Trading the Trend yang diterbitkan oleh Andrew Abraham dalam majalah TASC edisi September 1998.

Logika Strategi

Strategi ini pertama-tama menghitung rata-rata bergerak tertimbang 21 hari dari rentang rata-rata benar (ATR) sebagai rentang volatilitas garis dasar. Kemudian menghitung harga tertinggi dan terendah selama 21 hari terakhir. Dengan membandingkan harga penutupan saat ini dengan batas atas dan bawah rentang garis dasar, ia menilai apakah harga keluar dari saluran untuk menentukan arah tren.

Secara khusus, batas saluran atas didefinisikan sebagai harga tertinggi selama 21 hari terakhir dikurangi 3 kali ATR dasar, dan batas saluran bawah adalah harga terendah selama 21 hari terakhir ditambah 3 kali ATR dasar. Ketika harga penutupan lebih tinggi dari batas atas, itu menandakan tren bullish. Ketika harga penutupan lebih rendah dari batas bawah, itu menandakan tren penurunan.

Sementara menentukan arah tren, strategi ini juga memperkenalkan indikator MACD untuk penyaringan. Ini hanya menghasilkan sinyal beli ketika histogram MACD positif untuk menghindari kehilangan peluang beli.

Keuntungan

Strategi ini menggabungkan penentuan tren dan penyaringan indikator, yang dapat secara efektif mengidentifikasi arah tren pasar jangka menengah dan panjang tanpa tertipu oleh fluktuasi jangka pendek.

  1. Menggunakan saluran harga untuk menentukan tren dan secara akurat mengidentifikasi arah jangka panjang
  2. Jangkauan volatilitas dasar dinamis beradaptasi dengan perubahan pasar
  3. Penyaringan MACD memberikan dukungan keputusan tambahan untuk menghindari kehilangan titik beli
  4. Parameter yang dapat dikonfigurasi menawarkan fleksibilitas dalam menyesuaikan gaya strategi

Risiko

Strategi ini juga memiliki beberapa risiko, terutama dalam aspek berikut:

  1. Risiko terputusnya saluran harga
  2. Risiko kesalahan sinyal MACD
  3. Pengaturan parameter yang tidak memadai dapat menyebabkan ketidakstabilan strategi

Risiko ini dapat dikurangi dengan mengoptimalkan parameter, ukuran posisi yang ketat, dan stop loss yang tepat waktu.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek utama berikut:

  1. Uji kombinasi parameter yang berbeda untuk menemukan optimal

Uji kombinasi yang berbeda dari Panjang atau Multiplier untuk menemukan kombinasi parameter yang menghasilkan pengembalian tertinggi berdasarkan backtest.

  1. Tambahkan penyaringan dengan indikator lain

Uji yang menggabungkan RSI, KDJ dan indikator lainnya untuk menyaring sinyal dan meningkatkan profitabilitas.

  1. Mengatur parameter secara dinamis

Sesuaikan parameter secara dinamis berdasarkan kondisi pasar, seperti memperluas rentang saluran dengan tepat ketika tren kuat, atau memperketat rentang ketika pasar lebih terikat rentang.

Ringkasan

Dengan menggabungkan penentuan tren saluran harga dan penyaringan MACD, ini dapat secara efektif mengidentifikasi tren jangka menengah dan panjang dan menghasilkan pengembalian yang stabil. Dengan optimasi parameter, manajemen risiko, dan penyesuaian yang tepat, strategi ini dapat menjadi bagian integral dari sistem perdagangan.


/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © melihtuna

//@version=1
strategy("Trend Trader Strategy with MACD", overlay=true)

// === Trend Trader Strategy ===
Length = input(21),
Multiplier = input(3, minval=1)
MacdControl = input(true, title="Control 'MACD Histogram is positive?' when Buy condition")
avgTR      = wma(atr(1), Length)
highestC   = highest(Length)
lowestC    = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = iff(close > hiLimit and close > loLimit, hiLimit,
        iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
pos =	iff(close > ret, 1,
	    iff(close < ret, -1, nz(pos[1], 0))) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(ret, color= blue , title="Trend Trader Strategy with MACD")

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2020, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

// === MACD ===
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)
macdCond= MacdControl ? histLine[0] > 0 ? true : false : true

strategy.entry("BUY", strategy.long, when = window() and pos == 1 and macdCond)
strategy.entry("SELL", strategy.short, when = window() and pos == -1)




Lebih banyak