Estrategia de trading de seguimiento de tendencias basada en el oscilador de volumen


Fecha de creación: 2024-01-29 15:04:18 Última modificación: 2024-01-29 15:04:18
Copiar: 0 Número de Visitas: 760
1
Seguir
1617
Seguidores

Estrategia de trading de seguimiento de tendencias basada en el oscilador de volumen

Descripción general

Esta estrategia es una estrategia de seguimiento de tendencias basado en el indicador modificado del oscilador de volumen de transacciones. Utiliza la línea media de volumen de transacciones para identificar señales de aumento de volumen de transacciones y así determinar la entrada o salida de posiciones.

Principio de estrategia

  1. Calcula el promedio de la cantidad de transacciones vol_sum, con una longitud de vol_length, para una suavización de la longitud de vol_smooth.
  2. Cuando el aumento de vol_sum sobrepasa el umbral de valoración, se genera una señal de compra, y cuando el descenso sobrepasa el umbral de valoración, se genera una señal de venta.
  3. Para filtrar el error de operación, solo se realiza una operación de compra cuando la tendencia de precios sube en comparación con el precio de cierre de la línea K de la raíz de la dirección anterior. Se realiza una operación de venta cuando la tendencia de precios baja.
  4. Configuración de dos umbrales threshold y threshold2. Threshold es usado para generar una señal de transacción, y threshold2 es usado para detener la pérdida.
  5. La lógica de apertura de la bodega de los pedidos administrados a través de la máquina de estado.

Análisis de las ventajas

  1. El uso de indicadores de volumen de transacciones permite capturar cambios en el mercado de la fuerza de compra y venta, lo que mejora la precisión de la señal.
  2. La combinación de un análisis de la tendencia de los precios puede evitar que se produzcan señales erróneas durante las fluctuaciones de precios.
  3. El uso de dos mínimos para abrir y cerrar posiciones permite un mejor control del riesgo.

Análisis de riesgos

  1. El indicador de volumen de transacciones se retrasa y puede perder el punto de inflexión de los precios.
  2. La configuración incorrecta de los parámetros puede causar una frecuencia de transacción excesiva o un retraso en la señal.
  3. En el escenario de un aumento de la transacción, el punto de parada podría ser superado.

Estos riesgos pueden ser controlados mediante ajustes en los parámetros, optimización de la forma en que se calculan los indicadores y confirmación en combinación con otros indicadores.

Dirección de optimización

  1. Se puede considerar la optimización de los parámetros del indicador para su adaptación, ajustándose automáticamente según las condiciones del mercado.
  2. Se puede combinar con otros indicadores, como el índice de volatilidad de precios, para verificar aún más las señales y mejorar la precisión.
  3. Se puede estudiar la aplicación de modelos de aprendizaje automático a la evaluación de señales para mejorar la precisión de la evaluación de modelos.

Resumir

Esta estrategia es una estrategia de seguimiento de tendencias más estable en general, con un oscillador de volumen de transacción mejorado que ayuda a determinar la tendencia del precio y establece dos límites para abrir y cerrar posiciones. El espacio de optimización se centra principalmente en el ajuste de parámetros, la filtración de señales y la estrategia de parada de pérdidas. En general, la estrategia tiene cierto valor práctico y vale la pena optimizar aún más.

Código Fuente de la Estrategia
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy('Volume Advanced', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Start Month"), input(17, "Start Day"), 0, 0)
end    = timestamp(input(9999, "End Year"),   input(1, "End Month"),   input(1, "End Day"),   0, 0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)

source = close 
vol_length  = input(34, title = "Volume - Length")
vol_smooth  = input(200,title = "Volume - Smoothing")
volriselen  = input(21,  title = "Volume - Risinglength")
volfalllen  = input(13, title = "Volume - Fallinglength")
threshold   = input(1,"threshold")
threshold2  = input(1.2,step=0.1, title="Threshold 2")
direction = input(13,"amount of bars")


volsum  = sum(volume, vol_length) / (sum(volume, vol_smooth) / (vol_smooth / vol_length))


LongEntry  = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close > close[direction]
ShortEntry = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close < close[direction]
LongExit1  = falling (volsum,volfalllen)
ShortExit1 = falling (volsum,volfalllen)
LongExit2= (crossover(volsum, threshold2) and close < close[direction])


_state = 0
_prev = nz(_state[1])
_state := _prev

if _prev == 0
    if LongEntry
        _state := 1
        _state
    if ShortEntry
        _state := 2
        _state
if _prev == 1
    if ShortEntry or LongExit1
        _state := 0
        _state
if _prev == 2
    if LongEntry or ShortExit1
        _state := 0
        _state

_bLongEntry = _state == 1 
_bLongClose = _state == 0 

long_condition = _bLongEntry and close > close[direction]
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition =  _bLongClose or LongExit2
strategy.close('BUY', when=short_condition)

plot(volsum,      color = color.green,    title="Vol_Sum")
plot(threshold, color = color.fuchsia, transp=50, title="Threshold")
plot(threshold2, color=color.white, transp = 50, title="Threshold 2")