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.
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.
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.
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.
Establezca un objetivo de ganancia del 1% después de comprar; establezca un stop loss del 1% después de vender.
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.
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.
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.
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")