A estratégia é denominada
A lógica central desta estratégia é baseada no canal de Bollinger Bands, que consiste em linha média, faixa superior e faixa inferior. A linha média é a média móvel do preço de fechamento por n dias. As faixas superior e inferior são desvios acima e abaixo da linha média. Quando o preço se aproxima da faixa superior, ele indica que o mercado pode estar sobreaquecido e pode haver oportunidades curtas. Quando o preço se aproxima da faixa inferior, ele indica que o mercado pode estar subvalorizado e pode haver oportunidades longas.
Esta estratégia usa duas Bandas de Bollinger. A Banda de Bollinger 1 é adequada para negociações longas e a Banda de Bollinger 2 é adequada para negociações curtas. Os parâmetros da Banda de Bollinger 1 são otimizados com comprimento de 25 e desvio de 2,9 vezes. Os parâmetros da Banda de Bollinger 2 são otimizados com comprimento de 36 e desvio de 3,2 vezes. Quando o preço de fechamento cruza acima da banda inferior da Banda de Bollinger 1, ele gerará sinal longo. Quando o preço de fechamento cruza abaixo da banda superior da Banda de Bollinger 2, ele gerará sinal curto.
Em comparação com as estratégias tradicionais de Bollinger Bands, esta estratégia tem as seguintes vantagens:
Realiza uma negociação bidireccional tanto para os lados longos como para os curtos, que podem aproveitar oportunidades de negociação em diferentes fases do mercado.
Os dois conjuntos de parâmetros Bollinger Bands são testados de forma elaborada para gerar efetivamente sinais comerciais.
O método de stop loss móvel pode controlar efetivamente o risco de um lado.
Há também alguns riscos potenciais para esta estratégia:
Risco de invalidez das bandas de Bollinger.
Risco de stop loss ser atingido. movendo stop loss pode ser atingido para expandir as perdas. podemos adequadamente ampliar o stop loss ou stop out oportuno para evitar este risco.
Risco elevado de frequência de negociação: parâmetros excessivamente sensíveis podem conduzir a negociações frequentes e a um aumento dos custos de negociação.
Ainda há espaço para uma melhor otimização desta estratégia:
Combine outros indicadores para filtrar sinais e evitar negócios errados quando as Bandas de Bollinger falharem, como padrões de linha K, volume de negociação, etc.
Ajustar dinamicamente os parâmetros para se adequarem às características do mercado de diferentes períodos.
Otimizar os métodos de stop loss utilizando stop loss de trailing ou stop loss de movimentação exponencial para controlar eficazmente os riscos.
Combinar algoritmos de aprendizagem de máquina para otimizar automaticamente os parâmetros.
Em resumo, esta estratégia, em geral, otimiza a negociação bidirecional para ambos os lados longos e curtos com base no canal de Bollinger Bands duplo e otimização de parâmetros. Em comparação com as estratégias tradicionais de Bollinger Bands, tem as vantagens de negociação bidirecional e controle de risco. É adequado para aproveitar oportunidades em diferentes estágios do mercado e tem certo valor prático.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 //@version=4 strategy("BB NDX strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick = true, commission_type = strategy.commission.percent, commission_value = 0.01) source = close length = input(25, minval=1, title="Length BB long") mult = input(2.9, minval=0.001, maxval=50, step=0.1, title="MULT BB long") length2 = input(36, minval=1, title="Length BB short") mult2 = input(3.2, minval=0.001, maxval=50, step=0.1, title="MULT BB short") basis = sma(source, length) dev = mult * stdev(source, length) dev2 = mult2 * stdev(source, length2) upper = basis + dev2 lower = basis - dev buyEntry = crossover(source, lower) sellEntry = crossunder(source, upper) longEntry=input(true) shortEntry=input(true) g(v, p) => round(v * (pow(10, p))) / pow(10, p) risk = input(100) leverage = input(1.0, step = 0.5) c = g((strategy.equity * leverage / open) * (risk / 100), 4) tplong=input(0.065, step=0.005, title="Take profit % for long") sllong=input(0.04, step=0.005, title="Stop loss % for long") tpshort=input(0.025, step=0.005, title="Take profit % for short") slshort=input(0.04, step=0.005, title="Stop loss % for short") if(longEntry) strategy.entry("long",1,c,when=buyEntry) strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT', alert_message = 'closeshort') strategy.close("long",when=sellEntry) if(shortEntry) strategy.entry("short",0,c,when=sellEntry) strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT', alert_message = 'closeshort') strategy.close("short",when=buyEntry)