Estrategia de cruce de EMA y oscilador MACD


Fecha de creación: 2023-09-23 15:24:12 Última modificación: 2023-09-23 15:24:12
Copiar: 0 Número de Visitas: 746
1
Seguir
1617
Seguidores

Descripción general

La estrategia es una estrategia de negociación simple y eficiente que combina el indicador de oscilación MACD con el EMA de la media móvil. Actualmente está configurado como una línea K de 4 horas, que se puede ajustar a otros períodos de tiempo según sea necesario.

Principio de estrategia

La estrategia se compone de los siguientes componentes:

  1. El indicador MACD: para determinar el cambio de la dinámica de precios.

  2. La línea media EMA: determina la dirección de la tendencia de los precios.

  3. Condiciones de tiempo: limita el período de validez de la estrategia.

  4. Opciones de más espacio: opciones de más o menos espacio.

Las reglas de transacción son las siguientes:

  1. Hacer más/menos: Hacer más/menos cuando el precio de cierre es más alto que el EMA, la columna MACD es positiva y la línea K actual es más alta que la del día anterior.

  2. Corto/Blanco: Corto/Blanco cuando el precio de cierre está por debajo de la EMA, la columna MACD es negativa y la línea K actual está por debajo del día anterior.

La estrategia es clara y concisa, con la idea de fusionar tendencias y corto plazo en dos grandes transacciones para formar un sistema de decisión cuantitativa eficiente.

Análisis de las ventajas

En comparación con un solo indicador, la estrategia tiene las siguientes ventajas:

  1. El MACD determina la dinámica a corto plazo, el EMA determina la dirección de la tendencia, y el indicador está estrechamente vinculado.

  2. Las reglas son sencillas, claras, fáciles de entender, fáciles de implementar y no son muy difíciles de aplicar.

  3. Los parámetros se pueden ajustar de forma flexible para diferentes variedades y períodos de tiempo.

  4. Se puede optar por un solo camino de venta o de venta libre, o de comercio bidireccional.

  5. Se puede configurar el período de validez de la estrategia para evitar transacciones innecesarias.

  6. La empresa ha tenido un desempeño consistente y excelente, y ha sido rentable durante años.

  7. La administración de los fondos es controlada y evita pérdidas individuales excesivas.

  8. Se pueden introducir tecnologías de aprendizaje automático para optimizar y mejorar.

Análisis de riesgos

A pesar de las ventajas de esta estrategia, los riesgos a tener en cuenta son los siguientes:

  1. El alcance de la optimización de parámetros es amplio y existe el riesgo de optimización excesiva.

  2. No se ha establecido un Stop Loss Stop, lo que implica el riesgo de que las pérdidas aumenten.

  3. Sin tener en cuenta el volumen de transacciones, podría haber una falsa brecha.

  4. El retraso en la identificación de los puntos de inflexión de tendencias no permite evitar completamente las pérdidas.

  5. El efecto puede ser debilitado por cambios en el entorno del mercado.

  6. La robustez de los modelos debe ser la única preocupación basada en los datos históricos.

  7. Las transacciones son más frecuentes y pueden ser más costosas.

  8. Hay que tener en cuenta el ratio de retracción de las ganancias para evitar que la curva sea demasiado áspera.

Dirección de optimización

De acuerdo con el análisis anterior, la estrategia puede ser optimizada en los siguientes aspectos:

  1. El objetivo de la campaña es que los usuarios de la plataforma puedan acceder a los servicios de la red social.

  2. Aumentar la configuración del Stop Loss Stop y controlar las pérdidas individuales.

  3. Evaluar el efecto de los parámetros en diferentes períodos de tiempo.

  4. Introducir tecnología de aprendizaje automático para optimizar la dinámica.

  5. Verificación en varios mercados para mejorar la robustez.

  6. Ajustar el tamaño de la posición y reducir la frecuencia de las operaciones.

  7. Optimización de las estrategias de gestión de fondos.

  8. Los contratos por diferencia de precio de las pruebas deben ser más frecuentes.

  9. Las pruebas de retroalimentación continuas evitan la sobreadaptación.

Resumir

La estrategia en su conjunto, en combinación con los indicadores MACD y EMA, forma una estrategia de cuantificación simple y eficiente. Sin embargo, cualquier estrategia necesita ser optimizada y verificada constantemente para poder adaptarse y ser robusta a los cambios en el entorno del mercado. La estrategia de negociación necesita evolucionar y actualizarse constantemente.

Código Fuente de la Estrategia
// 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("My Script", overlay=true)

//heiking ashi calculation
UseHAcandles    = input(false, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===

// === BASE FUNCTIONS ===

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

//timecondition
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 //monday and session 
 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//ema data  -- moving average
len = input(9, minval=1, title="Length")
src = input(hl2, title="Source")
out = ema(src, len)
//plot(out, title="EMA", color=color.blue)

//histogram
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=false)

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


//main variables to apply conditions are going to be out(moving avg) and hist(macd)

long = haClose > out and haClose > haClose[1] and out > out[1] and hist> 0 and hist[1] < 0 and time_cond
short = haClose < out and haClose < haClose[1] and out < out[1] and hist < 0 and hist[1] > 0 and time_cond

//limit to 1 entry
var longOpeneda = false
var shortOpeneda = false
var int timeOfBuya = na



longCondition= long and not longOpeneda 

if longCondition
    longOpeneda := true
    timeOfBuya := time


longExitSignala = short
exitLongCondition = longOpeneda[1] and longExitSignala

if exitLongCondition
    longOpeneda := false
    timeOfBuya := na


plotshape(longCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="BUY", text="BUY", textcolor=color.white)
plotshape(exitLongCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="SELL", text="SELL", textcolor=color.white)

//automatization

longEntry= input(true)
shortEntry=input(false)

if(longEntry)
    strategy.entry("long",strategy.long,when=longCondition)
    strategy.close("long",when=exitLongCondition)

if(shortEntry)
    strategy.entry("short",strategy.short,when=exitLongCondition)
    strategy.close("short",when=longCondition)