Inti strategi ini adalah berdasarkan penunjuk yang dibangunkan dalam artikel
Strategi ini mula-mula mengira purata bergerak bertingkat 21 hari dari julat sebenar purata (ATR) sebagai julat turun naik asas. Kemudian ia mengira harga tertinggi dan terendah selama 21 hari yang lalu. Dengan membandingkan harga penutupan semasa dengan had atas dan bawah julat asas, ia menilai sama ada harga keluar dari saluran untuk menentukan arah trend.
Secara khusus, had saluran atas ditakrifkan sebagai harga tertinggi dalam 21 hari kebelakangan dikurangkan 3 kali ATR asas, dan had saluran bawah adalah harga terendah dalam 21 hari kebelakangan ditambah 3 kali ATR asas. Apabila harga penutupan lebih tinggi daripada had atas, ia menandakan trend menaik. Apabila harga penutupan lebih rendah daripada had bawah, ia menandakan trend penurunan.
Semasa menentukan arah trend, strategi ini juga memperkenalkan penunjuk MACD untuk penapisan. Ia hanya menghasilkan isyarat beli apabila histogram MACD positif untuk mengelakkan peluang membeli yang hilang.
Strategi ini menggabungkan penentuan trend dan penapisan penunjuk, yang dapat dengan berkesan mengenal pasti arah trend pasaran jangka menengah dan panjang tanpa disesatkan oleh turun naik jangka pendek.
Strategi ini juga mempunyai beberapa risiko, terutamanya dalam aspek berikut:
Risiko ini boleh dikurangkan dengan mengoptimumkan parameter, ukuran kedudukan yang ketat, dan stop loss yang tepat pada masanya.
Strategi ini boleh dioptimumkan dalam aspek utama berikut:
Uji gabungan yang berbeza dari Panjang atau Pengganda untuk mencari kombinasi parameter yang menghasilkan pulangan tertinggi berdasarkan backtest.
Ujian yang menggabungkan RSI, KDJ dan penunjuk lain untuk menapis isyarat dan meningkatkan keuntungan.
Sesuaikan parameter secara dinamik berdasarkan keadaan pasaran, seperti meluaskan julat saluran yang sesuai apabila trend kuat, atau mengetatkan julat apabila pasaran lebih terikat julat.
Ringkasnya, ini adalah strategi trend berikut yang kuat secara keseluruhan. Dengan menggabungkan penentuan trend saluran harga dan penapisan MACD, ia dapat dengan berkesan mengenal pasti trend jangka menengah dan panjang dan menjana pulangan yang stabil. Dengan pengoptimuman parameter, pengurusan risiko, dan penyesuaian yang sesuai, strategi ini boleh menjadi sebahagian daripada 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)