Estratégia de crossover multiindicador adaptável dinâmica combinada com sistema de controle de risco inteligente SRSI e MACD

RSI SRSI MACD ATR
Data de criação: 2025-02-20 13:07:37 última modificação: 2025-02-27 17:44:09
cópia: 1 Cliques: 329
2
focar em
319
Seguidores

Estratégia de crossover multiindicador adaptável dinâmica combinada com sistema de controle de risco inteligente SRSI e MACD Estratégia de crossover multiindicador adaptável dinâmica combinada com sistema de controle de risco inteligente SRSI e MACD

Visão geral

A estratégia é um sistema de negociação dinâmico que combina um indicador aleatório relativamente fraco (SRSI) e um indicador de tendência/diferença de média móvel (MACD). A estratégia permite a gestão inteligente do risco através do ajustamento dinâmico dos pontos de parada e de parada do indicador ATR. O núcleo da estratégia é gerar sinais de negociação através da confirmação cruzada de vários indicadores técnicos, ao mesmo tempo em que gerencia posições em combinação com a volatilidade do mercado.

Princípio da estratégia

A estratégia funciona com base nos seguintes mecanismos centrais:

  1. Calcular a diferença entre a linha K e a linha D no SRSI e a diferença entre a linha K e o MACD normalizado para determinar a tendência do mercado
  2. As condições de compra devem ser atendidas simultaneamente: diferença K-D positiva, diferença K-MACD positiva e MACD não em tendência de queda
  3. As condições de venda devem ser atendidas simultaneamente: K-D diferença é negativa, K-MACD diferença é negativa e MACD não está em alta
  4. Utilize ATR multiplicado pelo coeficiente de risco para calcular dinamicamente o stop loss e a distância de suspensão, ajustando-se à volatilidade do mercado

Vantagens estratégicas

  1. O mecanismo de confirmação de múltiplos sinais aumenta significativamente a confiabilidade das transações, evitando os falsos sinais que um único indicador pode trazer
  2. A configuração de stop loss dinâmica pode ser automaticamente ajustada de acordo com as flutuações do mercado, proporcionando uma melhor relação de risco/benefício.
  3. Estratégias com boa adaptabilidade para manter um desempenho estável em diferentes cenários de mercado
  4. Os parâmetros são muito ajustáveis, permitindo que os comerciantes otimizem de acordo com as suas preferências pessoais de risco

Risco estratégico

  1. Excesso de sinais de negociação pode ser gerado em mercados turbulentos, resultando em frequentes entradas e saídas de mercados
  2. O uso de múltiplos indicadores pode levar a sinais de atraso, perdendo o melhor momento de entrada em mercados em rápida mudança
  3. O ATR é baseado na volatilidade histórica e pode não ser adaptado em tempo hábil em situações de volatilidade de mercado.
  4. É necessário definir um fator de risco razoável, muito grande ou muito pequeno pode afetar a eficácia da política

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

  1. Adição de filtros de tendência, com diferentes padrões de confirmação de sinais em mercados de tendência e de turbulência
  2. Introdução de indicadores de volume de tráfego como confirmação auxiliar para aumentar a confiabilidade do sinal
  3. Método de cálculo para otimizar a parada de perda, que pode ser considerado em combinação com a resistência de suporte
  4. Adicionar modelos de previsão de volatilidade de mercado e ajustar os parâmetros de risco antecipadamente
  5. Considerar a confirmação de sinais em diferentes períodos de tempo para aumentar a robustez da estratégia

Resumir

A estratégia constrói um sistema de negociação robusto, combinando os benefícios do SRSI e do MACD. O mecanismo de gestão de risco dinâmico torna-a bem adaptável, mas ainda requer que o comerciante optimize os parâmetros de acordo com as condições reais do mercado. O funcionamento bem sucedido da estratégia requer uma compreensão profunda do mercado e uma gestão racional da posição, combinada com a capacidade de tolerância ao risco do indivíduo.

