
Esta estratégia baseia-se no conceito de banda de Brin, para definir o caminho para cima e para baixo do canal de preços, e com isso para o julgamento de tendências e geração de sinais de negociação. Concretamente, é o cálculo do desvio absoluto médio do preço como a largura do canal, o caminho médio como a média móvel simples do preço, o caminho superior e o caminho inferior aumentando e diminuindo 1 ou 2 vezes a largura do canal, respectivamente.
A estratégia inclui principalmente os seguintes pontos:
A mediana do preço é calculada como uma média móvel simples.
Calcule a média móvel simples do desvio absoluto do preço como a largura de banda do canal.
De acordo com o carril médio e a largura de banda, determine o carril superior e inferior. O carril superior aumenta a largura de banda do carril médio em 1 ou 2 vezes, e o carril inferior diminui a largura de banda do carril médio em 1 ou 2 vezes.
Calcule o indicador de determinação da tendência de alta volatilidade. Quando o preço é superior ao caminho 2 é de alta volatilidade e quando o preço é inferior ao caminho 2 é de baixa volatilidade.
Geração de sinais de negociação. Quando o preço sobe na trajetória 2, faz mais, e quando o preço desce na trajetória 2, faz vazio.
Configure a linha de parada. A linha de parada múltipla é a linha de parada inferior 1, a linha de parada vazia é a linha de parada superior 1.
A posição é calculada de acordo com os requisitos de gestão de fundos.
Esta estratégia combina a tendência de avaliação da média móvel, a banda de Brin para avaliar a sobrecompra e a sobrevenda, e a ideia de fazer um reverso. Através da diferença de duas vias para avaliar a tendência de força e fraqueza, ao mesmo tempo em que exerce a função de regressão da banda de Brin para o eixo médio, formando um sistema de negociação mais estável.
A estratégia tem as seguintes vantagens:
O uso de um sistema binário permite uma melhor avaliação da força e fraqueza das tendências.
O Brin possui uma função de regressão mais forte, que evita a falsa ruptura.
A diferença de dupla trajectória, combinada com a regressão do eixo central da faixa de Bryn, forma um sinal de negociação mais estável.
A lógica de Exit Stop Loss é clara e permite controlar o risco.
A configuração da posição é conforme às exigências de gestão de fundos, evitando super-leveragem.
A estratégia é clara, fácil de entender e de otimizar.
Parâmetros de configuração flexíveis para otimização em diferentes mercados.
A estratégia também apresenta alguns riscos:
A configuração inadequada dos parâmetros da faixa de Bryn pode causar um efeito de estuário, impedindo o acompanhamento eficaz dos preços.
A diferença entre as duas linhas não evita completamente o erro de tendência.
No entanto, a tendência é para que os mercados de ativos sejam mais propensos a falhar.
A falha de invasão pode causar prejuízos.
Existe um certo atraso de tempo, podendo perder o ponto de transição do ciclo.
A tendência é de que os ganhos e perdas sejam mais limitados do que os pontos de parada, e não é possível seguir a tendência indefinidamente.
Correspondentes medidas de gestão de riscos:
Parâmetros de otimização para permitir que a faixa de Bryn se adapte a diferentes períodos.
A combinação de outros indicadores é verificada para evitar erros.
Reduzir posições e controlar perdas individuais.
Optimizar o ponto de parada para garantir a relação de ganhos/perdas.
Reduzir adequadamente os ciclos e reduzir o atraso.
O vento deve ser controlado de forma robusta e não pode ser controlado indefinidamente.
A estratégia pode ser otimizada em várias direções:
Optimizar os parâmetros da faixa de Bryn para melhor acompanhar os preços. Parâmetros de adaptação podem ser introduzidos.
Tente diferentes médias móveis, como EMA, DWMA, etc.
Adicionar filtros de tendência para evitar erros de negociação em mercados de turbulência.
Adicione o Exit de saída mais ativo para obter mais lucro de tendência. Você pode considerar o pequeno stop loss, o stop loss móvel, o indicador de saída, etc.
A introdução de múltiplos períodos de tempo para a combinação, com diferentes períodos adequados para diferentes situações de mercado.
Adição de lógica condicional adicional, como o volume de transações excedentes, para evitar falsas rupturas.
Pode-se pensar em inverter a faixa de Brin, vender para cima e comprar para baixo.
Teste de otimização de parâmetros para encontrar a combinação ideal de parâmetros.
Esta estratégia tem uma visão geral clara, com uma forte estabilidade. Ao mesmo tempo, há um certo espaço para melhorias, e pode ser aperfeiçoada ainda mais através de otimização de parâmetros, otimização de lógica e gestão de risco. Pode ser uma estratégia de negociação quantitativa muito prática.
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
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/
// © noro
//@version=4
strategy(title = "Noro's Bands Strategy", shorttitle = "Bands", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)
//Sattings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
len = input(20, defval = 20, minval = 1, maxval = 1000, title = "Length")
src = input(ohlc4, title = "Source")
showbb = input(true, title = "Show Bands")
showof = input(true, title = "Show Offset")
showbg = input(false, title = "Show Background")
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")
//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2
//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2
//Trend
trend = 0
trend := high > hd2 ? 1 : low < ld2 ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : color.red
bgcolor(bgcol, transp = 70)
//Lines
colo = showbb == false ? na : color.black
offset = showof ? 1 : 0
plot(hd2, color = colo, linewidth = 1, transp = 0, offset = offset, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, offset = offset, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, offset = offset, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, offset = offset, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, offset = offset, title = "Low band 2")
//Trading
size = strategy.position_size
needstop = needlong == false or needshort == false
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if distsma > 0
strategy.entry("Long", strategy.long, lot, stop = hd2, when = truetime and needlong)
strategy.entry("Short", strategy.short, lot, stop = ld2, when = truetime and needshort)
sl = size > 0 ? ld2 : size < 0 ? hd2 : na
if size > 0 and needstop
strategy.exit("Stop Long", "Long", stop = sl)
if size < 0 and needstop
strategy.exit("Stop Short", "Short", stop = sl)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")