Inti dari strategi ini didasarkan pada indikator yang dikembangkan dalam artikel
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.
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.
Strategi ini juga memiliki beberapa risiko, terutama dalam aspek berikut:
Risiko ini dapat dikurangi dengan mengoptimalkan parameter, ukuran posisi yang ketat, dan stop loss yang tepat waktu.
Strategi dapat dioptimalkan dalam aspek utama berikut:
Uji kombinasi yang berbeda dari Panjang atau Multiplier untuk menemukan kombinasi parameter yang menghasilkan pengembalian tertinggi berdasarkan backtest.
Uji yang menggabungkan RSI, KDJ dan indikator lainnya untuk menyaring sinyal dan meningkatkan profitabilitas.
Sesuaikan parameter secara dinamis berdasarkan kondisi pasar, seperti memperluas rentang saluran dengan tepat ketika tren kuat, atau memperketat rentang ketika pasar lebih terikat rentang.
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)