Cuatro promedios móviles exponenciales y estrategia de volumen

El autor:¿ Qué pasa?, Fecha: 2023-10-09 15:05:47
Las etiquetas:

Resumen general

Esta estrategia combina múltiples EMA con diferentes configuraciones de parámetros y el indicador de volumen EOM para determinar tendencias en múltiples marcos de tiempo y construir una estrategia de negociación con juicios a largo y corto plazo.

Estrategia lógica

La estrategia utiliza 4 grupos de EMA con diferentes parámetros de período: 13, 21, 50 y 180. Estos 4 EMA establecen múltiples dimensiones temporales para determinar las tendencias de precios y descubrir patrones de tendencia a más largo plazo.

La estrategia utiliza el indicador de volumen EOM para confirmar las tendencias. El EOM combina el volumen de operaciones y el rango de volatilidad de precios para medir eficazmente la presión de compra y venta. La estrategia determina condiciones largas cuando el EOM está por encima de 0 y condiciones cortas cuando el EOM está por debajo de 0.

La estrategia tiene dos opciones. La opción 1 se hace larga cuando la EMA más corta cruza por encima de la EMA más larga y se cierra larga cuando la EMA más corta cruza por debajo de la EMA más larga. La opción 2 se hace larga cuando la EMA más corta cruza por encima de la EMA intermedia y se cierra larga cuando la EMA más corta cruza por debajo de la EMA intermedia. Las dos opciones permiten una confirmación de tendencia más completa.

Ventajas

  • El uso de EMA de varios marcos de tiempo para determinar las tendencias puede revelar patrones de tendencia a más largo plazo
  • El indicador de volumen EOM mide eficazmente la presión de compra/venta, evitando señales falsas de retrocesos temporales
  • Dos métodos de entrada opcionales permiten una confirmación de tendencia más completa
  • La ampliación con salidas en capas reduce la exposición a una sola salida

Los riesgos

  • Las EMA tienen retraso y pueden perderse rápidas reversiones
  • Los indicadores de volumen pueden dar señales falsas
  • Múltiples criterios de condición crean una entrada poco clara
  • Las salidas en capas pueden ser demasiado mecánicas

Oportunidades de mejora

  • Prueba más combinaciones de períodos de EMA para encontrar parámetros óptimos
  • Añadir otros indicadores como el MACD para la confirmación de entrada
  • Adoptar un stop loss dinámico para seguir las tendencias
  • Ajustar el tamaño de las posiciones en función de las condiciones del mercado

Resumen de las actividades

Esta estrategia integra la determinación de tendencias de EMA de múltiples marcos de tiempo y el filtrado de indicadores de volumen para lograr el seguimiento de tendencias y la eliminación de ruido. Todavía hay un gran margen de optimización al probar diferentes combinaciones de parámetros y agregar más indicadores para mejorar aún más la robustez. Mientras tanto, el stop loss dinámico y el dimensionamiento de posición también pueden optimizar significativamente el rendimiento.


/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21

//@version=4
strategy("4x ema + volume", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 )

//ema x 4
ema1l=input(13)
ema2l=input(21)
ema3l=input(50)
ema4l=input(180)

ema1=ema(close,ema1l)
ema2=ema(close,ema2l)
ema3=ema(close,ema3l)
ema4=ema(close,ema4l)

long1 = close > ema1 and ema1 > ema2 and ema2> ema3 and ema3 > ema4
long2 = crossover(ema1,ema2) and crossover(ema1,ema3)

short1 = close < ema1 and ema1 < ema2 and ema2< ema3 and ema3 < ema4
short2= crossunder(ema1,ema2) and crossunder(ema1,ema3)


//eom
length = input(14, minval=1)
div = input(10000, title="Divisor", minval=1)
eom = sma(div * change(hl2) * (high - low) / volume, length)


option1=input(true)
option2=input(false)

if(option1)
    strategy.entry("long",1,when=long1 and eom>0)
    strategy.close("long",when=short1 and eom<0)
 
if(option2)
    strategy.entry("long",1,when=long2 and eom>0)
    strategy.close("long",when=short2 and eom<0)   

Más.