Esta es una estrategia de seguimiento de tendencia que combina múltiples indicadores. Utiliza tres EMA con diferentes períodos, el RSI estocástico y el ATR para identificar la dirección de la tendencia y establecer posiciones. Se hace largo cuando la EMA más rápida cruza por encima de la EMA más lenta, con un stop loss establecido en 3 veces el valor ATR reciente y tomar ganancias en 2 veces el ATR reciente.
La estrategia utiliza tres líneas de EMA - 8-, 14 y 50 periodos EMA, que representan las tendencias de precios en diferentes plazos de tiempo.
El indicador de RSI estocástico incorpora cálculos RSI y estocásticos para identificar condiciones de sobrecompra/sobreventa.
La estrategia utiliza 3 veces ATR como distancia de stop loss y 2 veces ATR como distancia de take profit para bloquear las ganancias y controlar el riesgo.
La optimización se puede hacer ajustando los períodos de EMA para optimizar la sensibilidad. Hacer que las proporciones de ATR sean ajustables permite la personalización basada en las condiciones del mercado.
La estrategia considera la tendencia, los niveles de sobrecompra / sobreventa y el rango de volatilidad para identificar el momento de entrada. Los EMA y el RSI estocástico combinados identifican efectivamente las tendencias, mientras que el ATR
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 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/ // © FreddieChopin //@version=4 strategy("3 x EMA + Stochastic RSI + ATR", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // 3x EMA ema1Length = input(8, "EMA1 Length", minval = 1) ema2Length = input(14, "EMA2 Length", minval = 1) ema3Length = input(50, "EMA3 Length", minval = 1) ema1 = ema(close, ema1Length) ema2 = ema(close, ema2Length) ema3 = ema(close, ema3Length) plot(ema1, color = color.green) plot(ema2, color = color.orange) plot(ema3, color = color.red) // Stochastic RSI smoothK = input(3, "K", minval=1) smoothD = input(3, "D", minval=1) lengthRSI = input(14, "RSI Length", minval=1) lengthStoch = input(14, "Stochastic Length", minval=1) src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) // ATR atrPeriod = input(14, "ATR Period") takeProfitMultiplier= input(2.0, "Take-profit Multiplier") stopLossMultiplier= input(3.0, "Stop-loss Multiplier") atrSeries = atr(atrPeriod)[1] longCondition = ema1 > ema2 and ema2 > ema3 and crossover(k, d) strategy.entry("long", strategy.long, when = longCondition) float stopLoss = na float takeProfit = na if (strategy.position_size > 0) if (na(stopLoss[1])) stopLoss := strategy.position_avg_price - atrSeries * stopLossMultiplier else stopLoss := stopLoss[1] if (na(takeProfit[1])) takeProfit := strategy.position_avg_price + atrSeries * takeProfitMultiplier else takeProfit := takeProfit[1] strategy.exit("take profit / stop loss", limit = takeProfit, stop = stopLoss) plot(stopLoss, color = color.red, linewidth = 2, style = plot.style_linebr) plot(takeProfit, color = color.green, linewidth = 2, style = plot.style_linebr)