Estrategia de negociación cuantitativa basada en la SMA y la EMA

El autor:¿ Qué pasa?, Fecha: 2023-12-12 12:31:25
Las etiquetas:

img

I. Resumen de la estrategia

Esta estrategia se llama Quantitative Trading Strategy Based on SMA and EMA. Su idea principal es combinar líneas SMA y líneas EMA con diferentes parámetros para construir señales comerciales.

II. Principio de la estrategia

  1. Calcular el SMA9, el SMA50, el SMA180 del precio de cierre y el EMA20.

  2. Determinar señales de compra y venta basadas en la relación entre el precio cerrado y soporte sup y resistencia res. Generar una señal de compra BuySignal cuando el cierre rompe a través de sup, y generar una señal de venta SellSignal cuando el cierre rompe a través de res.

  3. Cuando se compran los activadores de la señal, ejecutar la estrategia de posición larga; cuando se venden los activadores de la señal, cerrar la posición larga.

  4. Cuando se venden los activadores de la señal, ejecutar la estrategia de posición corta; cuando se compran los activadores de la señal, cerrar la posición corta.

III. Análisis de las ventajas

  1. La combinación de múltiples promedios móviles para formar señales comerciales mejora la precisión y la estabilidad.

  2. El cálculo de soporte y resistencia dinámicos hace que las señales comerciales sean más confiables.

  3. La adopción de medias móviles de alta, media y baja volatilidad tiene en cuenta tanto la tendencia a largo plazo como los avances a corto plazo, mejorando la rentabilidad de la estrategia.

  4. Apoyar tanto posiciones largas como cortas puede obtener ganancias en los mercados de tendencia y laterales.

IV. Análisis de riesgos

  1. La SMA tiene un efecto de retraso, que puede retrasar las señales de compra y venta y afectar el rendimiento de la estrategia.

  2. Sin un mecanismo de stop loss, las pérdidas pueden expandirse.

  3. Los datos de las pruebas de retroceso son insuficientes y los parámetros deben ajustarse en función del mercado.

  4. Confiando en indicadores técnicos, incapaz de hacer frente a los eventos del cisne negro.

Soluciones:

  1. Ajuste los períodos de SMA adecuadamente.
  2. Establezca un stop loss razonable.
  3. Aumentar el tamaño de la muestra para backtesting, ajustar los parámetros.
  4. Mejorar los mecanismos de control de riesgos.

V. Optimización

  1. Se incluyen las pérdidas de suspensión basadas en la volatilidad para controlar las pérdidas individuales.

  2. Añadir modelos de aprendizaje automático para ayudar con el juicio de tendencias y la generación de señales.

  3. Añadir análisis de precios clave para mejorar la precisión de soporte y resistencia.

  4. Prueba diferentes combinaciones de parámetros para encontrar mejores parámetros.

VI. Resumen

Esta estrategia combina los indicadores técnicos de SMA y EMA para construir señales comerciales, y calcula soporte dinámico y resistencia para formar una lógica completa de compra y venta. Las ventajas son parámetros flexibles, comercio bidireccional, adaptable a diferentes mercados, pero también enfrenta problemas como retraso y stop loss inadecuado. Las optimizaciones futuras se pueden hacer en aspectos como stop loss, tendencia de juicio, análisis de precios clave para mejorar la estabilidad y la rentabilidad.

]


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-11 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="StrategySMA 9/50/180 | EMA 20 | BUY/SELL", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//SMA and EMA code
smaInput1 = input(9, title="SMA1")
smaInput2 = input(50, title="SMA2")
smaInput3 = input(180, title="SMA3")
emaInput1 = input(20, title="EMA1")
sma1 = sma(close, smaInput1)
sma2 = sma(close, smaInput2)
sma3 = sma(close, smaInput3)
EMA1 = ema(close, emaInput1)
plot(sma1, color= color.red , title="SMA1")
plot(sma2, color = color.blue, title="SMA2")
plot(sma3, color= color.white, title="SMA3")
plot(EMA1, color = color.yellow, title="EMA1")

no=input(3,title="BUY/SELL Swing")
Barcolor=input(false,title="BUY/SELL Bar Color")
Bgcolor=input(false,title="BUY/SELL Background Color")
res=highest(high,no)
sup=lowest(low,no)
avd=iff(close>res[1],1,iff(close<sup[1],-1,0))
avn=valuewhen(avd!=0,avd,0)
tsl=iff(avn==1,sup,res)

// Buy/sell signals
BuySignal = crossover(close, tsl)
SellSignal = crossunder(close, tsl)

// Enter long position
strategy.entry("Buy", strategy.long, when=BuySignal)

// Exit long position
strategy.exit("Sell", "Buy", when=SellSignal)

// Enter short position
strategy.entry("Sell", strategy.short, when=SellSignal)

// Exit short position
strategy.exit("Buy", "Sell", when=BuySignal)

colr = close>=tsl ? color.green : close<=tsl ? color.red : na
plot(tsl, color=colr)


Más.