Estratégia de negociação dinâmica de limite de choque RSI adaptável

RSI ATR BAT LR SD
Data de criação: 2024-11-12 16:07:32 última modificação: 2024-11-12 16:07:32
cópia: 2 Cliques: 498
1
focar em
1617
Seguidores

Estratégia de negociação dinâmica de limite de choque RSI adaptável

Visão geral

A estratégia é um sistema de negociação adaptativo baseado no RSI (indicador de força relativamente fraca) para otimizar a geração de sinais de negociação através do ajuste dinâmico do limiar de compra-venda. A inovação central da estratégia é a introdução do método Bufi Adaptive Threshold (BAT), que ajusta o limiar de disparo do RSI de acordo com as tendências do mercado e a dinâmica de flutuação dos preços, aumentando a eficácia da estratégia tradicional do RSI.

Princípio da estratégia

O núcleo da estratégia é a atualização do tradicional sistema de RSI de limiar fixo para um sistema de limiar dinâmico. Os métodos concretos de implementação são os seguintes:

  1. O uso do RSI de curto prazo para calcular o estado de sobrevenda do mercado
  2. Escala de tendência de preço calculada por regressão linear
  3. A variação de preços é medida com o desvio padrão.
  4. Integração de tendências e informações de flutuação para ajustar dinamicamente os limites do RSI
  5. Aumento da depreciação em alta e diminuição na baixa
  6. Diminuir a sensibilidade à margem quando o preço está mais longe da média

A estratégia também inclui dois mecanismos de controle de risco:

  • Mecanismo de liquidação periódica
  • Mecanismo de suspensão máxima de perdas

Vantagens estratégicas

  1. A partir daí, o blogueiro começou a escrever sobre o assunto.
  • Capacidade de ajustar automaticamente o limiar de negociação de acordo com a situação do mercado
  • Evitar o uso de parâmetros fixos em diferentes cenários de mercado
  1. O risco é controlado:
  • Limites de tempo máximo de posse
  • Incluindo proteção de liquidação
  • Gerenciamento de posições por percentagem
  1. Qualidade de sinal melhorada:
  • Falsos sinais de redução de turbulência no mercado
  • Melhorar a capacidade de captura de mercados de tendências
  • Equilibrar sensibilidade e estabilidade

Risco estratégico

  1. Sensibilidade dos parâmetros:
  • A escolha do coeficiente BAT afeta a performance da estratégia
  • A configuração do ciclo RSI precisa de testes completos
  • Adaptação dos parâmetros de comprimento necessários para otimização
  1. O ambiente de mercado depende:
  • O risco de perder oportunidades em mercados altamente voláteis
  • Os pontos de perda de parada podem ser maiores em situações de forte flutuação
  • Parâmetros necessários de acordo com diferentes mercados
  1. Limites tecnológicos:
  • Dependendo do histórico de dados de cálculo
  • Pode haver atraso
  • Os custos de transação devem ser considerados

Direção de otimização da estratégia

  1. Parâmetros de otimização:
  • Introdução de mecanismos de seleção de parâmetros adaptativos
  • Parâmetros de ajuste de acordo com a dinâmica de diferentes ciclos de mercado
  • Adição de parâmetros de otimização automática
  1. Otimização de sinal:
  • Verificação em combinação com outros indicadores técnicos
  • Adição de reconhecimento de ciclo de mercado
  • Optimizar o julgamento de tempo de entrada
  1. Otimização do controle de risco:
  • Introdução do mecanismo de parada dinâmica
  • Optimizar estratégias de gestão de posições
  • Adicionado mecanismo de controle de retração

Resumir

Trata-se de uma estratégia de negociação inovadora e auto-adaptável, que resolve as limitações da estratégia tradicional RSI através da otimização de desvalorização dinâmica. A estratégia leva em consideração as tendências e a volatilidade do mercado e possui uma forte capacidade de adaptação e controle de risco. Apesar de haver desafios como a otimização de parâmetros, a estratégia tem perspectivas de obter um desempenho estável na negociação real por meio de melhoria e otimização contínuas.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PineCodersTASC

//  TASC Issue: October 2024
//     Article: Overbought/Oversold
//              Oscillators: Useless Or Just Misused
//  Article By: Francesco P. Bufi
//    Language: TradingView's Pine Script™ v5
// Provided By: PineCoders, for tradingview.com

//@version=5
title  ='TASC 2024.10 Adaptive Oscillator Threshold'
stitle = 'AdapThrs'
strategy(title, stitle, false, default_qty_type = strategy.percent_of_equity,
         default_qty_value = 10, slippage = 5)

// --- Inputs ---
string sys    = input.string("BAT", "System", options=["Traditional", "BAT"])
int rsiLen    = input.int(2, "RSI Length", 1)
int buyLevel  = input.int(14, "Buy Level", 0)
int adapLen   = input.int(8, "Adaptive Length", 2) 
float adapK   = input.float(6, "Adaptive Coefficient")
int exitBars  = input.int(28, "Fixed-Bar Exit", 1, group = "Strategy Settings")
float DSL     = input.float(1600, "Dollar Stop-Loss", 0, group = "Strategy Settings")

// --- Functions --- 
//  Bufi's Adaptive Threshold
BAT(float price, int length) =>
    float sd = ta.stdev(price, length)
    float lr = ta.linreg(price, length, 0)
    float slope = (lr - price[length]) / (length + 1)
    math.min(0.5, math.max(-0.5, slope / sd))

// --- Calculations ---
float osc = ta.rsi(close, rsiLen)

// Strategy entry rules
// - Traditional system
if sys == "Traditional" and osc < buyLevel
    strategy.entry("long", strategy.long)
// - BAT system 
float thrs = buyLevel * adapK * BAT(close, adapLen)
if sys == "BAT" and osc < thrs
    strategy.entry("long", strategy.long)

// Strategy exit rules
// - Fixed-bar exit
int nBar = bar_index - strategy.opentrades.entry_bar_index(0)
if exitBars > 0 and nBar >= exitBars
    strategy.close("long", "exit")
// - Dollar stop-loss
if DSL > 0 and strategy.opentrades.profit(0) <= - DSL
    strategy.close("long", "Stop-loss", immediately = true)

// Visuals
rsiColor  = #1b9e77
thrsColor = #d95f02
rsiLine   = plot(osc, "RSI", rsiColor, 1)
thrsLine  = plot(sys == "BAT" ? thrs : buyLevel, "Threshold", thrsColor, 1)
zeroLine  = plot(0.0, "Zero", display = display.none)
fill(zeroLine, thrsLine, sys == "BAT" ? thrs : buyLevel, 0.0, color.new(thrsColor, 60), na)