Estratégia de Swing Trading de Estrutura de Mercado

CHoCH BOS IDM ATR RSI SL TP
Data de criação: 2025-03-28 17:38:30 última modificação: 2025-03-28 17:38:45
cópia: 7 Cliques: 387
2
focar em
319
Seguidores

Estratégia de Swing Trading de Estrutura de Mercado Estratégia de Swing Trading de Estrutura de Mercado

Visão geral

A estratégia de negociação de flutuação da estrutura do mercado é uma estratégia de negociação avançada baseada em mudanças na estrutura do mercado, captura de liquidez e dinâmica de tendência. A estratégia fornece aos comerciantes uma estrutura de decisão de negociação sistematizada, analisando as características-chave das mudanças de preço, identificando potenciais oportunidades de reversão e continuação da tendência.

Princípio da estratégia

A estratégia baseia-se em quatro indicadores-chave:

  1. CHOCH (Change of Character): Identifica os pontos de inflexão da tendência de preços e determina a mudança de direção potencial do mercado.
  2. BOS (Break of Structure): confirmação da dinâmica da tendência e da direção da quebra.
  3. Inducements (IDM): Capturar as armadilhas de liquidez e movimentos de capitais nos mercados.
  4. Sweeps: Identificar brechas falsas e aproveitar oportunidades de liquidez.

A estratégia utiliza um conjunto de indicadores de análise técnica, incluindo a média real de variação (ATR), o índice de força relativa (RSI) e o volume de transação, para construir um sistema de decisão de negociação multidimensional.

Vantagens estratégicas

  1. Gerenciamento de risco sistemático: controle efetivo do risco de uma única transação através do cálculo de stop loss e stop loss no ATR.
  2. Condições de filtragem múltipla: combinação de CHoCH, BOS, RSI e volume de transação para melhorar a precisão do sinal.
  3. Gerenciamento de posições dinâmicas: Use a percentagem de direitos e interesses para definir posições de negociação e otimizar a eficiência do uso de fundos.
  4. Mecanismos flexíveis de entrada e saída: estratégias de negociação podem ser ajustadas de acordo com a dinâmica da estrutura do mercado.

Risco estratégico

  1. Risco de Falsa Breakout: Os indicadores de estrutura de mercado podem gerar sinais enganosos.
  2. Sensibilidade de parâmetros: A configuração de parâmetros de estratégia tem um impacto significativo no desempenho.
  3. Risco de volume e de liquidez: pode ser fraco em mercados com baixa liquidez.
  4. Controle de retração: pode haver uma maior retração em um mercado de tendências contínuas.

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

  1. Introdução de algoritmos de aprendizagem de máquina: optimização de seleção de parâmetros e reconhecimento de sinais.
  2. Aumentar a análise de múltiplos períodos de tempo: aumentar a confiabilidade do sinal.
  3. Desenvolver módulos de gestão de risco dinâmico: ajustar posições de acordo com a volatilidade do mercado.
  4. Integrar mais indicadores técnicos: MACD, Brinks, etc., reforçando a filtragem de sinais.

Resumir

A estratégia de negociação de flutuação da estrutura do mercado é um método de negociação quantitativa avançado que, por meio de uma análise sistematizada da estrutura do mercado, fornece aos comerciantes uma estrutura de decisão de negociação robusta. Com otimização contínua e gerenciamento de risco, a estratégia tem o potencial de obter um desempenho de negociação estável em diferentes ambientes de mercado.

Código-fonte da estratégia
/*backtest
start: 2024-03-28 00:00:00
end: 2025-03-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Market Structure Swing Trading", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)

// === Input Parameters ===
len = input(50, "CHoCH Detection Period")
shortLen = input(3, "IDM Detection Period")
atrMultiplierSL = input(2.0, "ATR Multiplier for Stop Loss")
atrMultiplierTP = input(3.0, "ATR Multiplier for Take Profit")
rsiPeriod = input(14, "RSI Period")
rsiOverbought = input(70, "RSI Overbought Level")
rsiOversold = input(30, "RSI Oversold Level")
volThreshold = input(1.2, "Volume Multiplier Threshold") 

// === ATR Calculation for SL & TP ===
atr = ta.atr(14)
stopLossLong = close - (atr * atrMultiplierSL)
takeProfitLong = close + (atr * atrMultiplierTP)
stopLossShort = close + (atr * atrMultiplierSL)
takeProfitShort = close - (atr * atrMultiplierTP)

// === RSI Filter ===
rsi = ta.rsi(close, rsiPeriod)
longConditionRSI = rsi < rsiOversold
shortConditionRSI = rsi > rsiOverbought

// === Volume Filter ===
volThresholdValue = ta.sma(volume, 20) * volThreshold
highVolume = volume > volThresholdValue

// === Market Structure Functions ===
swings(len) =>
    var int topx = na
    var int btmx = na
    upper = ta.highest(len)
    lower = ta.lowest(len)
    top = high[len] > upper ? high[len] : na
    btm = low[len] < lower ? low[len] : na
    topx := top ? bar_index[len] : topx
    btmx := btm ? bar_index[len] : btmx
    [top, topx, btm, btmx]

[top, topx, btm, btmx] = swings(len)

// === CHoCH Detection ===
var float topy = na
var float btmy = na
var os = 0
var top_crossed = false
var btm_crossed = false

if top
    topy := top
    top_crossed := false
if btm
    btmy := btm
    btm_crossed := false

if close > topy and not top_crossed
    os := 1
    top_crossed := true
if close < btmy and not btm_crossed
    os := 0
    btm_crossed := true

// === Break of Structure (BOS) ===
var float max = na
var float min = na
var int max_x1 = na
var int min_x1 = na

if os != os[1]
    max := high
    min := low
    max_x1 := bar_index
    min_x1 := bar_index

bullishBOS = close > max and os == 1
bearishBOS = close < min and os == 0

// === Trade Conditions with Filters ===
longEntry = bullishBOS and longConditionRSI and highVolume
shortEntry = bearishBOS and shortConditionRSI and highVolume

// === Execute Trades ===
if longEntry
    strategy.entry("Long", strategy.long)
    strategy.exit("Long TP/SL", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if shortEntry
    strategy.entry("Short", strategy.short)
    strategy.exit("Short TP/SL", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)

// === Plotting Market Structure ===
plotshape(series=longEntry, location=location.belowbar, color=color.green, style=shape.labelup, title="BUY")
plotshape(series=shortEntry, location=location.abovebar, color=color.red, style=shape.labeldown, title="SELL")
plot(topy, color=color.blue, title="CHoCH High")
plot(btmy, color=color.orange, title="CHoCH Low")