Estrategia de trading bidireccional con índice direccional


Fecha de creación: 2023-12-19 14:13:52 Última modificación: 2023-12-19 14:13:52
Copiar: 0 Número de Visitas: 413
1
Seguir
1235
Seguidores

Estrategia de trading bidireccional con índice direccional

Descripción general

Esta estrategia permite el comercio bidireccional de mercancías mediante el cálculo del índice de movimiento de la mercancía (DI) y la combinación de parámetros de restricción. Hacer más cuando el DI+ es mayor que el DI- un parámetro de restricción y hacer menos cuando el DI- es mayor que el DI+ un parámetro de restricción.

Principio de estrategia

El indicador central de la estrategia es el índice de tendencia ((DI) ≠ DI calculado por la siguiente fórmula:

DI + = (DM + / verdadero rango) * 100 DI- = (DM- / verdadero rango) por 100

El DM+ representa el movimiento de las carteras y el DM- representa el movimiento de las carteras. El rango real representa la amplitud de las fluctuaciones recientes mediante el cálculo del máximo valor de los máximos, mínimos y precios de cierre de ayer durante tres días.

De acuerdo con la definición de DI, cuando DI+ > DI- indica que la fuerza de cabecera es mayor que la fuerza de cabecera, pertenece al mercado de cabecera; cuando DI- > DI+ indica que la fuerza de cabecera es mayor que la fuerza de cabecera, pertenece al mercado de cabecera.

La estrategia utiliza esta característica para establecer un parámetro de restricción. Cuando el DI+ es mayor que el DI- un parámetro de restricción, se considera que el mercado está lleno de tiendas, hacer más; cuando el DI- es mayor que el DI+ un parámetro de restricción, se considera que el mercado está vacío, hacer vacío.

Por ejemplo, si el parámetro de restricción se establece en 3, entonces las reglas de transacción específicas son:

  1. Cuando DI+ - DI- > 3, hacer más
  2. Cuando DI- - DI+ > 3, dejar en blanco

Como a menudo hay una menor oscilación de diferencia entre DI+ y DI-, la configuración de parámetros de restricción puede filtrar algunas señales de negociación sin una orientación obvia, reduciendo las transacciones innecesarias, que es una ventaja de esta estrategia.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de DI para juzgar la situación es orientado y confiable.

El DI determina el movimiento de la bolsa de valores de manera más directa mediante el cálculo de las fuerzas de las dos partes del mercado, sin algoritmos complejos como la adaptación de la curva, y la teoría es simple y confiable.

  1. Configuración de parámetros de restricción para filtrar las señales de manera efectiva

Al limitar los parámetros de filtración sin fluctuaciones de menor magnitud de dirección evidente, solo seleccione los segmentos de mercado con una dirección evidente para operar y evitar ser apisonado.

  1. Realización de transacciones automáticas bidireccionales

El posicionamiento multi-vacío se puede cambiar automáticamente según el indicador DI, sin necesidad de juicio manual, lo que reduce la dificultad de las transacciones.

  1. Tiempo de transacción personalizado

La configuración de soporte solo opera en el rango de fechas personalizadas, eliminación automática de la posición al final, flexibilidad y conveniencia.

  1. Se puede elegir entre hacer más o hacer nada.

Con el interruptor de espacio múltiple, solo se puede seleccionar una señal unidireccional, para realizar solo hacer más o solo hacer vacío, para adaptarse a diferentes entornos de mercado.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. Es posible que el DI haya emitido una señal errónea

Cuando hay una gran volatilidad en el mercado, el DI puede emitir señales erróneas a corto plazo, lo que lleva al fracaso de la operación. Se requiere una combinación de otros indicadores para su verificación.

  1. Los parámetros de restricción están mal configurados

Si los parámetros de restricción se establecen demasiado grandes o demasiado pequeños, pueden dar lugar a demasiadas o pocas señales de negociación, por lo que es necesario ajustar los parámetros según el mercado.

  1. No se sabe cuál es el final de la tendencia

El DI solo puede determinar la dirección de la tendencia actual, no puede determinar si la tendencia termina o se invierte, y requiere la combinación de otros indicadores.

Las soluciones para los riesgos incluyen:

  1. Indicadores como el promedio móvil se combinan para filtrar las señales DI

  2. Ajuste de los parámetros de restricción de acuerdo con los resultados de la medición

  3. En combinación con Volumes, MACD, etc., para determinar si la tendencia se ha invertido

Dirección de optimización

La estrategia puede seguir optimizándose en los siguientes aspectos:

  1. Indicadores de tendencias en combinación con otros indicadores como el gráfico de la opinión pública

Indicadores más intuitivos para juzgar la fuerza aérea, como el mapa de la lluvia de la opinión pública, se pueden combinar con el DI para mejorar la precisión de los juicios.

  1. Unirse a la estrategia de stop loss

Establezca un punto de parada móvil, un punto de parada de tiempo o de tasa para bloquear las ganancias y reducir las pérdidas.

  1. Ajuste de parámetros para variedades específicas

Ajustar los parámetros de restricción y el tiempo de negociación de acuerdo con las características comerciales de las diferentes variedades puede mejorar la eficacia de la estrategia.

  1. Optimización dinámica con tecnología de aprendizaje automático

Aplicación de técnicas como el aprendizaje por refuerzo y configuración de parámetros de optimización de la señal en disco.

Resumir

La estrategia en su conjunto es sencilla y práctica. Utiliza el método de cálculo de DI para determinar la dirección de la tendencia; limita las señales de filtración de parámetros; puede realizar operaciones bidireccionales, o solo puede hacer más o nada; soporta la configuración de los períodos de operación. La principal ventaja es la alta fiabilidad y la señal de filtración efectiva.

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

//@version=3
strategy("Noro's DI Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(title="Length", defval=14)
limit = input(3, title = "limit, %")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//DI
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementMinus = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100

//Trend
trend = 0
trend := DIPlus > DIMinus + limit ? 1 : DIPlus < DIMinus - limit ? -1 : trend[1]

//Background
col = trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Lines
plot(DIPlus, color=lime, title="DI+", linewidth = 3)
plot(DIMinus, color=red, title="DI-", linewidth = 3)

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if trend == -1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()