Strategi ini didasarkan pada indikator Dynamic Moving Average, dikombinasikan dengan Bollinger Bands dan RSI untuk penyaringan sinyal perdagangan. Strategi ini menerapkan tren mengikuti strategi panjang saja. Strategi ini menilai tren dengan menghitung perubahan harga penutupan Heiken Ashi Dynamic Moving Average dan membandingkannya dengan Bollinger Bands untuk menghasilkan sinyal perdagangan. Dengan filter RSI, dapat secara efektif mengidentifikasi titik ledakan tren untuk pelacakan tren.
Inti dari strategi ini adalah untuk menghitung perubahan harga penutupan Heiken Ashi Dynamic Moving Average. Secara khusus, ini menghitung perbedaan antara MA bar saat ini dan MA dua bar sebelumnya, kemudian mengalikannya dengan koefisien sensitivitas untuk mendapatkan nilai perubahan MA yang akurat.
Kemudian nilai perubahan ini dibandingkan dengan perbedaan antara Bollinger Bands band atas dan band bawah. Jika perubahan MA lebih besar dari perbedaan BB, itu dianggap sebagai
Selain itu, strategi ini memiliki filter RSI yang hanya memungkinkan sinyal panjang ketika RSI lebih tinggi dari ambang batas, menghindari risiko pembalikan tren.
Metode pengendalian risiko meliputi: penyesuaian parameter yang tepat untuk ketahanan, menggabungkan indikator lain untuk menilai pembalikan tren, hanya digunakan dalam tren jangka panjang yang jelas, dll.
Ada beberapa ruang untuk optimasi lebih lanjut:
Coba sumber harga yang berbeda seperti dekat, rata-rata bergerak dll untuk lebih halus
Sesuaikan parameter periode MA dan BB untuk optimalisasi di berbagai produk
Coba hubungan rasio alih-alih koefisien sensitivitas untuk nilai indikator yang lebih intuitif
Tambahkan filter lain seperti garis tren, volume dll untuk meningkatkan kualitas sinyal
Mengembangkan strategi jangka pendek berdasarkan pola indikator
Menggabungkan mekanisme stop loss untuk pengendalian risiko yang lebih baik
Secara keseluruhan ini adalah tren yang relatif stabil mengikuti strategi. Ini menggunakan rata-rata bergerak dinamis untuk menentukan arah tren, BB untuk mengidentifikasi titik eksplosif, RSI untuk menyaring sinyal palsu, mewujudkan sistem tren panjang saja. Tapi juga memiliki beberapa risiko, membutuhkan penyesuaian parameter untuk produk dan kerangka waktu yang berbeda, dan ketidakmampuan untuk mendapatkan keuntungan dari tren penurunan. Ada ruang untuk perbaikan lebih lanjut seperti meningkatkan kualitas sinyal, mengembangkan strategi pendek, menambahkan stop loss dll untuk mencapai kinerja yang lebih baik.
/*backtest start: 2022-11-08 00:00:00 end: 2023-11-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 ///////////Original Script Courtesy of Lazy_Bear.... Absolute Legend\\\\\\\\\\\\\\\ strategy('SmoothedWaddah', overlay=false, initial_capital=1) sensitivity = input(150, title='Sensitivity') fastLength = input(20, title='MacD FastEMA Length') slowLength = input(40, title='MacD SlowEMA Length') channelLength = input(20, title='BB Channel Length') mult = input(1.5, title='BB Stdev Multiplier') RSI14filter = input(40, title='RSI Value trade filter') ////////////MacD Calculation of price////////////////////////////// calc_macd(source, fastLength, slowLength) => fastMA = ta.ema(source, fastLength) slowMA = ta.ema(source, slowLength) fastMA - slowMA /////////BolingerBand Calculation of Price/////////////////////// calc_BBUpper(source, length, mult) => basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) basis + dev calc_BBLower(source, length, mult) => basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) basis - dev //////heinkenashi chart call for closing price "smoothing mechanism"\\\\\\\\\\\\\\\\\\\\\\\\\\\ point = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close) ////////////////////T1 is change in MacD current candle from previous candle Sensitivy amplifies calculation///////////////////// t1 = (calc_macd(point, fastLength, slowLength) - calc_macd(point[1], fastLength, slowLength)) * sensitivity //////////////////////T2 is T1 from two candles prior\\\\\\\\\\\\\\\\\\\\\\\\\\\ t2 = (calc_macd(point[2], fastLength, slowLength) - calc_macd(point[3], fastLength, slowLength)) * sensitivity ////////////////E1 is difference in bolinger band upper and lower...E2 is E1 from one candle prior not needed////////////// e1 = calc_BBUpper(ohlc4, channelLength, mult) - calc_BBLower(ohlc4, channelLength, mult) //e2 = (calc_BBUpper(close[1], channelLength, mult) - calc_BBLower(close[1], channelLength, mult)) //////signal bar printing.. Up if MacD positive .. Down if MacD negative////////// trendUp = t1 >= 0 ? t1 : 0 trendDown = t1 < 0 ? -1 * t1 : 0 ///////plots difference in macD*Sensitivity, color change if increasing or decreasing. //////color is green/lime if explosion is up \ color is red/orange if explosion is down///////// plot(trendUp, style=plot.style_columns, linewidth=1, color=trendUp < trendUp[1] ? color.new(color.lime,45) : color.new(color.green,45), title='UpTrend') plot(trendDown, style=plot.style_columns, linewidth=1, color=trendDown < trendDown[1] ? color.new(color.orange,45) : color.new(color.red,45), title='DownTrend') plot(e1, style=plot.style_line, linewidth=2, color=color.new(#A0522D, 0), title='ExplosionLine') ////////////Entry conditions and Concept///////////////////// ////////////Long Only System. T1 is measuring the distance between MACD EMA's. This is Multiplied ////////////by the sensitivity so that it can be compared to the difference between BollingerBand. /////////////{this could have been a ratio maybe i will work with that in a different script.} /////////////I found that 135-175 sensitivy allows for values to be compared on most charts..... ////////////If the (difference between the EMA)*(Sensitivity) is greater than (BB upper line- BB lower line) ////////////it is considered an explosion in either the downside or the upside.The indicator will print ///////////a bar higher than the trigger line either green or red (up or down respectively)////////////////// longCondition = trendUp > e1 and ta.rsi(close, 14) > RSI14filter if longCondition strategy.entry('up', strategy.long) strategy.close('up', trendDown > e1)