Estrategia de tendencia de cruce de medias móviles dinámicas


Fecha de creación: 2024-02-05 12:14:12 Última modificación: 2024-02-05 12:14:12
Copiar: 0 Número de Visitas: 589
1
Seguir
1617
Seguidores

Estrategia de tendencia de cruce de medias móviles dinámicas

Descripción general

La estrategia es una estrategia de cruce de media móvil simple (SMA) para el mercado de criptomonedas. Utiliza tres grupos de SMA: rápido, medio y lento para identificar posibles señales de entrada y salida. Cuando el SMA rápido cruza el SMA medio, genera una señal de compra; cuando el SMA rápido cruza el SMA medio, genera una señal de venta.

Principio de estrategia

Configuración de parámetros

La estrategia permite al comerciante establecer los siguientes parámetros clave:

  • Fuente de datos de precios: precio de cierre u otros precios
  • Si se tiene en cuenta la línea K incompleta
  • Métodos de predicción de SMA: predicción de desplazamiento o predicción de regresión lineal
  • Duración de la SMA rápida: 7 por defecto
  • Duración de la SMA de velocidad media: 30 por defecto
  • Duración del SMA lento: 50 por defecto
  • Fondos de la cuenta
  • Porcentaje de riesgo por transacción

Cálculo de la SMA

Se calcula el SMA rápido, el SMA medio y el SMA lento, respectivamente, según la longitud de SMA configurada por el usuario.

Señales de comercio

Cuando el SMA rápido sobrepasa el SMA medio, genera una señal de compra; cuando el SMA rápido bajopasa el SMA medio, genera una señal de venta.

Gestión de riesgos y posiciones

La estrategia combina los fondos de la cuenta y la proporción de riesgo asumido por cada operación para calcular el capital nominal de cada operación. Luego, se combina con el ATR para calcular el margen de pérdida, y finalmente se determina la posición específica de cada operación.

Análisis de las ventajas

  • El uso de múltiples grupos de SMA para identificar tendencias, mejor juicio
  • Métodos de predicción de SMA opcionales y más adaptables
  • Las señales de transacción son simples, claras y fáciles de implementar
  • Integración de la gestión de riesgos y posiciones, más científica

Análisis de riesgos

  • El retraso de la SMA en sí mismo puede perder el punto de inflexión del precio
  • Encuentra sólo los indicadores técnicos, no los básicos
  • No se tiene en cuenta el impacto de los incidentes

Se puede optimizar mediante la reducción adecuada de los ciclos SMA y la ayuda de otros indicadores.

Dirección de optimización

  • Combinación con otros indicadores para filtrar señales de error
  • El juicio fundamental
  • Optimización de los parámetros del ciclo SMA
  • Parámetros de optimización de riesgos y posiciones

Resumir

Esta estrategia integra múltiples funciones de juicio de cruzamiento de SMA, gestión de riesgos y optimización de posiciones, es una estrategia de seguimiento de tendencias adecuada para el mercado criptográfico. Los comerciantes pueden ajustar los parámetros y aplicar optimizaciones de acuerdo con su estilo de negociación y el entorno del mercado.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Onchain Edge Trend SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Configuration Parameters
priceSource = input(close, title="Price Source")
includeIncompleteBars = input(true, title="Consider Incomplete Bars")
maForecastMethod = input(defval="flat", options=["flat", "linreg"], title="Moving Average Prediction Method")
linearRegressionLength = input(3, title="Linear Regression Length")
fastMALength = input(7, title="Fast Moving Average Length")
mediumMALength = input(30, title="Medium Moving Average Length")
slowMALength = input(50, title="Slow Moving Average Length")
tradingCapital = input(100000, title="Trading Capital")
tradeRisk = input(1, title="Trade Risk (%)")

// Calculation of Moving Averages
calculateMA(source, period) => sma(source, period)
predictMA(source, forecastLength, regressionLength) => 
    maForecastMethod == "flat" ? source : linreg(source, regressionLength, forecastLength)

offset = includeIncompleteBars ? 0 : 1
actualSource = priceSource[offset]

fastMA = calculateMA(actualSource, fastMALength)
mediumMA = calculateMA(actualSource, mediumMALength)
slowMA = calculateMA(actualSource, slowMALength)

// Trading Logic
enterLong = crossover(fastMA, mediumMA)
exitLong = crossunder(fastMA, mediumMA)

// Risk and Position Sizing
riskCapital = tradingCapital * tradeRisk / 100
lossThreshold = atr(14) * 2
tradeSize = riskCapital / lossThreshold

if (enterLong)
    strategy.entry("Enter Long", strategy.long, qty=tradeSize)

if (exitLong)
    strategy.close("Enter Long")

// Display Moving Averages
plot(fastMA, color=color.blue, linewidth=2, title="Fast Moving Average")
plot(mediumMA, color=color.purple, linewidth=2, title="Medium Moving Average")
plot(slowMA, color=color.red, linewidth=2, title="Slow Moving Average")