Estrategia de negociación de media móvil y estocástica

El autor:¿ Qué pasa?, Fecha: 2024-02-02 10:48:37
Las etiquetas:

img

Resumen general

Esta estrategia combina las medias móviles y el oscilador estocástico para implementar un sistema automatizado de negociación de acciones. Utiliza dos medias móviles de diferentes longitudes y el indicador estocástico para capturar las señales de tendencia y sobrecompra / sobreventa, y toma decisiones de compra y venta basadas en la dirección de la tendencia y las señales del indicador en regiones sobrecompradas / sobrevendidas.

Estrategia lógica

1. Promedios móviles

Se utiliza una línea rápida (5 días) y una línea lenta (20 días) promedio móvil. La línea rápida que cruza por encima de la línea lenta es una señal de compra, mientras que cruzar por debajo es una señal de venta.

2. Oscilador estocástico

Los parámetros estocásticos se establecen en: período de línea K de 14, período suave de línea K de 3, período suave de línea D de 3. Por debajo de 20 en la línea K es la región de sobreventa, mientras que por encima de 80 es la región de sobreventa.

3. Reglas de entrada

Condición de compra: cruce rápido de MA por encima de la línea lenta de MA y K <20 (región de sobreventa) Condición de venta: cruce rápido de MA por debajo de la línea lenta de MA y K > 80 (región de sobrecompra)

Ir largo cuando se cumple la condición de compra; ir corto cuando se cumple la condición de venta.

4. Configuración de pérdida

Establezca un objetivo de ganancia del 1% después de comprar; establezca un stop loss del 1% después de vender.

Análisis de ventajas

Esta estrategia combina tendencia e indicadores para capturar efectivamente las tendencias de precios a mediano y largo plazo, mientras que utiliza el oscilador estocástico para controlar el momento de las operaciones y evitar entradas aleatorias sin un sesgo direccional claro.

Riesgos y soluciones

  • Los picos de precios por acontecimientos noticiosos significativos pueden suponer grandes pérdidas.

  • Los mercados de rango limitado sostenido pueden dar lugar a pequeñas pérdidas consecutivas.

  • Evite los períodos clave del mercado cuando los precios tienden a revertirse.

Optimización

  • Prueba diferentes combinaciones de parámetros para encontrar parámetros óptimos, como diferentes longitudes de MA.

  • Incorporar otras herramientas de análisis como el volumen, la volatilidad para las condiciones del filtro para mejorar la tasa de ganancia.

  • Investigar mecanismos de selección de acciones, como la selección de acciones fuertes o índices ponderados por límite, para reducir los riesgos de una sola acción.

Conclusión

La estrategia general funciona sin problemas. Con objetivos de stop loss y ganancias, el perfil general de ganancias/pérdidas es sólido. Se pueden esperar mejoras adicionales de la puesta a punto de parámetros y el filtrado de fondos de acciones. En general, esta es una estrategia de negociación cuantitativa fácil de implementar y robusta.


/*backtest
start: 2024-01-25 00:00:00
end: 2024-02-01 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Moving Average and Stochastic Strategy 80% ", overlay=true)

// Moving Average Settings
maShortLength = input(5, title="Short MA Length")
maLongLength = input(20, title="Long MA Length")

// Stochastic Settings
stochLength = input(14, title="Stochastic Length")
smoothK = input(3, title="Stochastic %K")
smoothD = input(3, title="Stochastic %D")
stochOverbought = 80
stochOversold = 20

// Profit Target Settings
profitTarget = input(1, title="Profit Target (%)") // 1% profit target

// Calculate Moving Averages
maShort = sma(close, maShortLength)
maLong = sma(close, maLongLength)

// Calculate Stochastic
k = sma(stoch(close, high, low, stochLength), smoothK)
d = sma(k, smoothD)

// Entry Conditions
longConditionMA = crossover(maShort, maLong) and k < stochOversold
shortConditionMA = crossunder(maShort, maLong) and k > stochOverbought

// Opposite Conditions
oppositeLongConditionMA = crossunder(maShort, maLong) and k < stochOversold
oppositeShortConditionMA = crossover(maShort, maLong) and k > stochOverbought

// Strategy Logic
if (longConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (50 + profitTarget / 100))

if (shortConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (20 - profitTarget / 100))

// Opposite Strategy Logic
if (oppositeLongConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (50 - profitTarget / 100))

if (oppositeShortConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (20 + profitTarget / 100))

// Plot Moving Averages
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

// Plot Stochastic
hline(stochOverbought, "Overbought", color=color.red)
hline(stochOversold, "Oversold", color=color.green)
plot(k, color=color.black, title="Stochastic %K")

Más.