Estrategia de flecha cruzada de media móvil doble


Fecha de creación: 2023-11-21 17:00:49 Última modificación: 2023-11-21 17:00:49
Copiar: 0 Número de Visitas: 604
1
Seguir
1617
Seguidores

Estrategia de flecha cruzada de media móvil doble

Descripción general

La estrategia determina el momento de comprar y vender mediante el cálculo de la intersección de las dos líneas equiláteras del indicador MACD. Dibuja una forma de flecha en el gráfico para sugerir una señal de negociación.

El principio

La estrategia primero calcula la línea rápida (EMA 12), la línea lenta (EMA 26) y la diferencia del MACD. Luego, los tiempos de compra y venta se juzgan en función de la línea rápida y la línea lenta de la horquilla dorada y el negativo de la diferencia del MACD:

  1. Cuando la línea rápida atraviesa la línea lenta ((Goldfork) y el diferencial MACD atraviesa el 0 es una señal de compra
  2. Cuando la línea rápida atraviesa la línea lenta (dead-fork) y el MACD es 0 se vende como señal

Para filtrar las falsas señales, el código también juzga la situación de la señal de la línea K anterior. La señal actual se activa solo cuando la línea K actual es una señal inversa (compra se convierte en venta o venta se convierte en compra).

Además, el código también traza un gráfico de flecha en línea K para indicar el momento de comprar y vender.

Las ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de un juicio de cruzamiento bidireccional puede filtrar eficazmente el ruido del mercado e identificar tendencias
  2. Combinado con el juicio por diferencias de la MACD, se evita la omisión y el error de juicio
  3. El uso de la flecha para indicar el momento de comprar y vender, para una operación más clara.
  4. Las reglas son simples, claras, fáciles de entender y reproducir

Riesgos y soluciones

La estrategia también tiene sus riesgos:

  1. El cruce de dos líneas medias es propenso a generar falsas señales, lo que puede conducir a un exceso de comercio. Se pueden ajustar adecuadamente los parámetros de la línea media o agregar otras condiciones de filtrado para reducir las falsas señales.
  2. No se puede juzgar la oscilación en la tendencia, puede haber pérdidas. Se puede combinar con un indicador de tendencia como el ADX para evitar esta situación
  3. Las condiciones fijas de compra y venta hacen que las estrategias sean mecanizadas y no se adapten a los cambios en el mercado. Se pueden probar métodos de adaptación como el aprendizaje automático para optimizar.

Dirección de optimización

La estrategia puede ser optimizada en las siguientes direcciones:

  1. Prueba diferentes combinaciones de parámetros para encontrar la mejor línea rápida, lenta y MACD
  2. Aumentar las condiciones de entrada, como el volumen de transacciones para filtrar las señales
  3. Aumentar el mecanismo de suspensión de pérdidas para controlar las pérdidas individuales
  4. Indicadores de volatilidad como el VIX para determinar la preferencia de riesgo
  5. Experimentar con modelos de aprendizaje automático en lugar de reglas fijas para optimizar la adaptabilidad de las estrategias

Resumir

La estrategia de la flecha de cruce de dos líneas es sencilla y práctica en general. A través del juicio de cruce de dos líneas y la filtración de la diferencia de MACD, se pueden identificar puntos de compra y venta en la tendencia de la línea media y larga, para evitar cambios de precio perdidos. Los avisos de las flechas también hacen que la operación sea más clara y clara.

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

//@version=3
//Daniels stolen code
strategy(shorttitle="Daniels Stolen Code", title="Daniels Stolen Code", overlay=true, calc_on_order_fills=true, pyramiding=0)

//Define MACD Variables
fast = 12, slow = 26
fastMACD = ema(hlc3, fast)
slowMACD = ema(hlc3, slow)
macd = fastMACD - slowMACD
signal = sma(macd, 9)
hist = macd - signal
currMacd = hist[0]
prevMacd = hist[1]
currPrice = hl2[0]
prevPrice = hl2[1]

buy = currPrice > prevPrice and currMacd > prevMacd
sell = currPrice < prevPrice and currMacd < prevMacd
neutral = (currPrice < prevPrice and currMacd > prevMacd) or (currPrice > prevPrice and currMacd < prevMacd)
//Plot Arrows

timetobuy = buy==1 and (sell[1]==1 or (neutral[1]==1 and sell[2]==1) or (neutral[1]==1 and neutral[2]==1 and sell[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and sell[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and sell[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and sell[6]==1))
timetosell = sell==1 and (buy[1]==1 or (neutral[1]==1 and buy[2]==1) or (neutral[1]==1 and neutral[2]==1 and buy[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and buy[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and buy[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and buy[6]==1))

plotshape(timetobuy, color=blue, location=location.belowbar, style=shape.arrowup)
plotshape(timetosell, color=red, location=location.abovebar, style=shape.arrowdown)
//plotshape(neutral, color=black, location=location.belowbar, style=shape.circle)


//Test Strategy
// strategy.entry("long", true, 1, when = timetobuy and time > timestamp(2017, 01, 01, 01, 01)) // buy by market if current open great then previous high
// strategy.close("long", when = timetosell and time > timestamp(2017, 01, 01, 01, 01))

strategy.order("buy", true, 1, when=timetobuy==1 and time > timestamp(2019, 01, 01, 01, 01))
strategy.order("sell", false, 1, when=timetosell==1 and time > timestamp(2019, 01, 01, 01, 01))



// strategy.entry(id = "Short", long = false, when = enterShort())
// strategy.close(id = "Short", when = exitShort())

//strategy.entry("long", true, 1, when = open > high[1]) // enter long by market if current open great then previous high
// strategy.exit("exit", "long", profit = 10, loss = 5) // ge