Estratégia configurável BB+RSI+Aroon


Data de criação: 2023-09-21 15:05:38 última modificação: 2023-09-21 15:05:38
cópia: 0 Cliques: 739
1
focar em
1617
Seguidores

Visão geral

A estratégia combina a faixa de Brin (BB), o índice de força relativa (RSI) e o indicador de Aroon para aproveitar as vantagens de cada indicador e fornecer sinais de entrada e saída eficientes para a negociação.

Princípio da estratégia

  1. Quando o preço quebra a banda de Brin para baixo, um sinal de múltiplas cabeças é exibido.

  2. Quando o RSI atravessa a linha de sobrevenda, mostra um sinal de confirmação de múltiplas cabeças.

  3. Quando o Aroon está em cima, ele mostra um sinal de confirmação de várias cabeças.

  4. Faça mais quando as três condições acima são preenchidas.

  5. Quando o preço ultrapassa a faixa de Brin, um sinal de cabeça vazia é exibido.

  6. Quando o RSI cruza a linha de supera venda, mostra um sinal de confirmação em branco.

  7. Quando o Aroon é colocado em cima, mostra o sinal de confirmação de cabeçote.

  8. Quando as três condições acima são preenchidas, o vazio é eliminado.

Vantagens estratégicas

  • Parâmetros configuráveis, otimizados para a melhor combinação
  • Identificação de múltiplos indicadores para melhorar a precisão do sinal
  • Aplicável a diversos contextos de mercado
  • Uma lógica de negociação simples e fácil de implementar

Risco estratégico

  • Parâmetros mal otimizados podem gerar muitos sinais errados
  • Aumento de atraso em múltiplos indicadores pode perder uma rápida reviravolta
  • Operações reversíveis aumentam a frequência e o custo das transações

Direção de otimização

  • Retrospectiva de multi-mercado e multi-marco de tempo para encontrar os melhores parâmetros
  • Avaliar a eficácia de cada indicador, eliminando-os quando necessário
  • Tentar otimizar parâmetros baseados em aprendizado de máquina
  • Otimização de código de estratégia, redução de computação
  • Teste de diferentes parâmetros de tempo de detenção

Resumir

A estratégia integra os benefícios de vários indicadores para formar um sinal de entrada mais forte. A eficiência da estratégia pode ser levada a um nível mais alto por meio de otimização de parâmetros, remoção de indicadores redundantes e códigos de otimização.

Código-fonte da estratégia
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
basePeriod: 1m
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/
// Developed by Marco Jarquin as part of Arkansas 22 Project for Binary Options
// CBRA for binary options (Configurable Bollinger Bands, RSI and Aroon)

//@version=4
// ====================================================================================

//strategy("A22.CBRA.Strat", overlay=true, initial_capital=10000, currency="USD", calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=4000, commission_type=strategy.commission.cash_per_order, commission_value=0)

// Aroonish Parameters
// ====================================================================================

Aroonish_length = input(4, minval=1, title="Aroonish Lenght")
Aroonish_ConfVal = input(50, minval=0, maxval=100, step=25, title="Aroonish Confirmation Value")
Aroonish_upper = 100 * (-highestbars(high, Aroonish_length+1) + Aroonish_length)/Aroonish_length
Aroonish_lower = 100 * (-lowestbars(low, Aroonish_length+1) + Aroonish_length)/Aroonish_length

// Aroonish confirmations
// ====================================================================================
Aroonish_ConfLong = (Aroonish_lower >= Aroonish_ConfVal) and (Aroonish_upper < Aroonish_lower)
Aroonish_ConfShrt = (Aroonish_upper >= Aroonish_ConfVal) and (Aroonish_upper > Aroonish_lower)

plotshape(crossover(Aroonish_lower, Aroonish_upper), color = color.red, style = shape.triangledown, location = location.abovebar, size = size.auto, title = "Ar-B")
plotshape(crossover(Aroonish_upper, Aroonish_lower), color = color.green, style = shape.triangleup, location = location.belowbar, size = size.auto, transp = 0, title = "Ar-S")

// RSI Parameters
// ====================================================================================
RSI_length = input(4, title="RSI Lenght")
RSI_overSold = input(20, title="RSI Oversold Limit")
RSI_overBought = input(80, title="RSI Overbought Limit" )

RSI = rsi(close, RSI_length)

plotshape(crossover(RSI, RSI_overSold), color = color.orange, style = shape.square, location = location.belowbar, size = size.auto, title = "RSI-B")
plotshape(crossunder(RSI, RSI_overBought), color = color.orange, style = shape.square, location = location.abovebar, size = size.auto, transp = 0, title = "RSI-S")

// Bollinger Parameters
// ====================================================================================
BB_length = input(20, minval=1, title="Bollinger Lenght")
BB_mult = input(2.5, minval=0.1, maxval=50, step=0.1, title="Bollinger Std Dev")
// BB_bars = input(3, minval=1, maxval=5, title="Check bars after crossing")

BB_basis = sma(close, BB_length)
BB_dev = BB_mult * stdev(close, BB_length)

BB_upper = BB_basis + BB_dev
BB_lower = BB_basis - BB_dev

p1 = plot(BB_upper, color=color.blue)
p2 = plot(BB_lower, color=color.blue)

// Bars to have the operation open
// ====================================================================================
nBars = input(3, minval=1, maxval=30, title="Bars to keep the operation open")

// Strategy condition short or long
// ====================================================================================
ConditionShrt = ((crossunder(close, BB_upper) or crossunder(close[1], BB_upper[1])) and Aroonish_ConfShrt) and (crossunder(RSI, RSI_overBought) or crossunder(RSI[1], RSI_overBought[1]))
ConditionLong = ((crossover(close, BB_lower) or crossover(close[1], BB_lower[1])) and Aroonish_ConfLong) and (crossover(RSI, RSI_overSold) or crossover(RSI[1], RSI_overSold[1]))

plotshape(crossover(close, BB_lower), color = color.blue, style = shape.circle, location = location.belowbar, size = size.auto, title = "BB-B")
plotshape(crossunder(close, BB_upper), color = color.blue, style = shape.circle, location = location.abovebar, size = size.auto, transp = 0, title = "BB-S")


// Make input options that configure backtest date range
// ====================================================================================
iMo = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
iDy = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
iYr = input(title="Start Year", type=input.integer, defval=(2020), minval=1800, maxval=2100)

eMo = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12)
eDy = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=31)
eYr = input(title="End Year", type=input.integer, defval=(2021), minval=1800, maxval=2100)

// Look if the close time of the current bar falls inside the date range
// ====================================================================================
inDateRange = true


// Evaluates conditions to enter short or long
// ====================================================================================
if (inDateRange and ConditionLong)
    strategy.entry("A22.L", strategy.long)

if (inDateRange and ConditionLong[nBars])
    strategy.close("A22.L", comment="A22.L Exit")
    
if (inDateRange and ConditionShrt)
    strategy.entry("A22.S", strategy.short)

if (inDateRange and ConditionShrt[nBars])
    strategy.close("A22.S", comment="A22.S Exit")

if (not inDateRange)
    strategy.close_all()