Estrategia de tendencia cruzada de la SMA dinámica

El autor:¿ Qué pasa?, Fecha: 2024-02-05 12:14:12
Las etiquetas:

img

Resumen general

Esta estrategia es una simple estrategia de cruce de promedio móvil (SMA) adecuada para los mercados de criptomonedas. Utiliza SMAs rápidas, medianas y lentas para identificar señales de entrada y salida potenciales. Cuando la SMA rápida cruza la SMA media, se genera una señal de compra. Cuando la SMA rápida cruza debajo de la SMA media, se genera una señal de venta.

Estrategia lógica

Configuración de parámetros

La estrategia permite a los operadores establecer los siguientes parámetros clave:

  • Fuente de precios: precio de cierre u otros precios
  • Considera las barras incompletas o no
  • Método de pronóstico de la SMA: predicción de cambios o predicción de regresión lineal
  • Duración de la SMA rápida: 7 por defecto
  • Duración media de la SMA: 30 por defecto
  • Duración de la SMA lenta: por defecto 50
  • Fondos de la cuenta
  • Porcentaje de riesgo por operación

Calculación de la SMA

La SMA rápida, la SMA media y la SMA lenta se calculan sobre la base de las longitudes de SMA establecidas por el usuario.

Señales comerciales

Cuando la SMA rápida cruza la SMA media, se genera una señal de compra.

El riesgo y el tamaño de las posiciones

La estrategia calcula el capital nominal por operación en función de los fondos de la cuenta y el porcentaje de riesgo aceptable por operación.

Análisis de ventajas

  • Utiliza múltiples SMA para identificar tendencias con mayor convicción
  • Métodos opcionales de pronóstico de la SMA para una mayor adaptabilidad
  • Señales comerciales simples y claras fáciles de implementar
  • Incorpora la gestión científica del riesgo y de las posiciones

Análisis de riesgos

  • La naturaleza rezagada de las SMA puede perder los puntos de reversión de precios
  • Solo considera los indicadores técnicos sin combinar los fundamentales
  • No tiene en cuenta el impacto de eventos repentinos

Se puede optimizar acortando los períodos de SMA, añadiendo otros indicadores, etc.

Direcciones de optimización

  • Añadir otros indicadores para filtrar señales falsas
  • Incorporar el análisis fundamental
  • Optimización de los parámetros del período SMA
  • Optimizar los parámetros de tamaño de riesgo y posición

Conclusión

Esta estrategia integra reglas de cruce de SMA, gestión de riesgos y dimensionamiento de posiciones para un sistema de seguimiento de tendencias robusto adecuado para los mercados de criptomonedas.


/*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")


Más.