Estratégia de sinal de flutuação da banda de Bohr


Data de criação: 2024-01-15 15:16:27 última modificação: 2024-01-15 15:16:27
cópia: 0 Cliques: 553
1
focar em
1617
Seguidores

Estratégia de sinal de flutuação da banda de Bohr

Visão geral

A estratégia de onda de Bollinger é uma estratégia de negociação quantitativa que combina as bandas de Bollinger e as médias móveis. A estratégia gera sinais de negociação através do cálculo do diferencial padrão das bandas de Bollinger e do sinal de cruzamento das médias móveis para determinar a tendência do mercado e as áreas de sobrevenda e sobrevenda.

Princípio da estratégia

A estratégia primeiro calcula a média móvel do índice (EMA) no período especificado como a linha de referência. Em seguida, com base neste EMA, calcula-se a linha de alta (EMA + n vezes a diferença padrão) e a linha de baixa (EMA - n vezes a diferença padrão).

Quando o preço está entre a linha de alta e a linha de baixa, é a faixa de flutuação normal do preço da ação. Além disso, a estratégia, combinada com outros indicadores como o indicador RSI, filtra os sinais de negociação, reduzindo a frequência de negociação e reduzindo os prejuízos desnecessários.

Em particular, as regras de avaliação de sinais de negociação da estratégia são as seguintes:

  1. Multi-Head Signal: preço de fechamento > linha de ascensão e RSI ((14) > 60
  2. Sinal de cabeça vazia: preço de fechamento < linha de baixa e RSI ((14) < 40

Quando surgir o sinal de negociação acima, entre em uma quantidade fixa ou em uma proporção de conta. Quando o preço retornar à faixa de ondas ou surgir um sinal contrário, saia da posição.

Vantagens estratégicas

Esta estratégia combina o julgamento de tendências com o julgamento de sobrecompra e sobrevenda, evitando erros de negociação em um balanço de choque. Em comparação com a estratégia de um único indicador, pode reduzir a abertura de posições desnecessárias e controlar o risco de forma eficaz.

Em comparação com a estratégia de média móvel simples, a banda de Bol é mais capaz de refletir a volatilidade do mercado atual e os níveis de risco. Quando a banda de ondas é mais ampla, o sinal de negociação é mais confiável; Quando a banda de ondas é maior, a frequência de negociação é automaticamente reduzida. Este ajuste de adaptação pode controlar o risco da estratégia de acordo com as diferentes condições do mercado.

Além disso, a estratégia é duplamente confirmada por indicadores como o RSI, o que permite filtrar alguns sinais falsos e evitar erros de negociação em pontos de mudança de tendência. Isso também aumenta a taxa de vitória da estratégia.

Análise de Riscos

A estratégia tem como principais riscos:

  1. Risco de otimização de parâmetros. Se os parâmetros de média móvel ou o múltiplo de diferença padrão forem configurados incorretamente, haverá mais negociações ruidosas ou oportunidades de negociação perdidas. Esses parâmetros precisam ser testados e otimizados repetidamente.

  2. Risco de falha de sinal de ruptura. Quando o preço retorna rapidamente após uma breve ruptura da linha de alta e baixa, um sinal de erro é gerado.

  3. Risco de frequência de negociação. Se o intervalo de linha ascendente e descendente for muito pequeno, aumentará o número de transações e o pagamento de taxas. Isso afetará os lucros finais. O aumento apropriado do ciclo da média móvel pode controlar esse risco.

Direção de otimização

A estratégia ainda tem espaço para ser melhorada:

  1. Aumentar o mecanismo de suspensão. Estabelecer suspensão móvel ou suspensão de tempo, para ajudar a parar o prejuízo em tempo hábil e controlar a perda individual.

  2. Aumentar o gerenciamento de posições, como a criação de regras de aumento e diminuição de posições, para que os lucros aumentem e os prejuízos diminuam. Isso pode aumentar a taxa de retorno da estratégia.

  3. Em combinação com outros indicadores, os sinais de filtragem. Indicadores como KDJ, MACD e outros podem ser usados como sinais auxiliares de julgamento. Isso ajuda a aumentar ainda mais a taxa de ganho da estratégia.

  4. Optimizar a configuração dos parâmetros. A combinação de parâmetros pode ser testada por métodos mais sistemáticos, como algoritmos genéticos, para encontrar uma melhor configuração dos parâmetros.

Resumir

A estratégia de sinal de oscilação da banda de Bol integra o julgamento de tendências de médias móveis e o julgamento de sobrevenda e sobrevenda. Ela ajusta a frequência de negociação de acordo com as mudanças na faixa de ondas e pode se adaptar a diferentes estados do mercado. Ao mesmo tempo, em combinação com indicadores como o RSI, os sinais são filtrados para evitar transações erradas.

Código-fonte da estratégia
/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@FiboBuLL

strategy(shorttitle='FB Wave', title='FiboBuLL Wave', overlay=true, pyramiding=1, currency=currency.NONE, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

src = input(close, title='Source')
length = input.int(55, minval=1, title='EMA length')  // 20 for classis Bollinger Bands SMA line (basis)


mult = input.float(1., minval=0.236, maxval=2, title='Standard Deviation')  //2 for Classic Bollinger Bands //Maxval = 2 as higher the deviation, higher the risk
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)

Show = input.string('Both', options=['Longs Only', 'Shorts Only', 'Both'], title='Trade Type')
CC = input(true, 'Color Bars')

upper = basis + dev
lower = basis - dev

//Conditions for Long and Short - Extra filter condition can be used such as RSI or CCI etc.

short = src < lower  // and rsi(close,14)<40
long = src > upper  // and rsi(close,14)>60

L1 = ta.barssince(long)
S1 = ta.barssince(short)

longSignal = L1 < S1 and not (L1 < S1)[1]
shortSignal = S1 < L1 and not (S1 < L1)[1]

//Plots and Fills


////Long/Short shapes with text
// plotshape(S1<L1 and not (S1<L1)[1]?close:na, text = "sᴇʟʟ", textcolor=#ff0100, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "SELL", editable = true)
// plotshape(L1<S1 and not (L1<S1)[1]?close:na, text = "ʙᴜʏ", textcolor = #008000, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "BUY", editable = true)  

// plotshape(shortSignal?close:na, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "Short Signal", editable = true)
// plotshape(longSignal?close:na, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "Long Signal", editable = true)  


p1 = plot(upper, color=color.new(#ff0000, 75), display=display.all, title='Upper Band')
p2 = plot(lower, color=color.new(#008000, 75), display=display.all, title='Lower Band')

p = plot(basis, color=L1 < S1 ? #008000 : S1 < L1 ? #ff0000 : na, linewidth=2, editable=false, title='Basis')

fill(p, p1, color=color.new(color.teal, 85), title='Top Fill')  //fill for basis-upper
fill(p, p2, color=color.rgb(217, 161, 161), title='Bottom Fill', transp=85)  //fill for basis-lower

//Barcolor

bcol = src > upper ? color.new(#8ceb07, 0) : src < lower ? color.new(#ff0000, 0) : src > basis ? color.green : src < basis ? color.red : na

barcolor(CC ? bcol : na, editable=false, title='Color Bars')


// //Alerts ----  // Use 'Once per bar close'

// alertcondition(condition=longSignal, title="Long - BB Filter", message='BB Filter Long @ {{close}}') // Use 'Once per bar close'
// alertcondition(condition=shortSignal, title="Short - BB Filter", message='BB Filter Short @ {{close}}')  // Use 'Once per bar close'

Notestart1 = input(true, '╔═══ Time Range to BackTest ═══╗')

// === INPUT BACKTEST RANGE ===
FromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=2018, title='From Year', minval=2015)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=2010)

// === FUNCTION EXAMPLE === 
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)  // backtest finish window
window() =>
    time >= start and time <= finish ? true : false

if window() and (Show == 'Longs Only' or Show == 'Both')
    strategy.entry('AL', direction=strategy.long, when=longSignal)
    strategy.close('LongAL', when=shortSignal, comment='AL KAPA')

if window() and (Show == 'Shorts Only' or Show == 'Both')
    strategy.entry('SAT', direction=strategy.short, when=shortSignal)
    strategy.close('SAT', when=longSignal, comment='SAT KAPA')