A estratégia é uma estratégia de acompanhamento de tendências baseada no indicador de Brinks. Ela usa uma ruptura de Brinks para determinar a direção da tendência e abrir uma posição na direção correspondente. Quando o preço começa a recuar, o stop loss de acompanhamento de intervalos dinâmicos é usado para sair da posição e obter lucro.
A estratégia usa os indicadores de correia de Brin para determinar a direção da tendência. A correia de Brin constrói um uptrend através do cálculo do diferencial padrão do preço. Quando o preço quebra o uptrend, considera-se que a tendência começa para cima; quando o preço quebra o downtrend, considera-se que a tendência começa para baixo.
A lógica da transação é a seguinte:
Calcular os eixos médio, superior e inferior da faixa de Bryn.
Quando o preço se eleva, abre mais; quando o preço desce, abre mais.
Usar tracking stop loss para controlar o risco, e parar de perder quando o preço começa a recuar.
A partir de agora, a tendência vai se estendendo novamente, com a reabertura da órbita da faixa de Bryn.
O uso de bandas de Brin para determinar a direção da tendência, em combinação com o rastreamento dinâmico de stop loss, pode ser usado para controlar o risco de forma eficaz.
A estratégia tem as seguintes vantagens:
O uso do indicador de correia de Bryn para avaliar tendências é simples e eficaz.
Combinação de entrada de ruptura e trailing stop loss dinâmico, combinando captura de tendência e controle de risco.
A estrutura do código é clara e concisa, fácil de entender e modificar.
Menos parâmetros para otimização.
Aplica-se a diferentes variedades e é muito flexível.
A resposta foi boa e há muito espaço para ganhar.
Os principais riscos desta estratégia são:
As faixas de Bryn são baseadas apenas em propriedades estatísticas e apresentam riscos de curvatura.
Não é possível distinguir entre expansão e tendências reais, podendo ser mal interpretado.
O ponto de paragem é muito denso e pode ser interrompido por uma oscilação normal do preço.
Não tem em conta os custos de transação.
O tempo de detecção é limitado e pode ser exagerado.
Solução:
Optimizar os parâmetros ou introduzir outros sinais de verificação de indicadores.
Aumentar a identificação de vibrações e canais.
Ajustar o ponto de parada de acordo com a dinâmica de indicadores como o ATR.
Adição de taxas, cálculo de pontos de deslizamento.
Aumentar o tempo de retrospectiva e a validação em vários mercados.
A estratégia pode ser otimizada em:
Teste a combinação de diferentes indicadores.
Aumentar a identificação de variações de tendências.
Introdução de parâmetros de otimização dinâmica de métodos de aprendizagem de máquina.
Optimizar a estratégia de stop loss com base no feedback.
Avaliação e inclusão de custos de transação.
Optimizar o espaço dos parâmetros para encontrar o melhor parâmetro Settings。
Aumentar a gestão de dinheiro para controlar o risco de posição.
A estratégia de determinar a direção da tendência através de indicadores de Brinks e acompanhar o stop loss para controlar o risco, a lógica de negociação global é simples e clara. A estratégia tem um bom efeito de captura de tendências, mas pode ser melhorada com a introdução de mais indicadores técnicos, parâmetros de otimização e adição de cálculo de custos, etc., para tornar a estratégia mais estável e confiável.
/*backtest
start: 2022-09-15 00:00:00
end: 2023-09-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Bollinger Band Breakout", shorttitle = "BB Strategy",initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, commission_type = strategy.commission.percent, commission_value = 0.3, max_bars_back = 1000, overlay=true)
// Inputs //
sma = input(20, minval=1)
mult = input(1.2, minval=0.001, maxval=50)
src = input(close)
// alert msg //
message_long_entry = input("long entry")
message_short_entry = input("short entry")
// Calculations //
basis = sma(close, sma)
dev = mult * stdev(close, sma)
upper = basis + dev
lower = basis - dev
// Backtest //
fromyear = input(2019, defval = 2019, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(1, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
leverage = input(1, "Leverage")
term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))
// PLOT //
plot(basis, color = color.gray, linewidth = 2)
lu = plot(upper, color = color.green, linewidth = 2)
ll = plot(lower, color = color.red, linewidth = 2)
fill(lu, ll, color = color.gray)
// Signals //
long = crossover(close, upper)
short = crossunder(close, lower)
// Strategy entry //
strategy.initial_capital = 50000
if (long and term)
strategy.entry("long", strategy.long, qty=strategy.initial_capital/close*leverage, when = long and barstate.isconfirmed, alert_message = message_long_entry)
if (short and term)
strategy.entry("short", strategy.short, qty=strategy.initial_capital/close*leverage, when = short and barstate.isconfirmed, alert_message = message_short_entry)
// strategy exit //
strategy.exit("long tsl", "long", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)
strategy.exit("short tsl", "short", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)