Estratégia de negociação inteligente de stop loss de trailing ATR de combinação de vários indicadores

ATR EMA VWMA SMA JLines Cloud
Data de criação: 2025-02-21 10:03:26 última modificação: 2025-02-21 10:03:26
cópia: 1 Cliques: 373
2
focar em
319
Seguidores

Estratégia de negociação inteligente de stop loss de trailing ATR de combinação de vários indicadores Estratégia de negociação inteligente de stop loss de trailing ATR de combinação de vários indicadores

Visão geral

Trata-se de uma estratégia de negociação inteligente que combina vários indicadores tecnológicos, principalmente baseados em indicadores ATR para realizar a função de rastreamento de stop loss. A estratégia também integra indicadores de análise multidimensional, como a nuvem de linhas de equilíbrio (JLines Cloud), análise de volume de transação e preço de abertura diária, especialmente adequado para negociação em períodos de 3 e 5 minutos. A estratégia ajusta dinamicamente a posição de stop loss através do ATR, combinando a direção de tendência do sistema de linha de equilíbrio, para realizar um sistema de decisão de negociação abrangente.

Princípio da estratégia

O núcleo da estratégia é um sistema de tracking stop loss construído com base no indicador ATR, que usa 10 ciclos de ATR e 2 vezes o ATR para calcular a linha de stop loss dinâmica, ao mesmo tempo em que integra o sistema JLines Cloud de dois períodos de tempo, e o opcional sistema de linha de 515 que gera sinais de negociação que precisam atender aos seguintes requisitos:

  1. ATR rastreia ruptura de linha de parada
  2. JLines Cloud em dois períodos de tempo
  3. Posição do preço em relação ao preço de abertura do dia
  4. Confirmação de volume de transação anormal

Vantagens estratégicas

  1. Proteção de stop loss dinâmica - adaptação à volatilidade do mercado através do indicador ATR, oferecendo proteção de stop loss flexível
  2. Confirmação de tendências multidimensionais - combinações de medianos de diferentes períodos de tempo para melhorar a precisão de julgamento de tendências
  3. Verificação de volume de transações - aumentar a confirmação de transações por meio da análise de volume de transações anormais
  4. Gestão de risco perfeita - mecanismo de proteção dupla com objetivos de stop loss e profit fixos
  5. Adaptabilidade - parâmetros podem ser ajustados de acordo com diferentes condições de mercado

Risco estratégico

  1. Sensibilidade de parâmetros - a escolha do ciclo ATR e da multiplicação pode afetar significativamente a performance da estratégia
  2. Dependência de condições de mercado - Falso sinal frequente em mercados horizontais
  3. Restrição de múltiplos requisitos - requisitos de entrada rígidos podem levar a perda de algumas oportunidades de negociação
  4. Efeitos de ponto de deslizamento - durante períodos de alta volatilidade, o preço de execução real pode ter um grande desvio do preço de sinal

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

  1. Ajuste de parâmetros dinâmicos - pode ajustar automaticamente os parâmetros do ATR de acordo com a volatilidade do mercado
  2. Filtro de tempo - adicionar filtro de tempo de negociação para evitar períodos de alta volatilidade de abertura e fechamento do mercado
  3. Filtragem de intensidade de tendência - introdução de indicadores de intensidade de tendência para melhorar a precisão do julgamento de tendências
  4. Optimização do gerenciamento de risco - Realização de stop loss dinâmico adaptado a diferentes cenários de mercado
  5. Melhoria da análise de volume de transações - refinamento da metodologia de análise de volume de transações para melhorar a precisão da confirmação de transações

Resumir

Trata-se de um sistema de negociação completo que integra vários indicadores técnicos, oferecendo gerenciamento de risco central por meio do rastreamento de stop loss do ATR, além de fornecer confirmação de negociação usando a nuvem de equilíbrio e a análise de volume de negociação. A vantagem da estratégia reside em seu quadro abrangente de análise de mercado e no sistema de gerenciamento de risco perfeito, mas requer otimização de parâmetros para o ambiente de mercado específico.

Código-fonte da estratégia
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("AI trade Roney nifty value", overlay=true)

// User Inputs
atrPeriod = input.int(10, "ATR Period")
atrMultiplier = input.float(2, "ATR Multiplier")
target = input.float(40, "Target")
stopLoss = input.float(40, "Stop Loss")

// Calculate ATR-based trailing stop
atr = ta.atr(atrPeriod)
nLoss = atrMultiplier * atr
var float xATRTrailingStop = na

if na(xATRTrailingStop)
    xATRTrailingStop := close - nLoss
else
    if close > xATRTrailingStop[1] and close[1] > xATRTrailingStop[1]
        xATRTrailingStop := math.max(xATRTrailingStop[1], close - nLoss)
    else if close < xATRTrailingStop[1] and close[1] < xATRTrailingStop[1]
        xATRTrailingStop := math.min(xATRTrailingStop[1], close + nLoss)
    else
        xATRTrailingStop := close > xATRTrailingStop[1] ? close - nLoss : close + nLoss

