
La estrategia es un sistema de negociación de ruptura dinámica basado en las bandas de Bollinger, que utiliza principalmente la señal de la subida de los precios para la entrada de múltiples entradas, y combina la continuidad de la tendencia y el principio de la regresión a la media. La estrategia funciona en un marco de tiempo de 5 minutos para capturar oportunidades de ruptura en la fluctuación del mercado a corto plazo mediante el establecimiento de parámetros de la banda de Bollinger y tolerancias de tendencia.
La estrategia se basa en el indicador de la banda de Bryn, que se compone de tres líneas: la línea media (la media móvil simple de 20 ciclos), la línea superior (la línea media + 1.9 veces la diferencia estándar) y la línea inferior (la línea media -1.9 veces la diferencia estándar). La lógica de negociación es la siguiente:
La estrategia utiliza la variable barsNotAboveUpper para contar el número de ciclos consecutivos en que el precio no se mantiene por encima de la vía superior. Cada vez que el precio es superior a la vía superior, el contador se reajusta a 0; de lo contrario, el contador agrega 1. Cuando el contador alcanza el umbral de tolerancia, o cuando el precio toca la vía media, la estrategia se despega y sale de la posición de varios puntos.
A pesar de que el código incluye el marco de la estrategia de la borda, la parte de la ejecución de la estrategia de la borda en la práctica se ha anotado, lo que hace que la estrategia sólo ejecute operaciones de más de una borda. Esto puede ser una decisión de optimización basada en las características del mercado o en los resultados de la revisión.
Seguimiento de tendencias y adaptación a la volatilidadBrin se adapta a la volatilidad del mercado y ajusta automáticamente el ancho de canal en diferentes ambientes de fluctuación, lo que hace que la estrategia funcione en diferentes condiciones de mercado.
Reglas claras de entrada y salida: La estrategia proporciona una clara señal de entrada ((breaking up tracks)) y dos condiciones de salida objetivas ((la tendencia es de poca continuidad o toca la línea media)) y reduce el juicio subjetivo.
Mecanismo de control de riesgosLa estrategia puede responder rápidamente a los cambios de tendencia, deteniendo los pérdidas a tiempo mediante la configuración de parámetros de tolerancia a la tendencia. Este mecanismo de salida doble basado en el tiempo y el precio controla eficazmente la exposición al riesgo de una sola operación.
Optimización de espacios de parámetrosLa estrategia ofrece tres parámetros ajustables de longitud de la banda de Brin, multiplicador y tolerancia a la tendencia, lo que permite a los operadores optimizar en función de las diferentes condiciones del mercado y estilos de negociación.
Aplicación del principio de regresión: La estrategia utiliza el precio en contacto con la línea media (medio) como condición de salida, que se ajusta a la característica de la regresión de la media de los mercados financieros, lo que aumenta la racionalidad de la salida.
Integración de los sistemas de alerta: La estrategia integra la función de alerta de señales de negociación, que notifica en tiempo real a los operadores de las señales de entrada y salida, lo que mejora la eficiencia de la ejecución de las operaciones.
Riesgo de una falsa brechaEl precio puede retroceder rápidamente después de una brecha temporal en la vía, lo que puede conducir a señales erróneas y transacciones innecesarias, lo que aumenta los costos de transacción.
Sensibilidad de los parámetrosLa longitud de la banda de Brin y los parámetros multiplicados tienen un impacto significativo en el rendimiento de la estrategia, y la configuración inadecuada de los parámetros puede causar demasiadas señales falsas o perder oportunidades de negociación importantes.
Limitación de las transacciones unidireccionalesLa estrategia actual sólo ejecuta operaciones con múltiples titulares, lo que puede conducir a una falta de oportunidades de ganancias en un mercado de tendencia bajista, lo que hace que el rendimiento sea inestable a largo plazo.
El mecanismo de deterioro depende del tiempoLa tolerancia a la tendencia se basa en el cálculo de los ciclos y no en la amplitud de las fluctuaciones de los precios, lo que en situaciones extremas puede no detener la pérdida a tiempo y aumentar el riesgo de caída.
La retirada de control no es suficiente: La falta de un mecanismo de stop loss basado en la gestión general de los fondos puede provocar un retiro mayor de la cuenta en caso de una serie de señales erróneas.
Limitaciones en el marco de tiempo: La estrategia está diseñada específicamente para gráficos de 5 minutos y puede no ser aplicable a otros marcos de tiempo, lo que limita el alcance de la estrategia.
Para mitigar estos riesgos, se recomienda: 1) aumentar las condiciones de filtración adicionales para reducir las falsas señales de ruptura; 2) implementar controles de riesgo basados en posiciones generales; 3) agregar indicadores de confirmación de tendencias; 4) considerar aumentar los mecanismos de detención de pérdidas basados en la amplitud del precio.
adxLength = input.int(14, "ADX Length")
adxThreshold = input.int(25, "ADX Threshold")
dI = ta.dmi(adxLength, adxLength)
adx = ta.adx(adxLength)
trendFilter = adx > adxThreshold and dI+"DI" > dI+"DI-"
longCondition := longCondition and trendFilter
Hacer realidad una estrategia multiespacial completa: Activar la lógica de negociación en blanco comentada en el código para que la estrategia se beneficie igualmente en mercados bajistas. Esto aumentará la adaptabilidad y la integralidad de la estrategia en diferentes entornos de mercado.
Optimización de la gestión de fondos: Añadir control de tamaño de posición y gestión de riesgo general, como paradas de pérdida basadas en ATR, límites de máximo retiro, etc. Por ejemplo:
atrPeriod = input.int(14, "ATR Period")
atrMultiplier = input.float(3.0, "ATR Multiplier")
atr = ta.atr(atrPeriod)
stopLossPrice = strategy.position_avg_price - (atrMultiplier * atr)
timeFilter = (hour >= 9 and hour < 16) or (hour >= 18 and hour < 22)
longCondition := longCondition and timeFilter
volatilityRatio = ta.atr(14) / ta.atr(56)
dynamicMult = volatilityRatio < 0.8 ? mult * 0.8 : mult * 1.2
var float trailingStop = na
if strategy.position_size > 0
trailingStop := math.max(trailingStop, close - atrMultiplier * atr)
if close < trailingStop
strategy.close("Long")
La estrategia de comercio cuantitativo de aceleración de ruptura dinámica de la banda de Brin es un sistema de comercio a corto plazo basado en el análisis técnico, que combina el seguimiento de tendencias y el principio de regreso a la media. La estrategia realiza una entrada múltiple mediante la monitorización de las señales de ruptura de la banda de Brin en la pista de precios, aprovechando la falta de continuidad de los precios o el contacto con la línea de equilibrio para salir de la bolsa, formando un círculo de cierre completo.
La ventaja de esta estrategia reside en su capacidad para adaptarse a la volatilidad del mercado y las reglas de negociación claras, pero también enfrenta desafíos como el riesgo de ruptura falsa y la sensibilidad a los parámetros. La estabilidad y la rentabilidad de la estrategia se pueden mejorar significativamente mediante el aumento de los filtros de tendencia, la mejora del sistema de negociación multipolar, la optimización de la gestión de fondos y la introducción de parámetros de adaptación.
Para los comerciantes, la estrategia es adecuada para su uso como sistema de negociación a corto plazo, especialmente en mercados de gran volatilidad y con características claramente disruptivas. Si se optimiza aún más, tiene el potencial de convertirse en una solución de negociación integral que pueda mantener un rendimiento relativamente estable en una variedad de entornos de mercado.
/*backtest
start: 2024-03-25 00:00:00
end: 2025-03-24 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © GoodDayss
//@version=6
strategy("Bollinger Bands Strategy 5m", overlay=true)
length = input.int(20, "Bollinger Length", minval=1)
mult = input.float(1.9, "Bollinger Mult", minval=0.001, maxval=50)
tolerance = input.int(4, "Trend Tolerance", minval=1)
source = close
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev
plot(basis, color=color.yellow, linewidth=2, title="Basis")
plot(upper, color=color.white, linewidth=2, title="Up")
plot(lower, color=color.white, linewidth=2, title="Low")
var int barsNotAboveUpper = 0
var int barsNotBelowLower = 0
bool longCondition = ta.crossover(close, upper)
bool shortCondition = ta.crossunder(close, lower)
if longCondition and strategy.position_size <= 0
strategy.entry("Long", strategy.long)
// Alert
alertcondition(longCondition and strategy.position_size <= 0, title = "幹你媽買進", message = "{{{ticker}} 的價格是 {{close}},\n買進!!!.}")
// if shortCondition and strategy.position_size >= 0
// strategy.entry("Short", strategy.short)
if strategy.position_size > 0
if close > upper
barsNotAboveUpper := 0
else
barsNotAboveUpper += 1
bool touchedBasisLong = (low <= basis)
if barsNotAboveUpper >= tolerance or touchedBasisLong
// Alert
alert(message = "{{{ticker}} 的價格是 {{close}},\n塊陶啊,賣出!!!.}")
strategy.close("Long", comment="Exit Long")
barsNotAboveUpper := 0
if strategy.position_size < 0
if close < lower
barsNotBelowLower := 0
else
barsNotBelowLower += 1
bool touchedBasisShort = (high >= basis)
// if barsNotBelowLower >= tolerance or touchedBasisShort
// strategy.close("Short", comment="Exit Short")
// barsNotBelowLower := 0