
La estrategia es un sistema de trading de seguimiento de tendencias basado en un promedio móvil de doble índice (EMA). La estrategia utiliza dos líneas de EMA de 44 y 200 ciclos, combinadas con señales de ruptura de precios para determinar la dirección de la operación. Al mismo tiempo, integra mecanismos de gestión de riesgos, que incluyen el cálculo de posiciones dinámicas y el stop loss móvil.
La lógica central de la estrategia se basa en la interacción entre el precio y las dos líneas de EMA. Se utiliza el EMA de 44 ciclos para la formación de canales ascendentes y descendentes en los precios más altos y más bajos, respectivamente, y el EMA de 200 ciclos como filtro de tendencia a largo plazo. Cuando el precio de cierre rompe la trayectoria EMA y satisface las condiciones de filtro de 200 EMA, el sistema genera una señal múltiple; cuando el precio de cierre cae por debajo de la trayectoria EMA y satisface las condiciones de filtro de 200 EMA, el sistema genera una señal de vacío.
Se trata de una estrategia de seguimiento de tendencias estructurada y con claridad lógica. Ofrece señales de negociación a través de canales de doble EMA y filtros de tendencias a largo plazo, en combinación con un mecanismo de gestión de riesgos completo, con una buena practicidad. El espacio de optimización de la estrategia reside principalmente en la confirmación de señales, la adaptación de los parámetros dinámicos y la mejora del mecanismo de gestión de riesgos. En la aplicación práctica, se recomienda probar plenamente la sensibilidad de los parámetros y realizar una optimización específica en combinación con las características de la variedad de negociación específica.
/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("RENTABLE Dual EMA Breakout TSLA ", overlay=true)
// Inputs for EMA lengths and risk per trade
length = input(44, title="EMA Length")
longTermLength = input(200, title="Long-Term EMA Length")
riskPerTrade = input.float(1.0, title="Risk per Trade (%)", minval=0.1, maxval=10.0)
// Additional inputs for strategy customization
useFilter = input.bool(true, title="Use 200 EMA Filter")
tradeDirection = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"])
// EMAs based on the high and low prices and long-term EMA
emaHigh = ta.ema(high, length)
emaLow = ta.ema(low, length)
ema200 = ta.ema(close, longTermLength)
// Plotting EMAs on the chart
plot(emaHigh, color=color.green, title="High EMA")
plot(emaLow, color=color.red, title="Low EMA")
plot(ema200, color=color.blue, title="200 EMA")
// Entry conditions with optional EMA filter
longCondition = close > emaHigh and (useFilter ? close > ema200 : true)
shortCondition = close < emaLow and (useFilter ? close < ema200 : true)
// Calculating stop-loss and position size
longStop = emaLow
shortStop = emaHigh
riskPerShareLong = close - longStop
riskPerShareShort = shortStop - close
equity = strategy.equity
// Ensure risk per share is positive for calculations
riskPerShareLong := riskPerShareLong > 0 ? riskPerShareLong : 0.01
riskPerShareShort := riskPerShareShort > 0 ? riskPerShareShort : 0.01
positionSizeLong = (equity * riskPerTrade / 100) / riskPerShareLong
positionSizeShort = (equity * riskPerTrade / 100) / riskPerShareShort
// Ensure position sizes are positive before entering trades
if (longCondition and (tradeDirection == "Long" or tradeDirection == "Both") and positionSizeLong > 0)
strategy.entry("Long", strategy.long, qty= positionSizeLong)
if (shortCondition and (tradeDirection == "Short" or tradeDirection == "Both") and positionSizeShort > 0)
strategy.entry("Short", strategy.short, qty=positionSizeShort)
// Applying the stop-loss to strategy
strategy.exit("Exit Long", "Long", stop=longStop)
strategy.exit("Exit Short", "Short", stop=shortStop)
////Usar en 1,2 3 4 HRS TSLA