Estratégia de negociação de reversão quantitativa rápida de dupla via

Autora:ChaoZhang, Data: 2023-12-19 15:59:36
Tags:

img

Resumo

Trata-se de uma estratégia de reversão de duas faixas baseada no canal de preços, bandas de Bollinger e indicador RSI rápido. Combina o índice de canal para identificar tendências, bandas de Bollinger para reconhecer níveis de suporte e resistência e RSI rápido para detectar sinais de sobrecompra e sobrevenda, a fim de alcançar uma negociação de reversão eficiente.

Estratégia lógica

A estratégia baseia-se principalmente nos seguintes indicadores para tomar decisões de negociação:

  1. Canal de preços: Calcula o preço mais alto e mais baixo durante um determinado período e traça a linha central do canal.

  2. Bandeiras de Bollinger: A linha central é a linha central do canal de preços. As bandas superior e inferior são calculadas com base no desvio padrão do desvio do preço da linha central. Os sinais comerciais são gerados quando o preço interage com as bandas de Bollinger.

  3. RSI rápido (Período = 2): Determina situações de sobrecompra e sobrevenda para o preço. Vai longo quando o RSI cai abaixo de 5, vai curto quando o RSI sobe acima de 95.

  4. Indicador de CryptoBottom: Determina se o preço rompeu o nível de suporte, combinado com RSI rápido para gerar sinais longos de alta probabilidade.

De acordo com o momento em que o preço atravessa os canais e as bandas de Bollinger para fazer negociações, e vai longo ou curto com base em indicações de sobrecompra e sobrevenda do RSI, a lógica de negociação central desta estratégia é formada.

Vantagens da estratégia

Esta estratégia tem as seguintes vantagens:

  1. O sistema de dupla pista aumenta a precisão do sinal. O canal de preços julga as principais tendências e as bandas de Bollinger identificam níveis precisos de suporte e resistência. A combinação aumenta a qualidade do sinal.

  2. O indicador RSI rápido capta oportunidades de reversão detectando sobrecompra e sobrevenda.

  3. O CryptoBottom acelera a confirmação de sinais longos.

  4. Configurações de parâmetros razoáveis e fáceis de otimizar.

Riscos da Estratégia

Há também alguns riscos para esta estratégia:

  1. As configurações incorretas dos parâmetros para as bandas de Bollinger podem perder movimentos significativos de preços ou gerar sinais falsos.

  2. Os padrões de interação entre as duas faixas podem ser complexos, exigindo alguma sofisticação técnica para julgamentos precisos.

  3. O risco de reversões fracassadas ainda existe, uma vez que a probabilidade de o preço ser retirado não pode ser eliminada.

  4. Dificuldade na otimização de parâmetros. Os parâmetros ideais podem tornar-se ineficazes se as condições do mercado mudarem.

Orientações de otimização

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Otimizar os parâmetros das bandas de Bollinger para tornar as bandas superior e inferior mais próximas do preço, melhorando a precisão dos sinais comerciais.

  2. Adicionar mecanismos de stop loss para cortar perdas quando atingirem certas percentagens de limiar.

  3. Incorporar mais indicadores para determinar níveis de tendência, suporte e resistência para reduzir os falsos sinais.

  4. Introduzir algoritmos de aprendizagem automática para ajustar automaticamente os parâmetros para que possam adaptar-se aos ambientes de mercado em mudança.

Conclusão

Esta estratégia integra o canal de preços, as bandas de Bollinger e o indicador RSI rápido para construir um sistema de negociação de reversão de trilha dupla. Ao julgar as principais tendências, também aproveita rapidamente oportunidades de suporte, resistência e sobrecompra / sobrevenda. As configurações dos parâmetros são simples e diretas, fáceis de entender e otimizar. Pode identificar efetivamente as chances de reversão e se adapta à negociação algorítmica.


/*backtest
start: 2022-12-18 00:00:00
end: 2023-11-30 05:20:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


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

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Use ColorBar")
usecb = input(true, "Use CryptoBottom")
usersi = input(true, "Use RSI")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
src = close

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
lencb = abs(close - mac)
sma = sma(lencb, 100)
max = max(open, close)
min = min(open, close)

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) ? 1 : 0 
up2 = close < open and lencb > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //CryptoBottom
//dn2 = close > open and len > sma * 3 and max > max[1] and fastrsi > 90 ? 1 : 0 //CryptoBottom
up3 = fastrsi < 5 ? 1 : 0
//dn3 = fastrsi > 99 ? 1 : 0

longCondition = up == 1 or (up2 == 1 and usecb == true) or (up3 == 1 and usersi == true)
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Mais.