Esta estrategia se basa en el indicador de promedio móvil dinámico, combinado con bandas de Bollinger y RSI para el filtrado de señales comerciales. Implementa una tendencia siguiendo una estrategia de largo plazo. La estrategia juzga la tendencia calculando el cambio del precio de cierre del promedio móvil dinámico de Heiken Ashi y la compara con bandas de Bollinger para generar señales comerciales. Con el filtro RSI, puede identificar efectivamente puntos explosivos de tendencia para el seguimiento de tendencias.
El núcleo de esta estrategia es calcular el cambio del precio de cierre de Heiken Ashi. Específicamente, calcula la diferencia entre el MA de la barra actual y el MA de las dos barras anteriores, y luego lo multiplica por un coeficiente de sensibilidad para obtener el valor preciso de cambio de MA.
Luego, este valor de cambio se compara con la diferencia entre la banda superior y la banda inferior de las bandas de Bollinger. Si el cambio de MA es mayor que la diferencia BB, se considera una explosión de tendencia. Cuando la explosión es positiva, es decir, el cambio de MA es positivo, genera una señal larga y una barra verde. Cuando la explosión es negativa, es decir, el cambio de MA es negativo, genera una señal cerrada y una barra roja.
Además, esta estrategia tiene un filtro RSI que solo permite señales largas cuando el RSI es superior a un umbral, evitando el riesgo de inversión de tendencia.
Los métodos de control del riesgo incluyen: ajuste adecuado de los parámetros de robustez, combinación de otros indicadores para juzgar la inversión de tendencia, uso solo en tendencias claras a largo plazo, etc.
Hay algo de espacio para una mayor optimización:
Pruebe diferentes fuentes de precios como cerrar, promedios móviles, etc. para una mejor suavización
Ajustar los parámetros de los períodos MA y BB para optimizar los diferentes productos
Pruebe relación de relación en lugar de coeficiente de sensibilidad para un valor de indicador más intuitivo
Añadir otros filtros como líneas de tendencia, volumen, etc. para mejorar la calidad de la señal
Desarrollar una estrategia corta basada en patrones de indicadores
Incorporar mecanismos de stop loss para un mejor control del riesgo
En general, esta es una tendencia relativamente estable después de la estrategia. Utiliza un promedio móvil dinámico para determinar la dirección de la tendencia, BB para identificar puntos explosivos, RSI para filtrar señales falsas, realizando un sistema de tendencia solo largo. Pero también tiene algunos riesgos, que requieren ajuste de parámetros para diferentes productos y marcos de tiempo, e incapacidad para beneficiarse de tendencias bajistas. Hay espacio para mejoras adicionales como mejorar la calidad de la señal, desarrollar una estrategia corta, agregar stop loss, etc. para lograr un mejor rendimiento.
/*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)