Código-fonte da estratégia
/*backtest
start: 2024-09-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy(title="SRSI + MACD Strategy with Dynamic Stop-Loss and Take-Profit", shorttitle="SRSI + MACD Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// User Inputs
smoothK = input.int(3, "K", minval=1) 
smoothD = input.int(3, "D", minval=1) 
lengthRSI = input.int(16, "RSI Length", minval=1) 
lengthStoch = input.int(16, "Stochastic Length", minval=1) 
src = input(close, title="RSI Source") 
enableStopLoss = input.bool(true, "Enable Stop-Loss")  
enableTakeProfit = input.bool(true, "Enable Take-Profit")  
riskFactor = input.float(2.5, "Risk Factor", minval=0.1, step=1)  

// Calculate K and D lines
rsi1 = ta.rsi(src, lengthRSI) 
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) 
d = ta.sma(k, smoothD) 
differenceKD = k - d 

// Calculate MACD and normalization
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9) 
lowestK = ta.lowest(k, lengthRSI) 
highestK = ta.highest(k, lengthRSI) 
normalizedMacd = (macdLine - ta.lowest(macdLine, lengthRSI)) / (ta.highest(macdLine, lengthRSI) - ta.lowest(macdLine, lengthRSI)) * (highestK - lowestK) + lowestK 
differenceKMacd = k - normalizedMacd 

// Sum both differences for a unique display
differenceTotal = (differenceKD + differenceKMacd) / 2

// Check if MACD is falling or rising
isMacdFalling = ta.falling(macdLine, 1)  
isMacdRising = ta.rising(macdLine, 1)  

// Check if K is falling or rising
isKFalling = ta.falling(k, 1)  
isKdRising = ta.rising(k, 1)  

// Calculate ATR and dynamic levels
atrValue = ta.atr(14)  
stopLossDistance = atrValue * riskFactor  
takeProfitDistance = atrValue * riskFactor  

// Variables for stop-loss and take-profit levels
var float longStopPrice = na
var float longTakeProfitPrice = na

// Buy and sell conditions with differenceKD added
buyCondition = ((differenceTotal > 0 or differenceKD > 0) and (isKdRising or isMacdRising) and k < 20 )  
sellCondition = ((differenceTotal <= 0 or differenceKD <= 0) and (isKFalling or isMacdFalling) and k > 80)  

// Execute strategy orders with conditional stop-loss and take-profit
if buyCondition and strategy.position_size == 0
    strategy.entry("Buy", strategy.long)

if strategy.position_size > 0
    longStopPrice := strategy.position_avg_price - stopLossDistance  
    longTakeProfitPrice := strategy.position_avg_price + takeProfitDistance  

    if enableStopLoss or enableTakeProfit
        strategy.exit("Sell/Exit", "Buy", stop=(enableStopLoss ? longStopPrice : na), limit=(enableTakeProfit ? longTakeProfitPrice : na))

if sellCondition
    strategy.close("Buy")  

// Hide lines when position is closed
stopLossToPlot = strategy.position_size > 0 ? longStopPrice : na
takeProfitToPlot = strategy.position_size > 0 ? longTakeProfitPrice : na

// Plot stop-loss and take-profit lines only when long positions are active
plot(enableStopLoss ? stopLossToPlot : na, title="Stop-Loss", color=color.yellow, linewidth=1, style=plot.style_linebr, offset=0, force_overlay=true) 
plot(enableTakeProfit ? takeProfitToPlot : na, title="Take-Profit", color=color.yellow, linewidth=1, style=plot.style_linebr, offset=0, force_overlay=true)

// Plot the MACD and candles

plot(normalizedMacd, "Normalized MACD", color=color.new(color.purple, 0), linewidth=1, display=display.all)

h0 = hline(80, "Upper Band", color=#787B86) 
hline(50, "Middle Band", color=color.new(#787B86, 50)) 
h1 = hline(20, "Lower Band", color=#787B86) 
fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")

// New candle based on the sum of differences
plotcandle(open=0, high=differenceTotal, low=0, close=differenceTotal, color=(differenceTotal > 0 ? color.new(color.green, 60) : color.new(color.red, 60)), title="K-D + MACD Candles")