Esta estratégia é baseada no indicador de Bollinger Band. Ele abre posições quando o preço atinge a faixa superior ou inferior, e define a lógica de adição de lucro dinâmico e posição dinâmica. Quando o preço se recupera da faixa inferior e quebra a faixa média, a estratégia considera que uma tendência de alta se formou. Nesse momento, a estratégia adicionará posições quando o preço recuar para uma certa porcentagem da faixa média. Quando o preço finalmente quebra a faixa superior, a estratégia fecha posições para tirar lucros. Em uma tendência de queda, a estratégia adota a lógica de operação oposta. Através da adição de lucro dinâmico e posição dinâmica baseada em Bollinger Bands, essa estratégia pode obter mais lucros nos mercados de tendência.
Os principais princípios desta estratégia são os seguintes:
Calcule as faixas superior, média e inferior das Bandas de Bollinger. As faixas superior e inferior são calculadas adicionando e subtraindo N vezes o desvio padrão da faixa média, onde N pode ser personalizado.
Quando o preço de fechamento rompe a faixa inferior e nenhuma posição foi aberta antes, a estratégia abre uma posição longa; quando o preço de fechamento rompe a faixa superior e nenhuma posição foi aberta antes, a estratégia abre uma posição curta.
Após a abertura de uma posição longa, se o preço de fechamento romper para cima através da faixa média, considera-se que uma tendência de alta se formou, e a variável baseCrossed é marcada como verdadeira.
No caso de uma posição longa, se o preço de fechamento quebra a faixa inferior e a baseCrossed é verdadeira, e o preço atual caiu mais de 2% em relação ao preço de abertura original, a estratégia adiciona posições neste momento e redefine a baseCrossed para falsa ao mesmo tempo. O caso de uma posição curta é o oposto.
Se o preço de fechamento atravessar a faixa superior ao manter uma posição longa, ou o preço de fechamento romper a faixa inferior ao manter uma posição curta, a estratégia fecha todas as posições, obtém lucros e redefine várias variáveis de marcador para se preparar para a próxima abertura.
Através da abertura dinâmica acima, adicionando posições e tomando lógica de lucro, esta estratégia pode operar de forma flexível em mercados de tendência para obter lucros mais elevados.
Dinâmica de lucro: Esta estratégia ajusta dinamicamente o nível de lucro através das bandas superior e inferior das Bandas de Bollinger.
Adição de posição dinâmica: na fase de retração após a formação da tendência, a estratégia irá gradualmente adicionar posições, o que pode obter lucros mais altos nos mercados de tendência.
Parâmetros flexíveis: Os parâmetros das bandas de Bollinger, tais como os valores N e P, podem ser ajustados de forma flexível para se adaptarem às diferentes características do mercado e estilos de negociação.
Forte adaptabilidade: A banda de Bollinger é um indicador técnico clássico com uma boa capacidade de capturar tendências. Combinando-o com gestão dinâmica de posições, pode desempenhar um papel estável em vários mercados financeiros.
Lógica clara: As condições de abertura e fechamento e a lógica de adição e redução de posições desta estratégia são muito claras e fáceis de entender, o que é conveniente para os traders entenderem e controlarem.
Mercado oscilante: as estratégias de Bollinger Bands geralmente apresentam um desempenho fraco em mercados oscilantes.
Reversão da tendência: no momento chave da reversão da tendência, esta estratégia pode apresentar um atraso no julgamento, levando à adição de posições na direção errada, resultando numa maior retirada.
Situações extremas: em situações extremas (como subidas e quedas bruscas), a tendência das Bandas de Bollinger pode ser anormal, fazendo com que a estratégia falhe.
Configurações de parâmetros: configurações de parâmetros inadequadas afetarão seriamente o desempenho desta estratégia.
Eventos de cisne negro: se houver grandes eventos políticos e econômicos, essa estratégia pode enfrentar maior exposição a riscos.
Para controlar os riscos acima, podemos começar a partir de dois aspectos: 1) Definir parâmetros razoavelmente e otimizar parâmetros para diferentes alvos e condições de mercado; 2) Adicionar mais condições de filtragem à estratégia, como julgamento de tendência, filtragem de volatilidade, etc., para melhorar a qualidade dos sinais.
Filtragem da tendência: adicionar a lógica do julgamento da tendência ao abrir posições, como usar o arranjo de alta da MA como condição de filtragem para longo e o arranjo de baixa da MA como condição de filtragem para curto, o que pode melhorar a taxa de sucesso da captura da tendência.
Filtragem de volatilidade: As bandas de Bollinger são na verdade um tipo de indicador de volatilidade. Indicadores de volatilidade como ATR e volatilidade histórica podem ser introduzidos para identificar o estado de volatilidade do mercado. As posições podem ser adequadamente reduzidas em estados de alta volatilidade e aumentadas em estados de baixa volatilidade, a fim de controlar melhor os riscos.
Optimização de parâmetros dinâmicos: Os parâmetros das Bandas de Bollinger podem ser ajustados dinamicamente de acordo com as condições do mercado. Por exemplo, o valor de N pode ser aumentado em mercados de tendência e diminuído em mercados oscilantes. Isso requer o uso de aprendizado de máquina e outras tecnologias para encontrar os parâmetros ideais através de treinamento em dados históricos.
Estratégias combinadas: Esta estratégia pode ser combinada com outras estratégias clássicas, como o MACD e o RSI, para formar estratégias combinadas, melhorando a robustez e a rentabilidade do sistema.
Adicionar lógica de stop-loss: atualmente, esta estratégia não possui uma lógica de stop-loss clara.
Optimização da gestão de posições: no processo de adição e redução de posições, métodos clássicos de gestão de posições, como a fórmula Kelly e o valor F óptimo, podem ser utilizados para maximizar os lucros sob riscos controláveis.
Através das otimizações acima referidas, a relação risco/recompensa desta estratégia pode ser melhorada, permitindo-lhe adaptar-se melhor aos ambientes de mercado em evolução e proporcionar retornos estáveis aos operadores.
A estratégia Bollinger Bands é uma estratégia clássica de rastreamento de tendências. Baseada em Bollinger Bands, busca lucros de tendência mais altos ajustando dinamicamente as posições. Esta estratégia tem lógica clara, parâmetros flexíveis e forte adaptabilidade. É uma estratégia de negociação quantitativa digna de pesquisa e aplicação aprofundadas. Mas, ao mesmo tempo, devemos também ver que essa estratégia tem um desempenho ruim em mercados oscilantes e não tem a capacidade de lidar com situações extremas e eventos de cisne negro. Isso requer que nos concentramos na otimização de parâmetros, controle de risco e estratégia de combinação em aplicação real, e testemos regularmente a eficácia da estratégia em diferentes condições de mercado. Compreendendo profundamente a lógica interna desta estratégia e continuamente otimizando e melhorando, acredito que esta estratégia pode se tornar uma ferramenta importante para os traders quantitativos e os investidores trazerem retornos estáveis e de longo prazo.
/*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