Estrategia de seguimiento de tendencia de cruces dorados y cruces de la muerte con doble EMA


Fecha de creación: 2024-02-29 11:45:42 Última modificación: 2024-02-29 11:45:42
Copiar: 0 Número de Visitas: 644
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencia de cruces dorados y cruces de la muerte con doble EMA

Descripción general

La estrategia de seguimiento de tendencias de doble EMA es una estrategia de negociación cuantitativa que utiliza dos indicadores de EMA para determinar la dirección de la tendencia de los precios. La estrategia determina la tendencia de los precios mediante el cálculo de dos conjuntos de diferentes parámetros de indicadores de EMA, que combinan señales de bifurcación y bifurcación.

Principio de estrategia

El indicador central de la estrategia son dos conjuntos de EMAs, un conjunto de EMA1 de períodos más largos y un conjunto de EMA2 de períodos más cortos. El parámetro EMA1 es 21 y el parámetro EMA2 es 10. La estrategia calcula los dos conjuntos de EMAs con una línea de 4 horas como período de referencia.

Cuando el ciclo más corto de EMA2 atraviesa el ciclo más largo de EMA1, se produce una señal de compra. Esto indica que la tendencia a corto plazo de los precios se fortalece y comienza a entrar en una tendencia alcista. Cuando el ciclo más corto de EMA2 atraviesa el ciclo más largo de EMA1, se produce una señal de venta.

Para filtrar las señales de error, la estrategia establece dos conjuntos de indicadores de la horca de oro. Sólo cuando los dos conjuntos de indicadores emiten señales al mismo tiempo, se desencadenan las operaciones de compra y venta correspondientes. Esto puede reducir eficazmente las transacciones erróneas causadas por la oscilación de los precios.

Análisis de las ventajas

  • El uso de la estructura de doble EMA permite capturar de manera efectiva los cambios en la tendencia de los precios a corto y medio plazo, permitiendo el juicio de la tendencia.
  • La adición de filtros para dos conjuntos de indicadores de la horca de oro puede reducir las señales de error y evitar transacciones innecesarias causadas por la oscilación de los precios.
  • Los indicadores se calculan en niveles de 4 horas para hacer frente a las fluctuaciones de precios de alta frecuencia.
  • La estructura de la estrategia es simple, clara, fácil de entender y adecuada para aplicaciones de transacciones cuantitativas.

Análisis de riesgos

  • La estructura de doble EMA tiene una mala eficacia en el juicio de la situación de la liquidación. Si se encuentra con una liquidación prolongada, se producen señales erróneas.
  • El indicador de nivel de 4 horas no es lo suficientemente sensible para responder a los eventos de emergencia. Los mensajes de emergencia importantes pueden causar un gran impacto en el comercio en 4 horas y no pueden controlar el riesgo de manera efectiva.
  • Las estrategias se basan en indicadores técnicos, no en la información básica. Si los fundamentos de la empresa cambian significativamente, los indicadores técnicos pueden no ser válidos.

Estos riesgos pueden ser controlados por los siguientes métodos:

  1. Aumentar los indicadores de EMA en más períodos de tiempo y crear un portafolio de modelos.
  2. En combinación con el análisis de emociones textuales y otros métodos para juzgar los acontecimientos de gran importancia, ajuste dinámico de posición.
  3. Parámetros de ajuste dinámico relacionados con los cambios en el entorno económico, las políticas y los fundamentos de la empresa.

Dirección de optimización

La estrategia tiene espacio para ser optimizada aún más:

  1. Aumentar la combinación de modelos. Se pueden crear más combinaciones de diferentes parámetros para mejorar la estabilidad de la estrategia.

  2. Aumentar los mecanismos de detención de pérdidas. Establecer un punto de detención razonable para controlar eficazmente las pérdidas individuales.

  3. Optimización de parámetros dinámicos. Se pueden optimizar automáticamente los parámetros de la EMA en función de diferentes entornos de mercado.

  4. Combinación de técnicas de aprendizaje automático. Utiliza un marco como Tensorflow para entrenar modelos que predicen tendencias de precios en tiempo real y clasifican.

Resumir

La estrategia de seguimiento de tendencias de doble EMA es una estrategia de negociación de tendencias sencilla y práctica. Utiliza el indicador de doble EMA para determinar tendencias a corto plazo en los precios para capturar oportunidades de movimiento direccional. Al mismo tiempo, la combinación de dos indicadores de filtro de doble EMA puede reducir el error de negociación. La estrategia es de estructura simple, fácil de implementar y adecuada para aplicaciones de comercio cuantitativo.

Código Fuente de la Estrategia
/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3


/// Component Code Startt
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

strategy(title="Ema cross strat", overlay=true)
margin = input(true, title="Margin?")
Margin = margin  ? margin : false
resCustom = input(title="EMA Timeframe", defval="240" )
source = close,
len2 = input(21, minval=1, title="EMA1")
len3 = input(10, minval=1, title="EMA2")
ema2 = request.security(syminfo.tickerid,resCustom,ema(source,len2), lookahead=barmerge.lookahead_off)
ema3 = request.security(syminfo.tickerid,resCustom,ema(source,len3), lookahead=barmerge.lookahead_off)


mylong = crossover(ema3, ema2)
myshort = crossunder(ema3,ema2)

last_long = na
last_short = na
last_long := mylong ? time : nz(last_long[1])
last_short := myshort ? time : nz(last_short[1])

in_long = last_long > last_short ? 2 : 0
in_short = last_short > last_long ? 2 : 0

mylong2 = crossover(ema3, ema2)
myshort2 = crossunder(ema3, ema2)

last_long2 = na
last_short2 = na
last_long2 := mylong2 ? time : nz(last_long2[1])
last_short2 := myshort2 ? time : nz(last_short2[1])

in_long2 = last_long2 > last_short2 ? 0 : 0
in_short2 = last_short2 > last_long2 ? 0 : 0

condlongx =   in_long + in_long2
condlong = crossover(condlongx, 1.9)
condlongclose = crossunder(condlongx, 1.9)

condshortx =  in_short + in_short2
condshort = crossover(condshortx, 1.9)
condshortclose = crossover(condshortx, 1.9)




if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, comment="Long")

if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size > 0    
    strategy.close("Long",when = not Margin)
    
if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, comment="Short", when = Margin)