O recurso está a ser carregado... Carregamento...

Estratégia de negociação pós-breakout com gestão dinâmica de posições baseada no ATR

Autora:ChaoZhang, Data: 2024-11-12 14:26:23
Tags:BBEMARSIADXATR

img

Resumo

Esta estratégia é um sistema de negociação de abertura de mercado baseado em múltiplos indicadores técnicos, visando principalmente as sessões de abertura do mercado alemão e dos EUA.

Princípios de estratégia

A estratégia usa Bandas de Bollinger de 14 períodos (1.5 desvios padrão) para identificar fases de baixa volatilidade, considerando a consolidação quando o preço está perto da faixa média. Emprega EMAs de 10 e 200 períodos para confirmar tendências de alta, exigindo que o preço esteja acima de ambas as médias. Um RSI de 7 períodos garante condições não supervendidas (> 30), enquanto o ADX de 7 períodos confirma a força da tendência (> 10). A estratégia analisa os máximos das últimas 20 velas para níveis de resistência, exigindo pelo menos dois toques. A entrada ocorre na ruptura da resistência com outras condições atendidas, usando 2x ATR para stop-loss e 4x ATR para take-profit.

Vantagens da estratégia

  1. A validação cruzada de vários indicadores técnicos reduz os falsos sinais
  2. A taxa de prejuízo dinâmico baseada no ATR e a taxa de prejuízo dinâmico adaptam-se à volatilidade do mercado
  3. Concentra-se em sessões de abertura de alta volatilidade
  4. Captura tendências fortes através de padrões de consolidação-desvio
  5. Mecanismos abrangentes de controlo dos riscos

Riscos estratégicos

  1. Vários indicadores podem perder algumas oportunidades de negociação
  2. As sessões de abertura voláteis podem desencadear stop-losses
  3. As reversões rápidas do mercado podem causar perdas significativas Recomenda-se implementar um dimensionamento adequado das posições, uma execução rigorosa de stop-loss e evitar o excesso de negociação.

Orientações de otimização

  1. Ajustar os parâmetros dos indicadores para os diferentes mercados
  2. Considerar a adição de indicadores de volume para verificar a validade da ruptura
  3. Incorporar indicadores técnicos adicionais para a fiabilidade do sinal
  4. Otimizar o tempo de entrada para reduzir o impacto do deslizamento
  5. Melhorar a gestão dos lucros/perdas para melhores rácios risco/recompensa

Resumo

Esta estratégia capta oportunidades de negociação durante as sessões de abertura do mercado através de análise técnica multidimensional, empregando stop-loss dinâmico e take-profit para gerenciamento de riscos. Com lógica clara e controle de risco robusto, demonstra boa praticidade. A otimização e ajuste contínuos podem melhorar ainda mais o desempenho 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}}"


Relacionados

Mais.