Estrategia de impulso


Fecha de creación: 2023-09-26 15:16:56 Última modificación: 2023-09-26 15:16:56
Copiar: 1 Número de Visitas: 777
1
Seguir
1617
Seguidores

Descripción general

La estrategia de dinámica es una estrategia de negociación basada en la tendencia de los cambios de precios. La estrategia determina la tendencia del movimiento de los precios mediante el cálculo de los cambios de precios en un período determinado, y luego genera una señal de negociación.

Principio de estrategia

La estrategia determina la dinámica de los precios mediante el cálculo de los cambios en los precios de cierre durante un período determinado. En concreto, se calcula el cambio en los precios de cierre con respecto a los precios de cierre antes de N períodos.

Primero se calcula el primer indicador de movimiento MOM0, cuya fórmula es:

MOM0 = CLOSE - CLOSE[N]

Entre ellos, CLOSE indica el precio de cierre del ciclo actual,[N] representa el precio de cierre antes de N períodos. Así, MOM0>0 representa el aumento del precio de cierre antes de N períodos en relación con el ciclo actual, y MOM0 representa la caída del precio de cierre antes de N períodos en relación con el ciclo actual.

Luego se calcula el segundo indicador de potencia MOM1, con la fórmula:

MOM1 = MOM0 - MOM0[1]

Es decir, calcular el valor de MOM0 del ciclo actual menos el valor del ciclo anterior. MOM1>0 indica que MOM0 subió, MOM1 indica que MOM0 bajó.

Al mismo tiempo, se calcula el tercer indicador de potencia MOM2, con la fórmula:

MOM2 = CLOSE - CLOSE[1]

Es decir, se calcula el precio de cierre del ciclo actual menos el precio de cierre del ciclo anterior. MOM2>0 significa que el precio de cierre ha aumentado, MOM2 significa que el precio de cierre ha disminuido.

Cuando MOM0>0 y MOM1>0, indica que el impulso continúa subiendo, produciendo una señal de compra; cuando MOM0 y MOM2, indica que el impulso continúa bajando, produciendo una señal de venta.

El código también añade la condición de tiempo time_second, que sólo generará una señal de transacción dentro del período de tiempo de retracción establecido. Además, antes de colocar la orden, verifique una vez más si la condición sigue vigente, para evitar que la señal desaparezca.

Análisis de las ventajas

  • Las estrategias de dinámica capturan las tendencias de los cambios en los precios sin ser influenciadas por los precios en sí mismos, evitando el riesgo de perseguir los altos y los bajos
  • Utilizando el indicador de doble dinámica de cruce, se puede filtrar la falsa ruptura, para evitar la generación de señales erróneas
  • Aumentar el tiempo y las condiciones de verificación para reducir las transacciones no válidas
  • Un plan de acción sencillo y fácil de aplicar
  • Parámetros de ajuste flexible para diferentes entornos de mercado

Análisis de riesgos

  • Los indicadores de dinámica están rezagados y pueden haber perdido el punto de inflexión.
  • El cruce de dos indicadores aumenta el efecto de filtración, pero también puede perder algunas oportunidades
  • No se puede determinar la intensidad y velocidad de la subida o caída de los precios.
  • Los parámetros deben ser seleccionados con cuidado, ya que ser demasiado sensible puede aumentar la frecuencia de las transacciones y los costos de los puntos de deslizamiento.
  • El efecto depende de la optimización de los parámetros, los parámetros de diferentes períodos necesitan ajustes

Se puede reducir el riesgo mediante la reducción de los ciclos de volumen, la introducción de un juicio de tendencia o la configuración de un stop loss. También se puede considerar la inclusión de un indicador de volumen de transacción para hacer filtraciones.

Dirección de optimización

  • Prueba diferentes métodos de cálculo de la dinámica, como el ROC, el RSI, etc.
  • Aumentar el conocimiento de tendencias para evitar un cambio de tendencia
  • Configuración de estrategias de stop loss para controlar las pérdidas individuales
  • Asegurarse de que el volumen de transacciones es compatible con los indicadores de volumen de transacciones
  • La incorporación de algoritmos de aprendizaje automático para la optimización dinámica de los parámetros
  • Estrategias de marco temporal múltiple, diferenciando tendencias a corto y largo plazo
  • Considerar el arbitraje entre mercados para aprovechar las diferentes relaciones de precios de los mercados

Resumir

La estrategia de dinámica puede determinar la dirección de los puntos calientes del mercado y aprovechar las oportunidades de subida y bajada de los precios al seguir la tendencia de los cambios en los precios en lugar de los precios en sí mismos. Sin embargo, la dinámica tiene un retraso, la selección de parámetros y la optimización de la combinación son fundamentales para la eficacia de la estrategia.

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

//@version=4
strategy("Momentum Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash, commission_type = strategy.commission.percent, commission_value = 0, calc_on_every_tick = true)

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-02T00:00:00"), title = "Start Date", type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), title = "End Date",type = input.time)
 
time_cond  = true

i_len           =       input(defval = 12,      title = "Length",       minval = 1)
i_src           =       input(defval = close,   title = "Source")
i_percent       =       input(defval = true,    title = "Percent?")
i_mom           =       input(defval = "MOM2",  title = "MOM Choice",   options = ["MOM1", "MOM2"])

momentum(seria, length, percent) =>
	_mom        =       percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length]
	_mom

mom0        =       momentum(i_src, i_len, i_percent)
mom1        =       momentum(mom0, 1, i_percent)
mom2        =       momentum(i_src, 1, i_percent)

momX        =       mom1

if i_mom == "MOM2"
    momX    :=     mom2

if (mom0 > 0 and momX > 0 and time_cond)
    strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE")
else
	strategy.cancel("MomLE")
if (mom0 < 0 and momX < 0 and time_cond)
	strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE")
else
	strategy.cancel("MomSE")

plot(mom0, color = #00bcd4, title = "MOM")
plot(mom1, color = #00FF00, title = "MOM1", display = display.none)
plot(mom2, color = #00FF00, title = "MOM2")