Estrategia de trading cuantitativo basada en el cruce de doble EMA


Fecha de creación: 2023-11-21 11:41:40 Última modificación: 2023-11-21 11:41:40
Copiar: 0 Número de Visitas: 620
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo basada en el cruce de doble EMA

Descripción general

La estrategia determina la tendencia del mercado calculando el cruce de las líneas medias de los EMA de dos períodos diferentes y, en consecuencia, genera una señal de negociación. Cuando el EMA de corto plazo atraviesa el EMA de largo plazo, se considera que el mercado entra en una tendencia alcista, la estrategia abrirá más posiciones; Cuando el EMA de corto plazo atraviesa el EMA de largo plazo, se considera que el mercado entra en una tendencia descendente, la estrategia se retira de la posición.

Principio de estrategia

La estrategia se basa en la teoría de la horquilla de la línea media doble EMA. La línea media doble EMA se divide en EMA larga y EMA corta. El parámetro de EMA corto se establece en 10 días y el parámetro de EMA largo en 21 días.

Cuando la línea corta pasa por la línea larga, se genera una señal de compra; cuando la línea corta pasa por la línea larga, se genera una señal de venta. La estrategia también establece un umbral de tasa de crecimiento, solo se abre una posición adicional cuando la tasa de crecimiento supera el umbral y se liquida cuando la caída supera el umbral.

Concretamente, las condiciones de compra son EMAs cortas más altas que EMAs largas, y el crecimiento del precio de las acciones es superior al umbral positivo establecido; las condiciones de liquidación son EMAs cortas más bajas que EMAs largas, y el crecimiento del precio de las acciones es inferior al umbral negativo establecido.

Ventajas estratégicas

  • La teoría de la horca dorada de doble línea media EMA es relativamente simple y confiable
  • Aumentar la fijación de los límites de la tasa de crecimiento para evitar errores de negociación cuando el crecimiento es débil
  • Se puede controlar estrictamente la proporción de pérdidas máximas
  • Parámetros de la línea media EMA flexibles para diferentes períodos

Análisis de riesgos

  • El EMA promedio es retrasado y puede haber perdido el punto de inflexión del precio
  • El cruce de la línea media tiene cierta latencia, lo que puede conducir a perder el mejor momento para abrir una posición.
  • Optimización de los parámetros de dependencia, los parámetros mal configurados pueden ocasionar frecuencias de transacción o falta de señales

Dirección de optimización

  • Optimización en combinación con otros indicadores, como MACD, KD, etc., para mejorar la precisión de la señal
  • Aumentar las estrategias de stop loss, como el seguimiento de los stop losses, para asegurar el máximo beneficio.
  • Optimización de los parámetros del ciclo EMA para establecer los mejores parámetros para diferentes variedades
  • Optimización de ajustes de parámetros dinámicos combinados con datos en tiempo real y métodos de aprendizaje automático

Resumir

Esta estrategia es más simple y confiable en general, determina la tendencia de los precios a través de la cruz de dos EMA y establece un umbral de crecimiento para emitir una señal de negociación. En comparación con la cruz de una sola línea media, se pueden filtrar algunas señales falsas.

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
strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2)

useTimeLimit    = input(defval = false, title = "Use Start Time Limiter?")
startYear       = input(defval = 2016, title = "Start From Year",  minval = 0, step = 1)
startMonth      = input(defval = 05, title = "Start From Month",  minval = 0,step = 1)
startDay        = input(defval = 01, title = "Start From Day",  minval = 0,step = 1)
startHour       = input(defval = 00, title = "Start From Hour",  minval = 0,step = 1)
startMinute     = input(defval = 00, title = "Start From Minute",  minval = 0,step = 1)

startTimeOk() => true

lenght0 = input(10)
lenght1 = input(21)

source = close

EmaShort = ema(ema(source, lenght0), lenght0)
EmaLong = ema(ema(source, lenght1),lenght1)
plot(EmaShort, color=red)
plot(EmaLong, color=purple)

growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2)
thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01)
thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001)

if( startTimeOk() )
    buy_condition = EmaShort > EmaLong and growth > thresholdUp
    buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown
    strategy.entry("buy", strategy.long, comment="buy", when=buy_condition)
    strategy.close(id='buy', when=buy_exit_condition)