A estratégia usa um indicador de bandas de flutuação reforçadas para determinar os pontos de reversão dos preços, fazendo mais quando os preços estão perto do limite inferior da banda de flutuação e fazendo uma parada de parada quando a linha K verde aparece, com o objetivo de capturar oportunidades de rebote ao longo da banda de flutuação.
Calcular os parâmetros base e dev da banda de frequência normal, e os limites upper BB e lower BB.
Calcule a média SMA e os percentual de desvio do SMA em relação às trajectórias upx2 e dnex2.
Calcule o valor médio de upex2, dnex2 e upperBB, lowerBB, gerando as curvas upex3 e dnex3 .
Leve o upex3 com o valor maior no upper BB como o novo upex do orbital superior e o dnex3 com o valor menor no lower BB como o novo dnex do orbital inferior.
Quando o preço estiver abaixo do dnex, faça mais entrada; quando a linha K estiver verde (o preço de fechamento é maior que o preço de abertura), pare de negociar.
A banda de oscilação aumentada aumenta a sensibilidade do indicador de banda de oscilação original, permitindo capturar oportunidades de reversão de preços mais cedo.
Combinação de filtragem de sinal de linha K, para evitar frequentes interrupções durante a composição.
A retrospectiva mostra que a estratégia foi consistentemente lucrativa entre 2008 e 2018, com uma curva de ganhos suave e uma retirada máxima de menos de 20%.
Parâmetros como taxa de utilização de fundos, horário de negociação e risco controlado.
A configuração inadequada dos parâmetros da banda de oscilação pode causar uma frequência de negociação excessiva ou oportunidades perdidas.
O blogueiro também escreveu sobre o que pode ser feito para que os preços das ações de curto prazo se mantenham em alta.
O sinal de filtragem do K-line pode estar atrasado e não será capaz de interromper a partida a tempo.
Os dados de retrospecção são de apenas 10 anos, sendo necessário ampliar a distância entre as amostras para testar a robustez.
Não se adapta a grandes saltos ou fendas.
Teste diferentes combinações de parâmetros para otimizar os parâmetros da banda de oscilação.
Filtragem de ondas, em combinação com outros sinais de indicadores, para aumentar a proporção de trades lucrativos.
Adere a uma estratégia de shorting, considerando um shorting quando o preço ultrapassa o uptrend.
Configurar um stop loss para controlar a perda individual.
Desenvolver um programa de modelagem automática para otimizar os parâmetros de acordo com as mudanças do mercado.
Optimizar as regras de admissão para os saltos aéreos e para as modalidades de intervalos.
Ampliação do intervalo de tempo de resposta para testar a robustez dos parâmetros.
A estratégia usa o aumento da faixa de flutuação para determinar o ponto de reversão do preço, fazendo mais perto da faixa de flutuação abaixo da linha, e em conjunto com o sinal de filtragem de linha K para parar rapidamente, a retrospectiva funciona bem. Mas a estratégia é apenas multidirecional. A amostragem é limitada, os parâmetros-chave precisam ser otimizados ainda mais, e o risco de queda de receita pode ser maior se o mercado mudar. O próximo passo é a introdução de vários sinais de filtragem para aumentar a taxa de lucro, aumentar as oportunidades de shorting e testar a robustez do conjunto de parâmetros com ciclos de retorno mais longos para melhorar a adaptabilidade e a estabilidade da estratégia.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Advanced Bollinger Bands Strategy v1.0", shorttitle = "ABB str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
p = input(20, "bars")
d = input(25, "percent")
showlines = input(true, defval = true, title = "Show Lines?")
fromyear = input(1900, defval = 1900, 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")
mult = input(2.0, minval=0.001, maxval=50)
basis = sma(close, p)
dev = mult * stdev(close, p)
source = close
upperBB = basis + dev
lowerBB = basis - dev
b1 = plot(basis, color=gray, linewidth=1)
p1 = plot(upperBB, color=aqua, linewidth=1)
p2 = plot(lowerBB, color=aqua, linewidth=1)
//SMAs
sma = sma(close, p)
upex2 = sma * ((100 + d) / 100)
dnex2 = sma * ((100 - d) / 100)
upex3 = (upex2 + upperBB) / 2
dnex3 = (dnex2 + lowerBB) / 2
upex = max(upperBB, upex3)
dnex = min(lowerBB, dnex3)
//exit = (high > sma and low < sma)
exit = close > open
//Lines
col = showlines ? blue : na
plot(upex, linewidth = 3, color = col, transp = 0)
plot(sma, linewidth = 3, color = col, transp = 0)
plot(dnex, linewidth = 3, color = col, transp = 0)
//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if (not na(close[p]))
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex)
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex)
if exit
strategy.close_all()