Strategi ini berdasarkan pada penunjuk Rata-rata Bergerak Dinamik, digabungkan dengan Bollinger Bands dan RSI untuk penapisan isyarat perdagangan. Ia melaksanakan trend mengikut strategi panjang sahaja. Strategi ini menilai trend dengan mengira perubahan harga penutupan Heiken Ashi Dynamic Moving Average dan membandingkannya dengan Bollinger Bands untuk menjana isyarat perdagangan. Dengan penapis RSI, ia dapat mengenal pasti titik letupan trend untuk penjejakan trend.
Inti strategi ini adalah untuk mengira perubahan harga penutupan Heiken Ashi Peratus Bergerak Dinamis. Khususnya, ia mengira perbezaan antara MA bar semasa dan MA dua bar sebelumnya, kemudian mengalikannya dengan pekali kepekaan untuk mendapatkan nilai perubahan MA yang tepat.
Kemudian nilai perubahan ini dibandingkan dengan perbezaan antara band atas dan band bawah Bollinger Bands. Jika perubahan MA lebih besar daripada perbezaan BB, ia dianggap sebagai letupan trend. Apabila letupan positif, iaitu perubahan MA positif, ia menghasilkan isyarat panjang dan bar hijau. Apabila letupan negatif, iaitu perubahan MA negatif, ia menghasilkan isyarat dekat dan bar merah.
Di samping itu, strategi ini mempunyai penapis RSI yang hanya membenarkan isyarat panjang apabila RSI lebih tinggi daripada ambang, mengelakkan risiko pembalikan trend.
Kaedah kawalan risiko termasuk: penyesuaian parameter yang betul untuk ketahanan, menggabungkan penunjuk lain untuk menilai pembalikan trend, hanya digunakan dalam trend jangka panjang yang jelas, dll.
Terdapat beberapa ruang untuk pengoptimuman lanjut:
Cuba sumber harga yang berbeza seperti dekat, purata bergerak dan lain-lain untuk lebih halus
Sesuaikan parameter tempoh MA dan BB untuk pengoptimuman di seluruh produk yang berbeza
Cuba hubungan nisbah bukannya pekali kepekaan untuk nilai penunjuk yang lebih intuitif
Tambah penapis lain seperti trendlines, jumlah dan lain-lain untuk meningkatkan kualiti isyarat
Membangunkan strategi pendek berdasarkan corak penunjuk
Memasuki mekanisme stop loss untuk kawalan risiko yang lebih baik
Secara keseluruhan ini adalah trend yang agak stabil mengikuti strategi. Ia menggunakan purata bergerak dinamik untuk menentukan arah trend, BB untuk mengenal pasti titik letupan, RSI untuk menapis isyarat palsu, merealisasikan sistem trend yang panjang sahaja. Tetapi ia juga mempunyai beberapa risiko, memerlukan penyesuaian parameter untuk produk dan jangka masa yang berbeza, dan ketidakupayaan untuk mendapat keuntungan dari trend penurunan. Terdapat ruang untuk penambahbaikan lanjut seperti meningkatkan kualiti isyarat, membangunkan strategi pendek, menambah stop loss dan lain-lain untuk mencapai prestasi 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)