Volatilidade do momentum seguindo a estratégia


Data de criação: 2023-11-28 16:57:28 última modificação: 2023-11-28 16:57:28
cópia: 1 Cliques: 630
1
focar em
1619
Seguidores

Volatilidade do momentum seguindo a estratégia

Visão geral

A estratégia é uma estratégia de rastreamento de movimentos de volumes baseada no Brinband. Combina o indicador Brinband para determinar a tendência do mercado e os pontos de reversão, para rastrear os movimentos do mercado através da configuração de posições em aberto.

Princípio da estratégia

O indicador central da estratégia é a faixa de Brin. A faixa de Brin é composta por um meio, um meio e um meio. O meio é uma média móvel de n dias, e o meio e o meio são os desvios do intervalo padrão de subida e descida. Quando o preço está perto do meio e do meio, é visto como um sinal de super-compra e super-venda.

A estratégia inclui simultaneamente posições de construção de tendência e posições de construção de reversão, correspondendo respectivamente a diferentes oportunidades de negociação. A posição de construção de tendência requer a trajectória central como referência de resistência de suporte, formando o efeito de desvio de ruptura. A posição de construção de reversão de transformação é formada diretamente na faixa de Brin e reverte perto da trajectória inferior.

Análise de vantagens

A estratégia combina a característica de sobrecompra e sobrevenda da faixa de Brin com o julgamento do ponto de reversão. Isso permite que ela seja aplicada simultaneamente em mercados de tendência e de choque, capturando diferentes tipos de oportunidades de negociação. A configuração de saída de parada da estratégia impede a expansão dos perdas.

Em comparação com a estratégia simples de Brin, o julgamento lógico da tendência incluída na estratégia torna a posição mais estável, mas também aproveita a oportunidade de reversão. Isso aumenta a taxa de comunicação. Em segundo lugar, a negociação bidirecional de múltiplos espaços também utiliza mais amplamente as oportunidades de negociação em diferentes mercados.

Análise de Riscos

A estratégia baseia-se principalmente na característica de sobrecompra e sobrevenda das faixas de Brin. Assim, quando os preços são fortemente flutuantes, os intervalos das faixas de Brin aumentam constantemente, o que pode levar a várias posições perdidas.

Para a falha de uma faixa de Boolean, pode-se reduzir o parâmetro de n dias, tornando a faixa de Boolean mais sensível. Ou reduzir o seu alcance, reduzindo a probabilidade de causar perdas. Para o julgamento de curva de reversão, pode-se reduzir o erro, otimizando o parâmetro de ruptura.

Direção de otimização

A estratégia pode ser otimizada em várias áreas:

  1. Os parâmetros da faixa de Bryn podem ser ajustados de acordo com os diferentes mercados para encontrar a melhor combinação de parâmetros.
  2. A magnitude do desvio de tendência e o modo de cálculo da média podem ser testados em outras opções.
  3. Adicionar mais filtros para os sinais de construção de armazéns, reduzindo a probabilidade de erro.
  4. Outros modos de parada de perda que podem ser testados, como parada de trilho.
  5. Os parâmetros podem ser ajustados para variedades e períodos específicos.

Resumir

A estratégia é uma extensão e otimização efetiva da estratégia padrão de Brin. O julgamento de desvio de tendência adicionado aumenta a estabilidade e aproveita as oportunidades de reversão. A configuração de negociação bidirecional e de parada de perda também torna a estratégia mais robusta. Otimizando os parâmetros e adicionando mais filtros, a eficácia pode ser ainda melhorada

Código-fonte da estratégia
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.3", shorttitle = "Bollinger str 1.3", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")

fromyear = input(2018, defval = 2018, 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(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0 
up1 = bar == -1 and ohlc4 >= basis and ohlc4 < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and ohlc4 <= basis and ohlc4 > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()