Esta es una estrategia dinámica de stop trailing basada en líneas de EMA duales. Utiliza EMAs de 9 días y 20 días para determinar la dirección de la tendencia del mercado, combinado con el indicador RSI para filtrar falsas rupturas. También utiliza el indicador ATR para calcular niveles de stop loss dinámicos y tomar ganancias. Esta estrategia es adecuada para tenencias a medio y largo plazo.
La estrategia utiliza la EMA de 9 días como línea a corto plazo y la EMA de 20 días como línea a mediano plazo para determinar la tendencia de precios. Se hace largo cuando el precio cruza por encima de la línea a corto plazo y el precio de cierre es mayor que el máximo del día anterior, con un RSI inferior a 70 y cierre superior a la EMA de 20 días menos 1 ATR. Se hace corto cuando el precio cruza por debajo de la línea a corto plazo y el precio de cierre es menor que el mínimo del día anterior, con un RSI superior a 30 y cierre superior a la EMA de 20 días menos 1 ATR.
El stop loss se establece en el precio de cierre menos 1.5 veces ATR. El take profit se establece en el precio de cierre más ATR multiplicado por un coeficiente de take profit. También utiliza 2 veces ATR para establecer el stop loss que sigue a la tendencia.
En general, esta es una estrategia de tenencia relativamente estable de mediano a largo plazo. Utiliza EMAs duales para determinar la tendencia principal del mercado, evitando verse afectado por el ruido a corto plazo. La adición de RSI también filtra las roturas falsas hasta cierto punto. Además, el mecanismo dinámico de stop loss / take profit permite que la estrategia se ajuste en función de la volatilidad del mercado. Sin embargo, todavía hay riesgos como el retraso de los promedios móviles y el potencial de penetración de stop loss. Necesitamos encontrar la configuración óptima a través del ajuste de parámetros y la optimización durante la aplicación práctica.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("CJTrade", overlay=true) short = ema(close, 9) medium = ema(close, 20) long = ema(close, 50) very_long = ema(close, 200) plot(short, color=color.gray, linewidth=1) plot(medium, color=color.red, linewidth=1) plot(long, color=color.black, linewidth=1) plot(very_long, color=color.blue, linewidth=1) rsiValue = rsi(close, 14) near20EMA = close > medium - atr(14) longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA strategy.entry("Long", strategy.long, when=longCond) strategy.entry("Short", strategy.short, when=shortCond) atrValue = atr(14) stopLossLevel = close - atrValue * 1.5 // Dynamic take profit level based on ATR takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1) takeProfitLevel = close + atrValue * takeProfitMultiplier // Trailing stop loss for long positions longTrailingStop = close - atrValue * 2 strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop) // Trailing stop loss for short positions shortTrailingStop = close + atrValue * 2 strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop) strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel) strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)