Esta estrategia se basa en el indicador de la banda de Bollinger. Abre posiciones cuando el precio alcanza la banda superior o inferior, y establece la lógica de ganancia dinámica y la adición de posición dinámica. Cuando el precio se rebota de la banda inferior y rompe la banda media, la estrategia considera que se ha formado una tendencia alcista. En este momento, la estrategia agregará posiciones cuando el precio se retire a un cierto porcentaje de la banda media. Cuando el precio finalmente rompe la banda superior, la estrategia cierra posiciones para obtener ganancias. En una tendencia bajista, la estrategia adopta la lógica de operación opuesta. A través de la ganancia dinámica y la adición de posición dinámica basada en las bandas de Bollinger, esta estrategia puede obtener más ganancias en los mercados de tendencia.
Los principios principales de esta estrategia son los siguientes:
Calcular las bandas superior, media e inferior de las bandas de Bollinger. Las bandas superior e inferior se calculan sumando y restando N veces la desviación estándar de la banda media, donde N se puede personalizar.
Cuando el precio de cierre rompe la banda inferior y no se ha abierto ninguna posición antes, la estrategia abre una posición larga; cuando el precio de cierre rompe la banda superior y no se ha abierto ninguna posición antes, la estrategia abre una posición corta.
Después de abrir una posición larga, si el precio de cierre rompe hacia arriba a través de la banda media, se considera que se ha formado una tendencia alcista, y la variable baseCrossed se marca como verdadera.
En el caso de una posición larga, si el precio de cierre rompe la banda inferior y la baseCrossed es verdadera, y el precio actual ha caído en más del 2% desde el precio de apertura original, la estrategia agrega posiciones en este momento, y restablece baseCrossed a falso al mismo tiempo.
Si el precio de cierre rompe la banda superior al mantener una posición larga, o el precio de cierre rompe la banda inferior al mantener una posición corta, la estrategia cierra todas las posiciones, obtiene ganancias y restablece varias variables marcadoras para prepararse para la próxima apertura.
A través de la apertura dinámica anterior, la adición de posiciones y la lógica de toma de ganancias, esta estrategia puede operar de manera flexible en mercados de tendencia para obtener mayores ganancias.
Dinámica de toma de ganancias: Esta estrategia ajusta dinámicamente el nivel de toma de ganancias a través de las bandas superior e inferior de las bandas de Bollinger.
Adición dinámica de posiciones: en la etapa de retroceso después de que se forme la tendencia, la estrategia agregará posiciones gradualmente, lo que puede obtener mayores ganancias en los mercados de tendencia.
Parámetros flexibles: Los parámetros de las bandas de Bollinger, como los valores N y P, pueden ajustarse de forma flexible para adaptarse a las diferentes características del mercado y estilos de negociación.
La banda de Bollinger es un indicador técnico clásico con una buena capacidad de captura de tendencias.
Lógica clara: Las condiciones de apertura y cierre y la lógica de adición y reducción de posiciones de esta estrategia son muy claras y fáciles de entender, lo que es conveniente para que los operadores entiendan y controlen.
Mercado oscilante: las estrategias de Bollinger Band a menudo tienen un mal rendimiento en los mercados oscilantes.
Inversión de tendencia: en el momento clave de la inversión de tendencia, esta estrategia puede experimentar un retraso en el juicio, lo que lleva a agregar posiciones en la dirección equivocada, lo que resulta en una mayor reducción.
Situaciones extremas: en situaciones extremas (como subidas y caídas bruscas), la tendencia de las bandas de Bollinger puede ser anormal, causando el fracaso de la estrategia.
Configuración de parámetros: la configuración inadecuada de parámetros afectará seriamente el rendimiento de esta estrategia. Por ejemplo, establecer el valor N demasiado bajo dará lugar a transacciones frecuentes, y establecer el valor N demasiado grande dará lugar a retraso de la señal.
Eventos de cisne negro: si hay grandes eventos políticos y económicos, esta estrategia puede enfrentar una mayor exposición al riesgo.
Para controlar los riesgos anteriores, podemos comenzar desde dos aspectos: 1) Establecer razonablemente parámetros y optimizar parámetros para diferentes objetivos y condiciones de mercado; 2) Agregar más condiciones de filtrado a la estrategia, como juicio de tendencia, filtrado de volatilidad, etc., para mejorar la calidad de las señales.
Filtración de tendencia: agregar la lógica del juicio de tendencia al abrir posiciones, como usar el arreglo alcista de MA como una condición de filtración para ir largo, y el arreglo bajista de MA como una condición de filtración para ir corto, lo que puede mejorar la tasa de éxito de la captura de tendencia.
Filtración de volatilidad: Las bandas de Bollinger son en realidad un tipo de indicador de volatilidad. Se pueden introducir indicadores de volatilidad como ATR y volatilidad histórica para identificar el estado de volatilidad del mercado. Las posiciones se pueden reducir adecuadamente en estados de alta volatilidad y aumentar en estados de baja volatilidad, para controlar mejor los riesgos.
Optimización de parámetros dinámicos: Los parámetros de las bandas de Bollinger se pueden ajustar dinámicamente de acuerdo con las condiciones del mercado. Por ejemplo, el valor de N se puede aumentar en mercados de tendencia y disminuir en mercados oscilantes. Esto requiere el uso de aprendizaje automático y otras tecnologías para encontrar los parámetros óptimos a través de la capacitación en datos históricos.
Estrategias combinadas: Esta estrategia puede combinarse con otras estrategias clásicas como el MACD y el RSI para formar estrategias combinadas, mejorando la robustez y rentabilidad del sistema.
Añadir una lógica de stop-loss: en la actualidad, esta estrategia carece de una lógica de stop-loss clara. Podemos considerar la adición de mecanismos como el stop de seguimiento o el stop-loss de porcentaje fijo para controlar la pérdida máxima de una sola transacción.
Optimización de la gestión de posiciones: en el proceso de adición y reducción de posiciones, se pueden utilizar métodos clásicos de gestión de posiciones como la fórmula de Kelly y el valor óptimo de F para maximizar las ganancias bajo riesgos controlables.
A través de las optimizaciones anteriores, la relación riesgo-beneficio de esta estrategia puede mejorarse aún más, lo que le permite adaptarse mejor a los entornos cambiantes del mercado y brindar rendimientos estables a los operadores.
La estrategia de Bollinger Bands es una estrategia clásica de seguimiento de tendencias. Se basa en Bollinger Bands, busca mayores ganancias de tendencia ajustando dinámicamente las posiciones. Esta estrategia tiene una lógica clara, parámetros flexibles y una fuerte adaptabilidad. Es una estrategia de trading cuantitativa digna de investigación y aplicación en profundidad. Pero al mismo tiempo, también debemos ver que esta estrategia tiene un desempeño pobre en los mercados oscilantes y carece de la capacidad de lidiar con situaciones extremas y eventos de cisne negro. Esto requiere que nos centremos en la optimización de parámetros, el control de riesgos y la estrategia de combinación en la aplicación real, y probemos regularmente la efectividad de la estrategia en diferentes condiciones de mercado. Al comprender profundamente la lógica interna de esta estrategia y optimizar y mejorar continuamente, creo que esta estrategia puede convertirse en una herramienta importante para que los traders cuantitativos y los inversores obtengan retornos estables y a largo plazo.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Bollinger Bands 1Bb 상하한 크로스 롱숏 실행 strategy(shorttitle="BB", title="Bollinger Bands", overlay=true ) // bb length = input.int(12, minval=1) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev offset = input.int(0, "Offset", minval = -500, maxval = 500) plot(basis, "Basis", color=#FF6D00, offset = offset) p1 = plot(upper, "Upper", color=#2962FF, offset = offset) p2 = plot(lower, "Lower", color=#2962FF, offset = offset) add = input.float(0.98, step = 0.001) // plot(upper - lower, "Basis", color=color.red, offset = offset) var bool entryMade = false var bool basisCrossed = false var bool upperCrossed = false var bool lowerCrossed = false strategy.initial_capital = 50000 if close < lower and not entryMade strategy.entry("롱", strategy.long, qty = strategy.initial_capital/10000) entryMade := true if ta.crossover(close, basis) and entryMade and not upperCrossed basisCrossed := true if close > upper upperCrossed := true if close < lower and entryMade and basisCrossed and not upperCrossed and close < strategy.position_avg_price*add strategy.entry("추가롱", strategy.long, strategy.initial_capital/10000) basisCrossed := false if close > upper strategy.close("롱") strategy.close("추가롱") entryMade := false basisCrossed := false upperCrossed := false ///////////반대 포지션 if close > upper and not entryMade strategy.entry("s", strategy.short, qty = strategy.initial_capital/10000) entryMade := true if ta.crossunder(close, basis) and entryMade and not lowerCrossed basisCrossed := true if close < lower lowerCrossed := true if close > upper and entryMade and basisCrossed and not lowerCrossed and close > strategy.position_avg_price*add strategy.entry("추가s", strategy.short, strategy.initial_capital/10000) basisCrossed := false if close < lower strategy.close("s") strategy.close("추가s") entryMade := false basisCrossed := false upperCrossed := false