Estratégia de negociação de abertura de breakout baseada na gestão dinâmica do ATR

BB EMA RSI ADX ATR
Data de criação: 2024-11-12 14:26:23 última modificação: 2024-11-12 14:26:23
cópia: 1 Cliques: 488
1
focar em
1617
Seguidores

Estratégia de negociação de abertura de breakout baseada na gestão dinâmica do ATR

Visão geral

A estratégia é um sistema de negociação de aberturas de mercado baseado em múltiplos indicadores tecnológicos, principalmente para os horários de aberturas de mercados na Alemanha e nos EUA. A estratégia identifica os estágios de liquidação por meio da faixa de Brin, combina a média móvel de índices de curto e longo prazo para confirmar a direção da tendência, utiliza indicadores de tendência relativamente fracos e filtra os sinais de negociação da direção da tendência, e, finalmente, usa o indicador de amplitude real para gerenciar posições dinamicamente.

Princípio da estratégia

A estratégia usa 14 ciclos de Brinbands ((1.5 vezes a diferença padrão) para identificar fases de baixa volatilidade, e é considerada de liquidação quando o preço se aproxima da órbita central do Brinbands. Ao mesmo tempo, o uso de 10 ciclos e 200 ciclos de médias móveis de índice de confirmação de tendências múltiplas, exigindo que o preço esteja acima de duas linhas de equilíbrio.

Vantagens estratégicas

  1. Verificação cruzada de múltiplos indicadores técnicos para reduzir sinais falsos
  2. Stop loss dinâmico baseado no ATR, adaptado às flutuações do mercado
  3. Concentre-se em oportunidades de alta volatilidade durante o período de abertura
  4. Capturar tendências fortes através de um modelo de catálogo e ruptura
  5. Mecanismos de controlo de riscos

Risco estratégico

  1. Indicadores múltiplos podem fazer com que algumas oportunidades de negociação sejam perdidas
  2. Oscilações violentas durante o período de abertura podem desencadear um stop loss
  3. A rápida reversão do mercado pode causar grandes perdas Recomenda-se o uso de um controle razoável de posições, a aplicação rigorosa de estratégias de stop loss e a prevenção de transações excessivas.

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

  1. Parâmetros do indicador podem ser ajustados de acordo com diferentes características do mercado
  2. Considerar a adição de indicadores de volume de transação para comprovar a eficácia da ruptura
  3. A introdução de mais indicadores técnicos para melhorar a confiabilidade do sinal
  4. Optimizar a escolha do momento de entrada e reduzir o impacto do ponto de deslizamento
  5. Melhorar os mecanismos de suspensão e redução de perdas

Resumir

A estratégia capta as oportunidades de negociação durante o período de abertura por meio de uma análise técnica multidimensional e usa o risco de gerenciamento de stop loss dinâmico. A lógica da estratégia é clara, o controle de vento é perfeito e possui boa praticidade.

Código-fonte da estratégia
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Post-Open Long Strategy with ATR-based Stop Loss and Take Profit (Separate Alerts)", overlay=true)

// Parametri per Bande di Bollinger ed EMA
lengthBB = 14
mult = 1.5  // Bande di Bollinger più strette per timeframe inferiori
emaLength = 10  // EMA più breve per una rilevazione di trend più rapida
emaLongLength = 200  // EMA a lungo termine per il filtraggio del trend

// Parametri per RSI
lengthRSI = 7
rsiThreshold = 30

// Parametri per ADX
adxLength = 7
adxSmoothing = 7
adxThreshold = 10

// Filtro temporale - Solo durante l'apertura dei mercati tedesco e USA
daxOpen = (hour >= 8 and hour < 12)
usOpen = (hour == 15 and minute >= 30) or (hour >= 16 and hour < 19)

// Calcolo delle Bande di Bollinger
smaBB = ta.sma(close, lengthBB)
basis = smaBB
dev = mult * ta.stdev(close, lengthBB)
upperBand = basis + dev
lowerBand = basis - dev

// Calcolo delle EMA (breve e lungo termine)
ema = ta.ema(close, emaLength)  // EMA più breve
emaLong = ta.ema(close, emaLongLength)  // EMA a lungo termine per il filtraggio del trend

// Calcolo RSI
rsi = ta.rsi(close, lengthRSI)

// Calcolo ADX
[plusDI, minusDI, adx] = ta.dmi(adxLength, adxSmoothing)

// Calcolo ATR per Stop Loss e Take Profit dinamici
atrLength = 14
atrStopLossMultiplier = 2.0  // Moltiplicatore per Stop Loss
atrTakeProfitMultiplier = 4.0  // Moltiplicatore per Take Profit modificato a 4.0
atrValue = ta.atr(atrLength)  // Valore ATR calcolato qui

// Condizione di lateralizzazione - Prezzo vicino alla SMA delle Bande di Bollinger
lateralization = math.abs(close - smaBB) < (0.01 * close) and (daxOpen or usOpen)

// Identificazione della resistenza e del breakout
var float resistanceLevel = na
resistanceTouches = 0

for i = 1 to 20
    if high[i] > high[i+1] and high[i] > high[i-1]
        resistanceLevel := high[i]
        resistanceTouches := resistanceTouches + 1

// Condizione di Breakout: Il prezzo attuale supera la resistenza identificata
breakoutCondition = close > resistanceLevel and resistanceTouches >= 2

// Filtro di mercato rialzista a lungo termine - Entrare solo se il prezzo è sopra la EMA a 200 periodi
bullMarket = close > emaLong

// Filtro di trend a breve termine
trendFilter = ta.ema(close, emaLength)  // Filtro di trend a breve termine
trendDown = close < trendFilter  // Condizione di downtrend basata sul trend a breve termine

// Evitare l'entrata durante un pullback - Verifica se le due candele precedenti sono rosse
firstRedCandle = close[1] < open[1]  // La prima candela precedente è rossa
secondRedCandle = close[2] < open[2]  // La seconda candela precedente è rossa
avoidPullbackCondition = not (firstRedCandle and secondRedCandle)  // Entrare solo se non entrambe sono rosse

// Condizione Panic Candle - La candela deve chiudere negativa
panicCandle = close < open and (daxOpen or usOpen)

// Condizione di Entrata Long
longCondition = breakoutCondition and lateralization and close > ema and rsi > rsiThreshold and adx > adxThreshold and not trendDown and avoidPullbackCondition and bullMarket and panicCandle

// Stop Loss e Take Profit dinamici basati su ATR
atrStopLoss = close - (atrValue * atrStopLossMultiplier)  // Stop Loss dinamico usando ATR con moltiplicatore 2.0
atrTakeProfit = close + (atrValue * atrTakeProfitMultiplier)  // Take Profit dinamico usando ATR con moltiplicatore 4.0

// Entrata Long: Ordine eseguito alla chiusura della candela
if (longCondition and strategy.opentrades == 0 and barstate.isconfirmed)
    strategy.entry("Long", strategy.long)

// Disegna linee per Stop Loss e Take Profit
// line.new(x1=bar_index, y1=atrStopLoss, x2=bar_index + 1, y2=atrStopLoss, color=color.red, width=2, style=line.style_solid)  // Linea di Stop Loss (rossa)
// line.new(x1=bar_index, y1=atrTakeProfit, x2=bar_index + 1, y2=atrTakeProfit, color=color.green, width=2, style=line.style_solid)  // Linea di Take Profit (verde)

// Uscita: Stop Loss o Take Profit raggiunti
if (strategy.opentrades > 0)
    strategy.exit("Exit Long", "Long", stop=atrStopLoss, limit=atrTakeProfit)

// Alert: Differenziati per Entrata e Uscita utilizzando strategy.order.action
alert_message = "Azione: {{strategy.order.action}}, Prezzo: {{close}}, Dimensione Posizione: {{strategy.position_size}}"