// Define position and entry/exit prices
var int pos = na
pos := close[1] < xATRTrailingStop[1] and close > xATRTrailingStop[1] ? 1 : 
       close[1] > xATRTrailingStop[1] and close < xATRTrailingStop[1] ? -1 : pos[1]

var bool isLong = false
var bool isShort = false

var float entryPrice = na
var float exitPrice = na
var float exitStop = na

// JLines Cloud indicator
sl = input.int(72, "Smaller length")
hl = input.int(89, "Higher length")

res = input.timeframe("1", "JLines - Time Frame 1")
res1 = input.timeframe("3", "JLines - Time Frame 2")
enable515 = input.bool(false, "5/15 EMA")
res2 = input.timeframe("5", "5/15 EMA")

ema1_72 = request.security(syminfo.tickerid, res, ta.ema(close, sl))
ema1_89 = request.security(syminfo.tickerid, res, ta.ema(close, hl))
ema2_72 = request.security(syminfo.tickerid, res1, ta.ema(close, sl))
ema2_89 = request.security(syminfo.tickerid, res1, ta.ema(close, hl))
ema3_5 = request.security(syminfo.tickerid, res2, ta.ema(close, 5))
ema3_15 = request.security(syminfo.tickerid, res2, ta.ema(close, 15))

// Plot JLines Cloud
p1_1 = plot(ema1_72, "TimeFrame 1 - SL", color=color.blue, display=display.none)
p1_2 = plot(ema1_89, "TimeFrame 1 - HL", color=color.blue, display=display.none)
p2_1 = plot(ema2_72, "TimeFrame 2 - SL", color=color.yellow, display=display.none)
p2_2 = plot(ema2_89, "TimeFrame 2 - HL", color=color.yellow, display=display.none)
p3_1 = plot(enable515 ? ema3_5 : na, "Late Day Fade - 5 EMA", color=color.yellow, display=display.none)
p3_2 = plot(enable515 ? ema3_15 : na, "Late Day Fade - 15 EMA", color=color.yellow, display=display.none)

fill(p1_1, p1_2, color=ema1_72 > ema1_89 ? color.new(color.green, 30) : color.new(color.red, 30), title="Background 1")
fill(p2_1, p2_2, color=ema2_72 > ema2_89 ? color.new(color.green, 90) : color.new(color.red, 90), title="Background 2")
fill(p3_1, p3_2, color=enable515 ? (ema3_5 > ema3_15 ? color.new(color.blue, 50) : color.new(color.red, 50)) : na, title="Late Day Fade")

// Plot Buy and Sell signals
plotshape(pos == 1, title="Buy", style=shape.triangleup, location=location.belowbar, color=color.green)
plotshape(pos == -1, title="Sell", style=shape.triangledown, location=location.abovebar, color=color.red)

// Volume Analysis
vol_length = input.int(20, "Volume SMA length", minval=1)
vol_avg = ta.sma(volume, vol_length)

unusual_vol_down = volume > vol_avg * 1.2 and close < open
unusual_vol_up = volume > vol_avg * 1.2 and close > open

barcolor(unusual_vol_down or unusual_vol_up ? color.yellow : na)

// ATR Indicator
len2 = input.int(20, minval=1, title="Smooth")
src = input.source(close, title="Source")
out = ta.vwma(src, len2)
avg1 = math.avg(out, xATRTrailingStop) // FIXED: Replaced `ta.avg()` with `math.avg()`

plot(avg1, color=color.aqua, title="ATR")

// Daily Open Line
dl = input.bool(true, "Show daily Open")
dopen = request.security(syminfo.tickerid, "D", open)
plot(dl ? dopen : na, title="Day Open", color=color.orange, style=plot.style_circles, linewidth=2)

// Strategy Entry Conditions
if pos == 1 and not isLong and ema1_72 > ema1_89 and ema2_72 > ema2_89 and ema1_72 > ema2_72 and close > dopen
    entryPrice := close
    exitPrice := close + target
    exitStop := entryPrice - stopLoss
    strategy.entry("Buy", strategy.long)
    strategy.exit("buy_target", "Buy", limit=exitPrice)
    isLong := true
    isShort := false

if pos == -1 and not isShort and ema1_72 < ema1_89 and ema2_72 < ema2_89 and ema1_72 < ema2_72 and close < dopen
    entryPrice := close
    exitPrice := close - target
    exitStop := entryPrice + stopLoss
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell_target", "Sell", limit=exitPrice)
    isLong := false
    isShort := true

// Stop Loss Handling
if strategy.position_size > 0 and close < entryPrice - stopLoss
    strategy.close("Buy", comment="Buy_Stop Loss")

if strategy.position_size < 0 and close > entryPrice + stopLoss
    strategy.close("Sell", comment="Sell_Stop Loss")