
La estrategia es un sistema de negociación basado en el cruce de las medianas móviles de índices a medio y largo plazo (EMA), combinado con un mecanismo de gestión de posiciones dinámicas y control de riesgos. La estrategia identifica las tendencias del mercado a través de cruces de EMA de 21 y 55 ciclos, mientras que ajusta dinámicamente el tamaño de las posiciones de negociación en función de la relación de riesgo-beneficio y el porcentaje de riesgo personalizados por el usuario, lo que permite un control preciso del riesgo.
La lógica central de la estrategia se basa en la señal de cruce de EMA de dos períodos de tiempo. Cuando el EMA de 21 ciclos cruza el EMA de 55 ciclos hacia arriba, el sistema lo identifica como una tendencia alcista y dispara una señal de multiplicación; cuando el EMA de 21 ciclos cruza el EMA de 55 ciclos hacia abajo, el sistema lo identifica como una tendencia descendente y dispara una señal de vacío. La configuración del punto de parada se basa en el punto más bajo de las dos líneas K anteriores (hacer más) o en el punto más alto (hacer más), y el punto de parada se calcula dinámicamente según el riesgo de los usuarios.
La estrategia construye un sistema de negociación completo mediante la combinación de señales de tendencia de la EMA y la gestión dinámica del riesgo. La ventaja central de la estrategia reside en su mecanismo científico de gestión de posiciones y control de riesgos, pero aún así requiere la optimización de los parámetros adecuados según el entorno del mercado y las preferencias de riesgo personales.
/*backtest
start: 2024-02-21 00:00:00
end: 2024-07-11 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Carlos Humberto Rodríguez Arias
//@version=5
strategy("EMA Crossover Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// EMA periods
MT_EMA = input.int(21, title="Medium Term EMA")
LT_EMA = input.int(55, title="Long Term EMA")
RR = input.float(2.0, title="Risk-Reward Ratio") // User-defined RR
RiskPercent = input.float(1.0, title="Risk Percentage") // User-defined risk percentage
// Calculate EMAs
Signal_MT_EMA = ta.ema(close, MT_EMA)
Signal_LT_EMA = ta.ema(close, LT_EMA)
// Plot EMAs
plot(Signal_MT_EMA, title="Medium Term EMA", color=color.orange, linewidth=2)
plot(Signal_LT_EMA, title="Long Term EMA", color=color.blue, linewidth=2)
// Determine trend conditions
uptrend = ta.crossover(Signal_MT_EMA, Signal_LT_EMA)
downtrend = ta.crossunder(Signal_MT_EMA, Signal_LT_EMA)
// Stop-Loss Calculations
longStopLoss = ta.lowest(low, 2) // SL for buy = lowest low of last 2 candles
shortStopLoss = ta.highest(high, 2) // SL for sell = highest high of last 2 candles
// Take-Profit Calculations
longTakeProfit = close + (close - longStopLoss) * RR
shortTakeProfit = close - (shortStopLoss - close) * RR
// Calculate Position Size based on Risk Percentage
capital = strategy.equity * (RiskPercent / 100)
longPositionSize = capital / (close - longStopLoss)
shortPositionSize = capital / (shortStopLoss - close)
// Execute Buy Order
if uptrend
strategy.entry("Long", strategy.long, qty=longPositionSize)
strategy.exit("Long Exit", from_entry="Long", stop=longStopLoss, limit=longTakeProfit)
// Execute Sell Order
if downtrend
strategy.entry("Short", strategy.short, qty=shortPositionSize)
strategy.exit("Short Exit", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)