Esta estrategia combina los indicadores EMA y RSI para identificar oportunidades de ajuste a corto plazo en Bitcoin. Utiliza principalmente la EMA como la principal herramienta gráfica y el RSI como un indicador de juicio auxiliar para encontrar patrones de ajuste obvios. Las señales de negociación se generan cuando el precio se rompe por debajo o vuelve a subir por encima de la línea EMA. También tiene controles de stop loss y take profit que se pueden parametrizar.
La estrategia utiliza principalmente la línea EMA de 50 períodos y el indicador RSI de 25 períodos. La línea EMA se considera el principal indicador gráfico y el RSI se utiliza para determinar las condiciones de sobrecompra y sobreventa para ayudar a generar señales comerciales. Se genera una señal de venta cuando el precio cae por debajo de la línea EMA, y se genera una señal de compra cuando el precio se rompe por encima de la línea EMA y el indicador RSI muestra una señal de no sobrecompra (valor RSI menor de 70).
Después de entrar en una operación, la estrategia también establece los niveles de stop loss y take profit. La distancia de stop loss es ajustable, por defecto al 5,1%; la distancia de take profit también es ajustable, por defecto al 9,6%. Esto limita efectivamente la pérdida máxima por operación.
En resumen, la estrategia se basa principalmente en patrones de línea EMA, complementados por indicadores RSI para evitar condiciones de sobrecompra y sobreventa, al tiempo que tiene controles de stop loss y take profit.
Las principales ventajas de esta estrategia son las siguientes:
La combinación de EMA y RSI hace que las señales sean más confiables en lugar de depender únicamente de un único indicador.
Esto limita efectivamente la pérdida por operación y es una herramienta muy importante de control de riesgos.
Los parámetros de la estrategia se pueden optimizar. La longitud EMA, la longitud RSI y más son parámetros ajustables. Los usuarios pueden encontrar los conjuntos de parámetros óptimos para diferentes condiciones de mercado.
La estrategia permite establecer un rango de fechas de backtest internamente para verificar el rendimiento.
La estrategia también presenta algunos riesgos, principalmente de:
BT Bitcoin tiene movimientos volátiles, se pueden ejecutar paradas.
Riesgo de extracción: la estrategia no tiene en cuenta el control general de la extracción, pues puede sufrir extracciones durante períodos de ajuste prolongados.
Las señales de corto plazo tienden a tener un rendimiento inferior, lo que lleva a que se detengan las buenas operaciones.
Para controlar y mitigar estos riesgos:
Durante condiciones de tendencia fuerte, el rango de stop loss puede ampliarse, por ejemplo, al 10%, para evitar ser detenido prematuramente.
Se pueden añadir otros filtros de indicadores que sigan la tendencia para evitar realizar operaciones durante períodos de consolidación prolongados.
Optimizar los parámetros. Los parámetros de prueba se establecen en diferentes condiciones del mercado. Los parámetros de cambio se establecen cuando surgen tendencias fuertes para mejorar la calidad de la señal.
Hay más margen para optimizar esta estrategia:
Se puede establecer un porcentaje máximo de retirada, como el 20%, que pausa la negociación cuando se alcanza para limitar las pérdidas.
Limitar la frecuencia de entrada. Puede restringir el número de operaciones por unidad de tiempo, como 2 operaciones por hora como máximo, para evitar el exceso de operaciones.
Optimizar parámetros. Prueba combinaciones de parámetros para diferentes condiciones del mercado. Crea plantillas de parámetros para cambiar en tiempo real que coincidan con las condiciones actuales.
Combinar con otros indicadores. Integrar tendencia, volatilidad y otras métricas para crear reglas de entrada al sistema de negociación más completas.
En general, la estrategia se basa principalmente en patrones de ajuste de BT Bitcoin a corto plazo, utilizando la EMA y el RSI para generar señales comerciales claras, al tiempo que tiene controles de stop loss y take profit. Puede capturar eficazmente oportunidades de ganancias de deslizamiento a corto plazo. Pero funciona mejor en combinación con otras estrategias para producir rendimientos excesivos más consistentes.
/*backtest start: 2023-11-06 00:00:00 end: 2023-12-06 00:00:00 period: 1h basePeriod: 15m 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/ // © mmoiwgg //@version=4 strategy(title="EMA+RSI Pump & Drop Swing Sniper (With Alerts & SL+TP) - Strategy", shorttitle="EMA+RSI Swing Strategy", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=50, minval=0) emarsiSource = input(close, title="EMA+RSI Source") condSource = input(high, title="Long+Short Condition Source") emaVal = ema(emarsiSource, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(emarsiSource, rsiLength) //Safety emaLength2 = input(title="Safety EMA Length", type=input.integer, defval=70, minval=0) emaSource2 = input(close, title="Safety EMA Source") ema = ema(emaSource2, emaLength2) emaColorSource2 = close emaBSource2 = close // Backtest+Dates 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 = 2019, 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) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest end window window() => time >= start and time <= finish ? true : false // create function - add window() to entry/exit/close // Conditions exit_long = crossover(emaVal, condSource) longCond = crossunder(emaVal, condSource) and close > ema //Stoploss + TakeProfit sl = input(0.051, step=0.001, title="Stop Loss") tp = input(0.096, step=0.001, title="Take Profit") // Plots Colors colors = emarsiSource > emaVal and rsiVal > 14 ? color.green : color.red emaColorSource = input(close, title="Line Color Source") emaBSource = input(close, title="Line Color B Source") // Plots plot(ema, color=emaColorSource2[1] > ema and emaBSource2 > ema ? color.green : color.red, linewidth=1) plot(emaVal, color=emaColorSource[1] > emaVal and emaBSource > emaVal ? color.green : color.red, linewidth=3) plotcandle(open, high, low, close, color=colors) //Strategy Entry+Exits strategy.entry("long",1,when=window() and longCond) strategy.close("long",when=window() and exit_long) strategy.exit("long tp/sl", "long", profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick)