Esta estratégia é um bot de pseudo-rede destinado principalmente à negociação algorítmica. Ele usa uma grade dinâmica, ponderada por volume, que é atualizada apenas quando o RSI atende a certas condições. É também uma estratégia de ruptura, enquanto que os bots normais de rede não são (os bots de rede típicos vendem quando uma grade mais alta é atingida, enquanto esta estratégia vende quando uma grade mais baixa é violada sob condições específicas).
Em suma, a estratégia atualiza sua grade para os valores mais altos/mais baixos ponderados por volume da sua fonte dada (
Você pode configurar shorts, fonte, comprimento do RSI e níveis de sobrecompra / sobrevenda nas configurações.
A lógica central da estratégia é a seguinte:
Utilize o indicador RSI para determinar os pontos de inversão da tendência, utilizando como sinais de confirmação os cruzamentos de linhas RSI dos níveis de sobrecompra/supervenda.
Quando ocorrer o sinal RSI, registar os preços mais altos/mais baixos ao longo de um período como limites superiores/inferiores da rede.
Divida o intervalo em 5 linhas de grelha espaçadas uniformemente.
Quando o preço atravessa a linha acima, vá longo. Quando o preço atravessa a linha abaixo, aplanar longs e ir curto.
Usando breakout em vez de toque, pode detectar melhor inversões de tendência.
Feche todas as ordens de pirâmide antes de fechar para evitar riscos durante a noite.
A estratégia consiste em:
Configurações de entrada: fonte, parâmetros do RSI, longo/curto, etc.
Calculo do RSI: calcular o RSI e verificar se há sinais de cruzamento.
Grelha dinâmica: registar os intervalos de preços dos sinais RSI e calcular as linhas da grade.
Verificação de sinal: detecção de linhas de rede de quebra de preço para sinais longos/cortos.
Gestão de pedidos: enviar pedidos e aplanar antes do fechamento.
Cartografia: traçar linhas de rede, zonas longas/cortas, etc.
Ao atualizar dinamicamente a grade e usar o RSI para o contexto da tendência mais os sinais de ruptura, esta estratégia pode efetivamente rastrear tendências e reverter quando a tendência muda.
As principais vantagens desta estratégia são:
Grade dinâmica adapta-se à tendência, ao contrário de grades fixas.
Só ajusta a grelha na confirmação do RSI, reduzindo o ruído.
Os sinais de fuga detetam as reversões melhor do que o toque.
Para evitar riscos de lacuna durante a noite, estabiliza-se antes do fechamento.
O RSI é eficaz para a detecção de sobrecompra/venda.
O modo de ruptura fornece entrada de tendência mais cedo em comparação com a reversão.
Ajustar o espaçamento e o tamanho da grade permite ajustar o risco.
Grade visual e zonas longas/cortas.
Calções opcionais para atender a diferentes comerciantes.
Uma lógica simples e clara adequada para a troca de algoes.
Estes tornam a estratégia capaz de rastreamento automático de tendências com controles de risco para negociação ao vivo.
Há também alguns riscos potenciais a ter em conta:
Os mercados de Whipsaw podem causar stop losses, podem alargar as paradas ou pausar a negociação.
Os intervalos durante a noite podem deixar grandes espaços abertos, reduzindo o tamanho das posições.
A má regulação dos parâmetros pode aumentar as negociações ou erros de sinal.
As taxas elevadas podem corroer os lucros dos negócios da rede.
Os sinais de ruptura podem atrasar as inversões ligeiramente.
Pode ter um desempenho inferior em tendências ascendentes constantes.
Precisa de capital suficiente para posições maiores e pirâmide, caso contrário os resultados serão pobres.
Atenuantes:
Otimizar os parâmetros para reduzir a frequência de negociação e o excesso de negociação.
Combine com indicadores de tendência, evite os períodos de negociação.
Reduzir o tamanho da transacção em % e o risco por transacção.
Teste diferentes limiares de ruptura para obter o melhor equilíbrio entre o tempo e a estabilidade.
Adicionar mais condições de entrada, apenas inserir tendências claras para evitar ser preso.
Testes de retrocesso durante períodos mais longos para avaliar a estabilidade dos parâmetros.
Explorar a otimização de parâmetros dinâmicos baseada no aprendizado de máquina para a adaptabilidade do mercado.
Considerar a combinação com estratégias de opções para cobrir riscos de posição.
Ajustar os parâmetros com base nas recentes condições do mercado para manter a estratégia eficaz.
Construir plataformas de otimização visual para auxiliar no teste rápido.
Com a otimização de parâmetros, a combinação de sinais e mais informações de mercado, os riscos podem ser reduzidos para fazer uma estratégia algo realmente confiável.
A estratégia pode ser reforçada através de:
Otimizar os parâmetros do RSI, testar os períodos do RSI para as melhores combinações.
Testar diferentes espaçamentos de grelhas para obter o melhor risco-recompensa.
Adição de outros indicadores aos sinais de filtragem, por exemplo MACD, KD, etc., para melhorar a precisão.
Desenvolver paradas adaptativas baseadas na volatilidade do mercado.
Aumentando as condições de entrada, só entrem tendências óbvias para evitar armadilhas.
Testes de regresso durante períodos mais longos para avaliar a estabilidade dos parâmetros.
Explorar a otimização dinâmica baseada no aprendizado de máquina para adaptabilidade.
Incorporar estratégias de opções para cobrir riscos.
Ajuste dos parâmetros com base nas recentes condições de mercado para manter a eficácia.
Construção de plataformas de otimização visual para testes rápidos.
Com otimização automatizada, combinações de estratégias, mais informações de mercado, etc., pode alcançar uma melhor estabilidade e retornos como uma verdadeira estratégia de negociação.
Em resumo, a estratégia da grade de caixa do RSI usa o RSI para identificar a confirmação da reversão da tendência, define redes dinâmicas de faixa de preços, breakouts de negociações e flutua intradiário - formando uma tendência flexível seguindo a estratégia de negociação do algo.
A estratégia possui vantagens, incluindo RSI para contexto de tendência, grades dinâmicas, negociação de ruptura e aplanamento total intradiário. Isso permite rastrear efetivamente as tendências com controles de risco.
Existem muitas oportunidades de aprimoramento, incorporando mais indicadores, otimização de ML, backtesting visual, etc., pode se tornar uma estratégia de negociação de algo de alto retorno mais robusta.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m 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/ // © wbburgin //@version=5 // strategy("RSI Box Strategy (pseudo-Grid Bot)", overlay=true, initial_capital = 10000, // default_qty_type = strategy.percent_of_equity, default_qty_value = 1, pyramiding = 33, commission_value=0.10) src = input.source(close,"Source") rsiLength = input.int(14,"RSI Length") oblvl = input.int(70,"Overbought Level") oslvl = input.int(30,"Oversold Level") useShorts = input.bool(false,"Use Shorts",inline="B") showGrid = input.bool(false,"Show Grid",inline="B") rsi = ta.rsi(src,rsiLength) rsi_crossdn = ta.crossunder(rsi,oblvl) rsi_crossup = ta.crossover(rsi,oslvl) highest = ta.vwma(ta.highest(src,rsiLength),rsiLength) lowest = ta.vwma(ta.lowest(src,rsiLength), rsiLength) gridTop = ta.valuewhen(rsi_crossdn,highest,0) gridBottom = ta.valuewhen(rsi_crossup,lowest,0) gridMiddle = math.avg(gridTop,gridBottom) gridMidTop = math.avg(gridMiddle,gridTop) gridMidBottom = math.avg(gridMiddle,gridBottom) diff1 = math.abs(src - gridTop) diff2 = math.abs(src - gridBottom) diff3 = math.abs(src - gridMiddle) diff4 = math.abs(src - gridMidTop) diff5 = math.abs(src - gridMidBottom) minDiff = math.min(diff1, diff2, diff3, diff4, diff5) // Determine which line is the closest float closestLine = na if minDiff == diff1 closestLine := gridTop else if minDiff == diff2 closestLine := gridBottom else if minDiff == diff3 closestLine := gridMiddle else if minDiff == diff4 closestLine := gridMidTop else if minDiff == diff5 closestLine := gridMidBottom buyCrosses = ta.crossover(src,gridTop) or ta.crossover(src,gridBottom) or ta.crossover(src,gridMiddle) or ta.crossover(src,gridMidTop) or ta.crossover(src,gridMidBottom) sellCrosses= ta.crossunder(src,gridTop) or ta.crossunder(src,gridBottom) or ta.crossunder(src,gridMiddle) or ta.crossunder(src,gridMidTop) or ta.crossunder(src,gridMidBottom) condition_bull = buyCrosses condition_bear = sellCrosses var float bull_status_line = na var float bear_status_line = na var float bull_buy_line = na var float bear_sell_line = na if condition_bull bull_status_line := closestLine if condition_bear bear_status_line := closestLine if bull_status_line == gridBottom bull_buy_line := gridMidBottom if bull_status_line == gridMidBottom bull_buy_line := gridMiddle if bull_status_line == gridMiddle bull_buy_line := gridMidTop if bull_status_line == gridMidTop bull_buy_line := gridTop if bear_status_line == gridTop bear_sell_line := gridMidTop if bear_status_line == gridMidTop bear_sell_line := gridMiddle if bear_status_line == gridMiddle bear_sell_line := gridMidBottom if bear_status_line == gridMidBottom bear_sell_line := gridBottom l = ta.crossover(src,bull_buy_line) s = ta.crossunder(src,bear_sell_line) if l strategy.entry("Long",strategy.long) if s strategy.close("Long") if useShorts strategy.entry("Short",strategy.short) // Plotting in_buy = ta.barssince(l) < ta.barssince(s) u=plot(bull_buy_line,color=na,title="Buy Plot") d=plot(bear_sell_line,color=na,title="Sell Plot") plot(not showGrid?na:gridBottom,color=color.new(color.white,75),title="Grid Line -2") plot(not showGrid?na:gridMidBottom,color=color.new(color.white,75),title="Grid Line -1") plot(not showGrid?na:gridMiddle,color=color.new(color.white,75),title="Grid Line 0") plot(not showGrid?na:gridMidTop,color=color.new(color.white,75),title="Grid Line 1") plot(not showGrid?na:gridTop,color=color.new(color.white,75),title="Grid Line 2") fill(u,d,color=in_buy ? color.new(color.lime,75) : color.new(color.red,75))