Estrategia de cruce de medias móviles configurable

MA-X EMA MA CROSSOVER trading strategy risk management
Fecha de creación: 2025-04-03 11:31:33 Última modificación: 2025-04-03 11:31:33
Copiar: 9 Número de Visitas: 300
2
Seguir
319
Seguidores

Estrategia de cruce de medias móviles configurable Estrategia de cruce de medias móviles configurable

Descripción general

Este artículo presenta una estrategia de intercambio de promedios móviles flexible y potente que permite a los operadores personalizar los parámetros y tipos de promedios móviles según las diferentes condiciones del mercado. El núcleo de la estrategia es el seguimiento de tendencias y la generación de señales utilizando diferentes promedios móviles de diferentes períodos y tipos.

Principio de estrategia

La estrategia genera señales de negociación mediante el cálculo de promedios móviles de tres períodos diferentes (línea rápida, línea lenta y línea de salida). Los principios principales incluyen:

  1. Tipo de promedio móvil elegido: soporta promedios móviles simples (SMA), promedios móviles indexados (EMA), promedios móviles ponderados (WMA) y promedios móviles de Hull (HMA).
  2. Condiciones de entrada:
    • Entrada múltiple: el precio de cierre es más alto que la línea rápida, la línea rápida es más alta que la línea lenta, y el precio de cierre es más alto que la línea de salida
    • Entrada en blanco: precio de cierre por debajo de la línea rápida, la línea rápida por debajo de la línea lenta, y el precio de cierre por debajo de la línea de salida
  3. Condiciones de juego:
    • Salida múltiple: después de entrar en al menos dos líneas K, el precio de cierre es inferior al de salida
    • Salida en blanco: después de entrar en al menos dos líneas K, el precio de cierre es más alto que el de salida

Ventajas estratégicas

  1. Alta configurabilidad: los comerciantes pueden ajustar con flexibilidad el período y el tipo de las medias móviles
  2. Adaptabilidad a múltiples mercados: los parámetros se pueden adaptar a variedades de transacciones con diferentes niveles de liquidez
  3. Fuertes capacidades de seguimiento de tendencias: filtración de falsas señales con múltiples medias móviles
  4. Control de riesgo: gestión de posiciones con un 10% de participación en la cuenta de forma predeterminada
  5. Dirección de negociación flexible: puede elegir si habilitar la negociación en blanco

Riesgo estratégico

  1. Sensibilidad de parámetros: diferentes mercados pueden requerir diferentes parámetros de media móvil
  2. Los mercados de tendencia se muestran mejor: las señales de ineficacia pueden ser más fuertes en los mercados de crisis
  3. Costo de transacción: la estrategia establece una comisión de transacción del 0.06% de forma predeterminada, que se tiene en cuenta en las transacciones reales
  4. Limites de detección: solo se ha realizado una verificación preliminar en algunas variedades (como BTCUSD y NIFTY)

Dirección de optimización de la estrategia

  1. Ajuste de parámetros dinámicos: introducción de un ciclo de media móvil adaptado
  2. En combinación con otros indicadores técnicos: aumentar el RSI, MACD para filtrar la señal
  3. Mecanismo de deterioro: añadir estrategias de deterioro basadas en la volatilidad
  4. Validación de múltiples marcos de tiempo: realice una revisión completa en diferentes períodos de tiempo
  5. Optimización de aprendizaje automático: búsqueda automática de la combinación óptima de parámetros con algoritmos

Resumir

La estrategia de cruce de media móvil configurable (MA-X) ofrece un marco de seguimiento de tendencias flexible. Con una configuración razonable y una optimización continua, la estrategia puede convertirse en una herramienta poderosa en la caja de herramientas de comercio cuantitativo.

Código Fuente de la Estrategia
/*backtest
start: 2024-04-03 00:00:00
end: 2025-04-02 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © YetAnotherTA

//@version=6
strategy("Configurable MA Cross (MA-X) Strategy", "MA-X", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type = strategy.commission.percent, commission_value = 0.06)

// === Inputs ===
// Moving Average Periods
maPeriodA = input.int(13, title="Fast MA")
maPeriodB = input.int(55, title="Slow MA")
maPeriodC = input.int(34, title="Exit MA")

// MA Type Selection
maType = input.string("EMA", title="MA Type", options=["SMA", "EMA", "WMA", "HMA"])

// Toggle for Short Trades (Disabled by Default)
enableShorts = input.bool(false, title="Enable Short Trades", tooltip="Enable or disable short positions")

// === Function to Select MA Type ===
getMA(src, length) =>
    maType == "SMA" ? ta.sma(src, length) : maType == "EMA" ? ta.ema(src, length) : maType == "WMA" ? ta.wma(src, length) : ta.hma(src, length)

// === MA Calculation ===
maA = getMA(close, maPeriodA)
maB = getMA(close, maPeriodB)
maC = getMA(close, maPeriodC)

// === Global Variables for Crossover Signals ===
var bool crossAboveA = false
var bool crossBelowA = false

crossAboveA := ta.crossover(close, maA)
crossBelowA := ta.crossunder(close, maA)

// === Bar Counter for Exit Control ===
var int barSinceEntry = na

// Reset the counter on new entries
if (strategy.opentrades == 0)
    barSinceEntry := na

// Increment the counter on each bar
if (strategy.opentrades > 0)
    barSinceEntry := (na(barSinceEntry) ? 1 : barSinceEntry + 1)

// === Entry Conditions ===
goLong = close > maA and maA > maB and close > maC and crossAboveA
goShort = enableShorts and close < maA and maA < maB and close < maC and crossBelowA  // Shorts only when toggle is enabled

// === Exit Conditions (only after 1+ bar since entry) ===
exitLong = (strategy.position_size > 0) and (barSinceEntry >= 2) and (close < maC)
exitShort = enableShorts and (strategy.position_size < 0) and (barSinceEntry >= 2) and (close > maC)

// === Strategy Execution ===
// Long entry logic
if (goLong)
    strategy.close("Short")         // Close any short position
    strategy.entry("Long", strategy.long)
    alert("[MA-X] Go Long")
    barSinceEntry := 1               // Reset the bar counter

// Short entry logic (only if enabled)
if (enableShorts and goShort)
    strategy.close("Long")          // Close any long position
    strategy.entry("Short", strategy.short)
    alert("[MA-X] Go Short")
    barSinceEntry := 1               // Reset the bar counter

// Exit logic (only after at least 1 bar has passed)
if (exitLong)
    strategy.close("Long")
    alert("[MA-X] Exit Long")

if (enableShorts and exitShort)
    strategy.close("Short")
    alert("[MA-X] Exit Short")

// === Plotting ===
plot(maA, color=color.green, linewidth=2, title="Fast MA")
plot(maB, color=color.blue, linewidth=2, title="Slow MA")
plot(maC, color=color.red, linewidth=2, title="Exit MA")