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

Tendência ATR dinâmica seguindo uma estratégia baseada na ruptura de suporte

Autora:ChaoZhang, Data: 2024-12-12 17:26:00
Tags:ATREMASMC

img

Resumo

Trata-se de uma estratégia dinâmica de ATR que segue uma tendência baseada em breakout de suporte. A estratégia incorpora o sistema EMA, o indicador de volatilidade ATR e o Smart Money Concept (SMC) para capturar tendências de mercado.

Princípio da estratégia

A estratégia baseia-se em vários componentes essenciais:

  1. Utiliza o sistema EMA de 50 e 200 períodos para confirmar a direcção da tendência do mercado
  2. Utiliza o indicador ATR para ajustar dinamicamente as metas de stop-loss e lucro
  3. Analisa blocos de ordem e zonas de desequilíbrio para encontrar pontos de entrada ideais
  4. Calcula automaticamente o tamanho da posição com base na percentagem de risco da conta
  5. Determina a consolidação do mercado observando a faixa de preços das últimas 20 velas

Vantagens da estratégia

  1. Gestão de riscos abrangente através de cálculo dinâmico
  2. Sistema de identificação de tendências fiável que evite mercados de consolidação
  3. Ativos de capital de risco não incluídos na posição de risco
  4. Adapta-se bem às diferentes condições de mercado
  5. Estrutura de código clara que é fácil de manter e otimizar

Riscos estratégicos

  1. Os indicadores da EMA apresentam um atraso inerente, que pode atrasar os pontos de entrada
  2. Pode gerar sinais falsos em mercados altamente voláteis
  3. A estratégia depende da continuação da tendência, pode ter um desempenho inferior em diversos mercados
  4. A colocação de stop-loss alargado pode conduzir a perdas maiores em determinadas situações

Orientações de otimização

  1. Incorporar uma análise da relação volume-preço para melhorar a identificação das tendências
  2. Adicionar indicadores de sentimento de mercado para otimizar o tempo de entrada
  3. Considerar a análise de vários prazos para melhorar a estabilidade do sistema
  4. Critérios de identificação do bloco de ordens e da zona de desequilíbrio
  5. Otimizar o método stop-loss, considerar a implementação de trailing stops

Resumo

Esta estratégia é um sistema abrangente de seguimento de tendências que alcança a estabilidade de negociação através de um gerenciamento adequado de riscos e confirmação de múltiplos sinais. Apesar de algum atraso nos sinais, representa um sistema de negociação confiável em geral.


/*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")


Relacionados

Mais.