Estrategia de negociación de divisas basada en la EMA de escalones

El autor:¿ Qué pasa?, Fecha: 2023-11-07 17:03:57
Las etiquetas:

img

Resumen general

Esta es una estrategia de comercio de divisas a corto plazo (1-5 minutos) que utiliza principalmente la relación de precio de volumen en la teoría de las mareas y múltiples EMA de escalones para predecir los puntos de inversión de tendencia para el comercio de seguimiento de tendencias a corto plazo.

Principio

Las señales comerciales de esta estrategia provienen de dos partes:

  1. El juicio de la relación de precios de volumen basado en el precio promedio de volumen. Específicamente, la estrategia calcula la EMA del precio promedio de volumen de diferentes períodos (configurable) para juzgar el cambio en las tendencias alcistas y bajistas. Si la EMA del período corto cruza por encima de la EMA del período más largo, se considera una señal alcista. Si la EMA del período corto cruza por debajo de la EMA del período más largo, se considera una señal bajista.

  2. La EMA de escalones se refiere al establecimiento de múltiples EMA con diferentes parámetros, como 10 días, 20 días, 50 días, etc. Juzgar la inversión de tendencia de acuerdo con su orden. Si la EMA de corto período se vuelve por delante de la EMA de largo período, significa que la tendencia se está invirtiendo.

La estrategia combinará estas dos señales para determinar la entrada. Específicamente, si la relación de precios de volumen se juzga alcista y la EMA de la escalera muestra que múltiples EMA se han vuelto alcistas, se tomarán posiciones largas. Por el contrario, si la relación de precios de volumen se juzga bajista y la EMA de la escalera muestra que múltiples EMA se han vuelto bajistas, se tomarán posiciones cortas.

Ventajas

Esta estrategia combina las ventajas del precio promedio por volumen y de múltiples EMA, lo que puede mejorar la precisión y la estabilidad de las señales:

  1. La evaluación de la relación entre el volumen y el precio basada en el precio medio del volumen puede ser más precisa que la simple evaluación del precio por parte de la EMA, evitando ser engañados por las fluctuaciones de precios más elevadas.

  2. La EMA escalonada puede aumentar la dimensión del juicio por el orden de diferentes EMA de parámetros, evitando el ruido de una sola EMA.

  3. La combinación de las dos señales permite la verificación mutua y reduce las falsas señales.

  4. Es adecuado para operaciones a corto plazo de alta frecuencia y puede capturar rápidamente pequeñas oportunidades de reversión dentro del rango.

  5. Los parámetros de la estrategia se pueden configurar de manera flexible para optimizar para diferentes variedades y frecuencias.

Los riesgos

Esta estrategia también tiene algunos riesgos:

  1. La dependencia excesiva de los indicadores técnicos puede inducirnos a error por las condiciones erráticas del mercado.

  2. Las operaciones a corto plazo son relativamente sensibles a los costes de negociación, el deslizamiento y las comisiones deben controlarse bien.

  3. Los parámetros de la EMA a corto plazo necesitan una optimización frecuente, de lo contrario pueden volverse inválidos.

  4. La divergencia de precios de volumen no genera necesariamente una reversión, existe el riesgo de un error de apreciación.

  5. El orden de múltiples EMA no es del todo fiable y también puede causar errores de apreciación.

Contramedidas:

  1. Combina factores más fundamentales para el juicio.

  2. Ajustar las posiciones para garantizar que las pérdidas en operaciones individuales no sean demasiado grandes.

  3. Regularmente volver a probar y optimizar los parámetros.

  4. Comerciar cerca de los niveles clave de soporte/resistencia para aumentar la tasa de éxito.

  5. Uso con otros indicadores para la verificación multidimensional.

Direcciones de optimización

Esta estrategia también puede optimizarse en los siguientes aspectos:

  1. Prueba diferentes métodos de cálculo de la relación de precios por volumen para encontrar parámetros más estables.

  2. Aumentar más los niveles de los indicadores EMA de la escalera.

  3. Combinar otras señales de indicadores para filtrar, como el RSI, el MACD, etc.

  4. Optimizar los mecanismos de stop loss como mover los stop loss, las órdenes pendientes, etc.

  5. Optimizar los parámetros basados en las características de los diferentes instrumentos de negociación para desarrollar conjuntos de parámetros adecuados.

  6. Introducir algoritmos de aprendizaje automático para entrenar modelos de juicio utilizando big data.

  7. Explorar diferentes estrategias de salida, como salidas fijas, salidas de seguimiento de tendencias, etc.

  8. Introducir mecanismos de parámetros adaptativos para ajustar automáticamente los parámetros en función de los cambios del mercado.

Resumen de las actividades

Esta estrategia combina las ventajas del precio promedio de volumen y la EMA de escalera para el seguimiento de tendencias a corto plazo. La estrategia tiene una alta estabilidad y precisión, pero debe tenerse en cuenta el control de riesgos y la optimización de parámetros. Con la optimización y prueba continuas, combinada con otros indicadores técnicos, puede convertirse en una estrategia de trading eficiente a corto plazo.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © exlux99

//@version=5

strategy("Forex Fractal EMA Scalper", overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input.int(title="Period Fractals", defval=2, minval=2, group="Optimization Parameters")

src = input(hl2, title="Source for EMA's", group="Optimization Parameters")
len1 = input.int(10, minval=1, title="Length EMA 1", group="Optimization Parameters")
out1 = ta.ema(src, len1)
len2 = input.int(20, minval=1, title="Length EMA 2", group="Optimization Parameters")
out2 = ta.ema(src, len2)
len3 = input.int(100, minval=1, title="Length EMA 3", group="Optimization Parameters")
out3 = ta.ema(src, len3)



// UpFractal
bool upflagDownFrontier = true
bool upflagUpFrontier0 = true
bool upflagUpFrontier1 = true
bool upflagUpFrontier2 = true
bool upflagUpFrontier3 = true
bool upflagUpFrontier4 = true

for i = 1 to n
    upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
    upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
    upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
    upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
    upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
    upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4

upFractal = (upflagDownFrontier and flagUpFrontier)


// downFractal
bool downflagDownFrontier = true
bool downflagUpFrontier0 = true
bool downflagUpFrontier1 = true
bool downflagUpFrontier2 = true
bool downflagUpFrontier3 = true
bool downflagUpFrontier4 = true

for i = 1 to n
    downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
    downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
    downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
    downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
    downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
    downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4

downFractal = (downflagDownFrontier and flagDownFrontier)

// plotshape(downFractal, style=shape.triangledown, location=location.belowbar, offset=-n, color=#F44336, size = size.small)
// plotshape(upFractal, style=shape.triangleup,   location=location.abovebar, offset=-n, color=#009688, size = size.small)


long= out1 > out2 and out2>out3 and upFractal
short= out1 < out2 and out2<out3 and downFractal


strategy.entry("long",strategy.long,when= short)
strategy.entry("short",strategy.short,when=long)

tp=input(25, title="TP in PIPS", group="Risk Management")*10
sl=input(25, title="SL in PIPS", group="Risk Management")*10


strategy.exit("X_long", "long", profit=tp,  loss=sl  )
strategy.exit("x_short", "short",profit=tp, loss=sl  )


Más.