Esta estratégia implementa tendência automatizada após a negociação, calculando Bandas de Bollinger para identificar quedas e picos e usando médias móveis de longo prazo e de curto prazo para determinar a direção geral da tendência.
Os principais componentes da estratégia são:
Calcular Bandas de Bollinger com bandas superiores e inferiores com base no preço de fechamento e no desvio-padrão.
Determinar a tendência a longo prazo e a curto prazo utilizando uma SMA de 300 e de 20 períodos.
Gerar sinal de compra quando o fechamento quebra abaixo da faixa inferior enquanto a SMA longa está acima e a SMA curta aparece.
Gerar sinal de venda quando o fechamento se rompe acima da faixa superior, enquanto a SMA longa está abaixo e a SMA curta desce.
Use ordens OCO para definir stop loss e take profit.
Com este projeto, a estratégia pode identificar automaticamente oportunidades de compra de queda e venda de pico ao longo da principal direção da tendência.
As vantagens desta estratégia incluem:
Detecção automática de tendências sem julgamento manual.
Capturar sistematicamente quedas para oportunidades de compra.
Identificar sistematicamente as oportunidades de venda de pico para obter lucros.
Controle eficaz do risco através de stop loss e take profit.
Filtrar sinais inválidos para melhorar a taxa de vitória.
Tendência flexível seguida de ajustamento da posição.
Lógica clara e fácil de compreender e otimizar.
Os principais riscos a considerar:
A selecção inadequada de valores mobiliários pode falhar no acompanhamento das tendências.
O ajustamento inadequado dos parâmetros pode causar excesso de negociação ou perda de negociações.
A inversão da tendência de eventos súbitos pode levar a perdas maiores.
O stop loss demasiado apertado pode causar paradas excessivas.
A liquidez insuficiente pode impedir a plena execução.
Superajuste com período de backtesting insuficiente.
As soluções incluem: selecionar ações líquidas com tendências claras; otimizar parâmetros; estar atento às notícias; relaxar o stop loss; avaliar o volume de negociação real; expandir o período de backtest.
Algumas maneiras de otimizar a estratégia:
Otimizar parâmetros como período de Bollinger, multiplicador de desvio padrão e períodos de média móvel.
Adicionar métodos de stop loss como trailing stop ou moving average stop para controlar melhor os riscos.
Incorporar o dimensionamento das posições com base em níveis-chave para melhorar a eficiência da utilização do capital.
Adicionar um filtro de volume para evitar quebras inválidas com baixo volume.
Adicionar indicador de força relativa para determinar o viés de compra/venda.
Introduzir aprendizagem de máquina para ajuste automático de parâmetros e avaliação de estratégias.
Combinar com outras estratégias para criar uma carteira multi-estratégica para uma maior robustez.
Estas optimizações podem melhorar ainda mais o desempenho e a estabilidade da estratégia.
A estratégia oferece uma abordagem clara e compreensível para sistematicamente comprar quedas e vender picos ao longo da tendência. Com o controle de risco adequado, tem um bom potencial de lucro. Mais melhorias podem ser feitas através de ajuste de parâmetros, modificação de stop loss, dimensionamento de posição, etc. A estratégia serve como uma base sólida para a tendência automatizada após a negociação.
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-23 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Buy Dip Sell Rip Strategy", overlay=true) source = close length = input(15, minval=1) mult = input(1.25, minval=0.001, maxval=50) longMAPeriod = input(300, minval=5) shortMAPeriod = input(20, minval=5) basis = sma(source, length) longMA = sma(source, longMAPeriod) prevLongMA = sma(close[1],longMAPeriod) shortMA = sma(source, shortMAPeriod) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev buyEntry = crossover(source, lower) sellEntry = crossunder(source, upper) if (source > lower and source[1] < lower) if (longMA < source and shortMA>source) strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE") else strategy.close("BBandSE") else strategy.cancel(id="BBandLE") if (source > upper and source[1] < upper) if (longMA > source and shortMA < source) strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE") else strategy.close("BBandLE") else strategy.cancel(id="BBandSE") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)