Tendência dinâmica de ATR seguindo estratégia com base no rompimento do nível de suporte

ATR EMA SMC
Data de criação: 2024-12-12 17:26:00 última modificação: 2024-12-12 17:26:00
cópia: 3 Cliques: 399
1
focar em
1617
Seguidores

Tendência dinâmica de ATR seguindo estratégia com base no rompimento do nível de suporte

Visão geral

Trata-se de uma estratégia de seguimento de tendências ATR dinâmicas baseadas em rupturas de suportes. A estratégia utiliza o sistema de linha média EMA, o indicador de volatilidade ATR e o conceito de fundos inteligentes (SMC) para capturar as tendências do mercado. A estratégia permite uma boa gestão de risco através do cálculo dinâmico do tamanho da posição e da posição de parada.

Princípio da estratégia

A estratégia é baseada nos seguintes componentes centrais:

  1. O sistema de linha média de EMA de 50 e 200 ciclos é usado para confirmar a direção da tendência do mercado
  2. Utilizando o ATR para ajustar dinamicamente os objetivos de stop loss e profit
  3. Buscar o melhor ponto de entrada através da análise do bloco de ordem e da zona de desequilíbrio
  4. Calculação automática de posições abertas com base na percentagem de risco da conta
  5. O mercado está em equilíbrio por observação de cerca de 20 linhas K

Vantagens estratégicas

  1. Gestão de riscos perfeita, computação dinâmica para garantir que o risco de cada transação seja controlado
  2. O sistema de avaliação de tendências é confiável, evitando transações de mercado de liquidação
  3. O Stop Loss Stop Setup é razoável, com uma relação de risco/receita de 1 para 3.
  4. Avaliar a volatilidade do mercado e adaptar-se a diferentes circunstâncias
  5. A estrutura do código é clara, fácil de manter e otimizar

Risco estratégico

  1. Indicadores da EMA são atrasados e podem causar atrasos no tempo de entrada
  2. O que pode desencadear falsos sinais em mercados altamente voláteis
  3. A estratégia depende da continuidade da tendência, que pode ser fraca em mercados de turbulência.
  4. A posição de parada é ampla e pode suportar grandes perdas em alguns casos.

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

  1. Pode introduzir análise de relações de preço e quantidade para melhorar a precisão de discernimento de tendências
  2. Aumentar os indicadores de sentimento de mercado e otimizar o momento de entrada
  3. Considere a inclusão de análises de ciclo de tempo múltiplo para aumentar a estabilidade do sistema
  4. Critérios de avaliação que permitem refinar blocos de pedidos e áreas de desequilíbrio
  5. Optimizar o modo de parar os prejuízos e considerar o uso do parar móvel

Resumir

A estratégia é um sistema de acompanhamento de tendências mais completo, que aumenta a estabilidade das negociações por meio de um bom gerenciamento de risco e confirmação de múltiplos sinais. Embora haja algum atraso, é um sistema de negociação confiável em geral. É recomendável fazer uma verificação de feedback adequada antes do uso em campo e otimizar os parâmetros de acordo com a variedade de negociação específica e o ambiente de mercado.

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

// TradingView Pine Script strategy for Smart Money Concept (SMC)
//@version=5
strategy("Smart Money Concept Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=100)

// === Input Parameters ===
input_risk_percentage = input.float(1, title="Risk Percentage", step=0.1)
input_atr_length = input.int(14, title="ATR Length")
input_ema_short = input.int(50, title="EMA Short")
input_ema_long = input.int(200, title="EMA Long")

// === Calculations ===
atr = ta.atr(input_atr_length)
ema_short = ta.ema(close, input_ema_short)
ema_long = ta.ema(close, input_ema_long)

// === Utility Functions ===
// Identify Order Blocks
is_order_block(price, direction) =>
    ((high[1] > high[2] and low[1] > low[2] and direction == 1) or (high[1] < high[2] and low[1] < low[2] and direction == -1))

// Identify Imbalance Zones
is_imbalance() =>
    range_high = high[1]
    range_low = low[1]
    range_high > close and range_low < close

// Calculate Lot Size Based on Risk
calculate_lot_size(stop_loss_points, account_balance) =>
    risk_amount = account_balance * (input_risk_percentage / 100)
    lot_size = risk_amount / (stop_loss_points * syminfo.pointvalue)
    lot_size

// Determine if Market is Consolidating
is_consolidating() =>
    (ta.highest(high, 20) - ta.lowest(low, 20)) / atr < 2

// === Visual Enhancements ===
// Plot Order Blocks
// if is_order_block(close, 1)
//     line.new(x1=bar_index[1], y1=low[1], x2=bar_index, y2=low[1], color=color.green, width=2, extend=extend.right)
// if is_order_block(close, -1)
//     line.new(x1=bar_index[1], y1=high[1], x2=bar_index, y2=high[1], color=color.red, width=2, extend=extend.right)

// Highlight Imbalance Zones
// if is_imbalance()
//     box.new(left=bar_index[1], top=high[1], right=bar_index, bottom=low[1], bgcolor=color.new(color.orange, 80))

// === Logic for Trend Confirmation ===
is_bullish_trend = ema_short > ema_long
is_bearish_trend = ema_short < ema_long

// === Entry Logic ===
account_balance = strategy.equity
if not is_consolidating()
    if is_bullish_trend
        stop_loss = close - atr * 2
        take_profit = close + (math.abs(close - (close - atr * 2)) * 3)
        stop_loss_points = math.abs(close - stop_loss) / syminfo.pointvalue
        lot_size = calculate_lot_size(stop_loss_points, account_balance)
        strategy.entry("Buy", strategy.long, qty=lot_size)
        strategy.exit("TP/SL", "Buy", stop=stop_loss, limit=take_profit)

    if is_bearish_trend
        stop_loss = close + atr * 2
        take_profit = close - (math.abs(close - (close + atr * 2)) * 3)
        stop_loss_points = math.abs(close - stop_loss) / syminfo.pointvalue
        lot_size = calculate_lot_size(stop_loss_points, account_balance)
        strategy.entry("Sell", strategy.short, qty=lot_size)
        strategy.exit("TP/SL", "Sell", stop=stop_loss, limit=take_profit)

// === Plotting Indicators ===
plot(ema_short, color=color.blue, title="EMA 50")
plot(ema_long, color=color.orange, title="EMA 200")
plotshape(series=is_bullish_trend and not is_consolidating(), style=shape.triangleup, location=location.belowbar, color=color.green, text="Buy")
plotshape(series=is_bearish_trend and not is_consolidating(), style=shape.triangledown, location=location.abovebar, color=color.red, text="Sell")