En la carga de los recursos... Cargando...

Estrategia de negociación cuantitativa cruzada de la EMA para obtener beneficios dinámicos y evitar pérdidas

El autor:¿ Qué pasa?, fecha: 2024-11-18 15:53:49
Las etiquetas:El EMA

Resumen general

Esta estrategia es un sistema de negociación cuantitativo basado en cruces de promedios móviles combinados con mecanismos dinámicos de take-profit y stop-loss. El núcleo de la estrategia utiliza el cruce de promedios móviles exponenciales (EMA) de 10 períodos y 26 períodos para identificar las tendencias del mercado y ejecutar operaciones durante los retrocesos. El sistema emplea niveles fijos de take-profit y stop-loss para proteger el capital a través de una estricta gestión de riesgos. Esta estrategia es particularmente adecuada para instrumentos comerciales de alta volatilidad, ya que a menudo proporcionan señales más claras de inversión del mercado y un mayor potencial de ganancia.

Principios de estrategia

La estrategia utiliza dos EMA con diferentes períodos como indicadores principales: una EMA de 10 períodos a corto plazo y una EMA de 26 períodos a largo plazo. Una señal de compra se genera cuando la EMA a corto plazo cruza por encima de la EMA a largo plazo, lo que indica una tendencia alcista; una señal de venta se genera cuando la EMA a corto plazo cruza por debajo de la EMA a largo plazo, lo que indica una tendencia bajista.

Ventajas estratégicas

  1. Las señales claras: utilizan los cruces de la EMA como señales de negociación, proporcionando reglas simples y claras que son fáciles de ejecutar y monitorear.
  2. El riesgo controlado: emplea niveles fijos de toma de ganancias y stop-loss para una gestión eficaz del riesgo por operación.
  3. Seguimiento de tendencias: combina cruces de la EMA y retrocesos de precios para capturar eficazmente los mercados de tendencias
  4. Alta automatización: lógica de estrategia clara que es fácil de implementar en sistemas de negociación automatizados
  5. Alta adaptabilidad: adecuado para diversos instrumentos de negociación, especialmente aquellos con alta volatilidad

Riesgos estratégicos

  1. Riesgo de mercado irregular: puede generar frecuentes señales falsas en mercados de rango limitado
  2. El riesgo de deslizamiento: puede sufrir un deslizamiento significativo durante los períodos de alta volatilidad.
  3. El riesgo de pérdida de liquidación: es posible que los niveles fijos de pérdida de liquidación no sean lo suficientemente flexibles en determinadas condiciones de mercado
  4. Lag de la señal: las señales cruzadas de la EMA tienen un retraso inherente, que potencialmente carecen de puntos de entrada óptimos
  5. Riesgo de gestión monetaria: requiere un control adecuado del tamaño de las posiciones por operación

Direcciones de optimización

  1. Las operaciones de liquidación de pérdidas en las que se incluyen las operaciones de liquidación de pérdidas en las que se incluyen las operaciones de liquidación de pérdidas en las que se incluyen las operaciones de liquidación de pérdidas.
  2. Filtración de señales: agregar volumen, volatilidad u otros indicadores auxiliares para filtrar señales falsas
  3. Filtración del tiempo: Implementar filtros de tiempo de negociación para evitar períodos de alta volatilidad
  4. Gestión de posiciones: añadir mecanismos de obtención de beneficios parciales mientras se permite que las posiciones restantes sigan las tendencias
  5. Gestión del dinero: Implementar un dimensionamiento dinámico de las posiciones basado en el patrimonio neto de las cuentas

Conclusión

Esta estrategia establece un sistema de negociación completo mediante la combinación de cruces EMA con retrocesos de precios. El diseño de la estrategia es simple e intuitivo, con un control de riesgo claro, adecuado para instrumentos de negociación de alta volatilidad. A través de la optimización adecuada y el ajuste de parámetros, esta estrategia tiene el potencial de lograr retornos estables en el comercio en vivo. Se aconseja a los comerciantes que realicen pruebas de retroceso y comercio de demostración antes de la implementación en vivo, y optimicen los parámetros de acuerdo con las condiciones reales de negociación.


/*backtest
start: 2023-11-18 00:00:00
end: 2024-11-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("30 Pips Target & 15 Pips Stop-Loss with One Signal at a Time", overlay=true)

// Define settings for target and stop-loss in pips
target_in_pips = 30
stoploss_in_pips = 10

// Convert pips to price value based on market (for forex, 1 pip = 0.0001 for major pairs like GBP/JPY)
pip_value = syminfo.mintick * 10  // For forex, 1 pip = 0.0001 or 0.01 for JPY pairs
target_value = target_in_pips * pip_value
stoploss_value = stoploss_in_pips * pip_value

// Define EMAs (10-EMA and 26-EMA) for the crossover strategy
ema10 = ta.ema(close, 10)
ema26 = ta.ema(close, 26)

// Buy signal: when 10 EMA crosses above 26 EMA
longCondition = ta.crossover(ema10, ema26)
// Sell signal: when 10 EMA crosses below 26 EMA
shortCondition = ta.crossunder(ema10, ema26)

// Define price levels with explicit type float
var float long_entry_price = na
var float long_take_profit = na
var float long_stop_loss = na
var float short_entry_price = na
var float short_take_profit = na
var float short_stop_loss = na

// Variable to track if a trade is active
var bool inTrade = false

// Check if the trade hit stop loss or take profit
if (inTrade)
    if (not na(long_take_profit) and close >= long_take_profit)
        inTrade := false  // Exit the trade after hitting target
        long_entry_price := na
        long_take_profit := na
        long_stop_loss := na
        strategy.close("Long")

    if (not na(long_stop_loss) and close <= long_stop_loss)
        inTrade := false  // Exit the trade after hitting stoploss
        long_entry_price := na
        long_take_profit := na
        long_stop_loss := na
        strategy.close("Long")

    if (not na(short_take_profit) and close <= short_take_profit)
        inTrade := false  // Exit the trade after hitting target
        short_entry_price := na
        short_take_profit := na
        short_stop_loss := na
        strategy.close("Short")

    if (not na(short_stop_loss) and close >= short_stop_loss)
        inTrade := false  // Exit the trade after hitting stoploss
        short_entry_price := na
        short_take_profit := na
        short_stop_loss := na
        strategy.close("Short")

// Only generate new signals if not already in a trade
if (not inTrade)
    if (longCondition)
        long_entry_price := close
        long_take_profit := close + target_value
        long_stop_loss := close - stoploss_value
        strategy.entry("Long", strategy.long)  // Enter a long trade
        strategy.exit("Take Profit/Stop Loss", "Long", limit=long_take_profit, stop=long_stop_loss)
        inTrade := true  // Mark trade as active

    if (shortCondition)
        short_entry_price := close
        short_take_profit := close - target_value
        short_stop_loss := close + stoploss_value
        strategy.entry("Short", strategy.short)  // Enter a short trade
        strategy.exit("Take Profit/Stop Loss", "Short", limit=short_take_profit, stop=short_stop_loss)
        inTrade := true  // Mark trade as active

// Plot the levels on the chart only when in a trade
plot(inTrade and not na(long_take_profit) ? long_take_profit : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Take Profit (Long)")
plot(inTrade and not na(long_stop_loss) ? long_stop_loss : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Stop Loss (Long)")

plot(inTrade and not na(short_take_profit) ? short_take_profit : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Take Profit (Short)")
plot(inTrade and not na(short_stop_loss) ? short_stop_loss : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Stop Loss (Short)")

plotshape(series=longCondition and not inTrade, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition and not inTrade, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")


Relacionados

Más.