Estrategia de negociación de oscilación de impulso

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

img

Resumen general

Esta estrategia se basa en el indicador de Bollinger Bands, combinado con indicadores de impulso para implementar una estrategia de negociación combinada de reversión de Bollinger Bands y ruptura de impulso.

Estrategia lógica

La estrategia utiliza la línea media SMA de las bandas de Bollinger como indicador de promedio móvil, y ajusta dinámicamente el ancho de la banda a través de param mult * stdev. Cuando el precio rompe la línea media desde abajo, indica que se obtiene un impulso ascendente y, por lo tanto, va largo. Cuando el precio se rompe a través de la línea media desde arriba, muestra que se obtiene un impulso descendente y, por lo tanto, se corta. Después de ingresar posiciones largas / cortas, se establecen parámetros de stop loss y take profit para rastrear las ganancias y controlar los riesgos.

Específicamente, las bandas de Bollinger se calculan con dos parámetros: longitud y mult. La longitud determina el período de la línea media y mult decide el ancho de la banda. enterLong y enterShort juzgan el momento de la ruptura. exitLong y exitShort calculan los precios de stop loss y take profit basados en el precio de entrada y el porcentaje objetivo.

Ventajas

Esta estrategia combina la reversión a la media y el impulso, lo que le permite capturar las principales tendencias desde el principio. En comparación con simplemente el seguimiento de los promedios móviles, el juicio de impulso agregado basado en el ancho de las bandas de Bollinger puede filtrar algunas rupturas falsas.

Los riesgos

  • El retraso en las bandas de Bollinger ajustando los precios, puede perder algunos movimientos
  • Los riesgos de pérdidas pueden aumentar si se establece un stop loss demasiado amplio.
  • Las señales cortas en el mercado alcista pueden no salir bien

Los parámetros como los períodos, el ancho de banda y el intervalo de stop loss se pueden optimizar para hacer que la estrategia sea adaptable a diferentes condiciones de mercado.

Mejoramiento

  • Añadir volumen de operaciones o volatilidad para evitar falsos breakouts de bajo volumen
  • Búsqueda de parámetro para optimizar los períodos, el coeficiente de anchura y el porcentaje de pérdida de parada
  • Solo ir largo o corto basado en el régimen del mercado
  • Añadir modelo de aprendizaje automático para determinar la dirección de la tendencia

Conclusión

Esta estrategia combina las fortalezas de la reversión y el impulso de las bandas de Bollinger, lo que le permite capturar algunas tendencias desde el principio. A través del ajuste de parámetros, puede adaptarse a diferentes etapas del mercado. El cálculo directo de stop loss / take profit reduce la intervención manual. Todavía hay margen de mejora, por ejemplo, incorporando más indicadores auxiliares. Estos se mejorarán gradualmente en más investigación y optimización.


/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BURATINO", overlay=true)

// Входные параметры
length = input(20, minval=1, title="Length")
mult = input(2.0, minval=0.1, maxval=5, title="Multiplier")
target_percent = input(0.5, minval=0.1, title="Target Percent")
stop_loss_percent = input(95, minval=0.1, title="Stop Loss Percent")

// Расчет полос Боллинджера
basis = sma(close, length)
dev = mult * stdev(close, length)
upper = basis + dev
lower = basis - dev

// Переворот снизу вверх через среднюю линию Боллинджера для открытия лонга
enterLong = cross(close, basis) and close[1] < basis[1]

// Переворот сверху вниз через среднюю линию Боллинджера для открытия шорта
enterShort = cross(basis, close) and close[1] > basis[1]

// Закрытие лонга после роста цены на указанный процент или падения на указанный процент
exitLong = close >= strategy.position_avg_price * (1 + (target_percent / 100)) or close <= strategy.position_avg_price * (1 - (stop_loss_percent / 100))

// Закрытие шорта после падения цены на указанный процент или роста на указанный процент
exitShort = close <= strategy.position_avg_price * (1 - (target_percent / 100)) or close >= strategy.position_avg_price * (1 + (stop_loss_percent / 100))

// Управление позициями и ограничениями на открытие противоположных позиций
strategy.entry("Long", strategy.long, when = enterLong and strategy.position_size == 0)
strategy.entry("Short", strategy.short, when = enterShort and strategy.position_size == 0)

strategy.close("Long", when = exitLong)
strategy.close("Short", when = exitShort)

// Визуализация полос Боллинджера
plot(basis, color=color.blue, title="Basis")
plot(upper, color=color.red, title="Upper")
plot(lower, color=color.green, title="Lower")

Más.