Múltiplas estratégias de rastreamento de tendências e sistema de otimização de stop-profit e stop-loss baseado em ATR

ATR SMA TP/SL OHLC MA
Data de criação: 2024-11-12 16:14:11 última modificação: 2024-11-12 16:14:11
cópia: 5 Cliques: 177
1
focar em
1166
Seguidores

Múltiplas estratégias de rastreamento de tendências e sistema de otimização de stop-profit e stop-loss baseado em ATR

Visão geral

A estratégia é um sistema de negociação de acompanhamento de tendências baseado no indicador de amplitude real média (ATR), que identifica tendências de mercado através do cálculo dinâmico da amplitude de flutuação de preços e gerencia o risco em combinação com um mecanismo de parada e perda de suspensão adaptável. A estratégia usa um método de análise de múltiplos períodos, ajustando dinamicamente as condições de ação do sinal de negociação por meio do multiplicador de ATR, permitindo o acompanhamento preciso das flutuações do mercado.

Princípio da estratégia

O núcleo da estratégia baseia-se na computação dinâmica do indicador ATR, que calcula a amplitude real do mercado através de um parâmetro de ciclo definido (default 10 period). Usando o múltiplo ATR (default 3.0) para construir uma linha de trajectória ascendente e descendente, que aciona um sinal de negociação quando o preço quebra a linha de trajectória.

  1. Base de amplitude calculada com SMA ou ATR padrão
  2. Calculação dinâmica de trajectórias ascendentes e descendentes como referência de tendência
  3. Determinação da direção da tendência através da intersecção de preços com linhas de órbita
  4. Trigger de sinais de negociação em pontos de conversão de tendência
  5. Implementação de um sistema de stop loss dinâmico baseado em percentagem

Vantagens estratégicas

  1. Adaptabilidade: adaptação dinâmica ao mercado através do ATR
  2. Risco controlado: mecanismo de parada de percentual embutido para controlar eficazmente o risco de cada transação
  3. Flexibilidade de parâmetros: parâmetros-chave, como o ciclo ATR, o multiplicador, etc., podem ser ajustados de acordo com as características do mercado
  4. Claridade visual: oferece uma interface gráfica perfeita, incluindo marcadores de tendências e dicas de sinais
  5. Gerenciamento de tempo: suporte a janelas de tempo de negociação personalizadas, melhorando a aplicabilidade da estratégia

Risco estratégico

  1. Risco de reversão de tendência: Falso sinal pode ser frequente em mercados de turbulência
  2. Sensibilidade de parâmetros: a escolha do ciclo ATR e da multiplicação tem maior influência no desempenho da estratégia
  3. Dependência do cenário do mercado: situações em que pode haver grandes desvios durante a alta volatilidade
  4. Parar a perda: a paragem de percentual fixo pode não ser adequada para todas as condições de mercado

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

  1. Introdução de análises de múltiplos quadros temporais para melhorar a precisão das tendências
  2. Adição de confirmação de indicadores de volume de transação para aumentar a confiabilidade do sinal
  3. Desenvolvimento de mecanismos de stop-loss adaptativos, ajustados à dinâmica de flutuação do mercado
  4. Aumentar os filtros de intensidade de tendência e reduzir os falsos sinais
  5. Combinação de indicadores de volatilidade para otimizar o tempo de entrada

Resumir

Trata-se de uma estratégia de acompanhamento de tendências bem concebida, que permite o acompanhamento preciso das flutuações do mercado através dos indicadores ATR e o gerenciamento de riscos em combinação com o mecanismo de stop-loss. A vantagem da estratégia reside na sua forte adaptabilidade e no controle do risco, mas ainda é necessário prestar atenção ao impacto do ambiente de mercado no desempenho da estratégia.

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

//@version=5
strategy("Custom Buy BID Strategy", overlay=true, shorttitle="Buy BID by MR.STOCKVN")

// Cài đặt chỉ báo
Periods = input.int(title="ATR Period", defval=10)
src = input.source(hl2, title="Source")
Multiplier = input.float(title="ATR Multiplier", step=0.1, defval=3.0)
changeATR = input.bool(title="Change ATR Calculation Method?", defval=true)
showsignals = input.bool(title="Show Buy Signals?", defval=false)
highlighting = input.bool(title="Highlighter On/Off?", defval=true)
barcoloring = input.bool(title="Bar Coloring On/Off?", defval=true)

// Tính toán ATR
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2

// Tính toán mức giá mua bán dựa trên ATR
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Vẽ xu hướng
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_line, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1

// Hiển thị tín hiệu mua
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)

// Cài đặt màu cho thanh nến
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)

// Điều kiện thời gian giao dịch
FromMonth = input.int(defval=9, title="From Month", minval=1, maxval=12)
FromDay = input.int(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input.int(defval=2018, title="From Year", minval=999)
ToMonth = input.int(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input.int(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input.int(defval=9999, title="To Year", minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)

// Cửa sổ thời gian giao dịch
window() => (time >= start and time <= finish)

// Điều kiện vào lệnh Buy
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when=window())

// Điều kiện chốt lời và cắt lỗ có thể điều chỉnh
takeProfitPercent = input.float(5, title="Take Profit (%)") / 100
stopLossPercent = input.float(2, title="Stop Loss (%)") / 100

// Tính toán giá trị chốt lời và cắt lỗ dựa trên giá vào lệnh
if (strategy.position_size > 0)
    strategy.exit("Take Profit", "BUY", limit=strategy.position_avg_price * (1 + takeProfitPercent), stop=strategy.position_avg_price * (1 - stopLossPercent))

// Màu nến theo xu hướng
buy1 = ta.barssince(buySignal)
color1 = buy1[1] < na ? color.green : na
barcolor(barcoloring ? color1 : na)