Estrategias de seguimiento de tendencias múltiples y sistema de optimización de stop-profit y stop-loss basado en ATR

ATR SMA TP/SL OHLC MA
Fecha de creación: 2024-11-12 16:14:11 Última modificación: 2024-11-12 16:14:11
Copiar: 5 Número de Visitas: 518
1
Seguir
1617
Seguidores

Estrategias de seguimiento de tendencias múltiples y sistema de optimización de stop-profit y stop-loss basado en ATR

Descripción general

La estrategia es un sistema de seguimiento de tendencias basado en el indicador de la amplitud real media (ATR) para identificar tendencias en el mercado mediante el cálculo dinámico de la amplitud de las fluctuaciones de los precios, y para la gestión de riesgos en combinación con un mecanismo de parada y pérdida adaptado. La estrategia utiliza un método de análisis de múltiples períodos para ajustar dinámicamente las condiciones de activación de las señales de negociación mediante la multiplicación de ATR para lograr un seguimiento preciso de las fluctuaciones en el mercado.

Principio de estrategia

El núcleo de la estrategia se basa en el cálculo dinámico del indicador ATR, que calcula la amplitud real del mercado a través de los parámetros de ciclo establecidos (default 10 periodos). Utiliza el multiplicador ATR (default 3.0) para construir una línea de órbita ascendente y descendente, que dispara una señal de negociación cuando el precio se rompe la línea de órbita.

  1. Bases de amplitud calculadas con SMA o ATR estándar
  2. Calculación dinámica de las líneas orbitales ascendentes y descendentes como referencia de seguimiento de tendencias
  3. Determina la dirección de la tendencia a través de la intersección de los precios con las líneas orbitales
  4. La señal de negociación se dispara en el punto de conversión de tendencia
  5. Implementación de un sistema de detención de pérdidas dinámico basado en porcentajes

Ventajas estratégicas

  1. Adaptabilidad: reacciona a las fluctuaciones del mercado a través de ATR
  2. Control de riesgos: mecanismo de stop loss porcentual incorporado para controlar el riesgo de cada operación
  3. Flexibilidad de los parámetros: los parámetros clave, como el ciclo ATR, el multiplicador, etc., se pueden ajustar según las características del mercado
  4. Claridad visual: ofrece una interfaz gráfica completa, incluidos marcadores de tendencias y señales de aviso
  5. Administración de tiempo: soporte para ventanas de tiempo de negociación personalizadas, mejorando la aplicabilidad de las estrategias

Riesgo estratégico

  1. Riesgo de cambio de tendencia: falsas señales frecuentes en mercados convulsionados
  2. Sensibilidad de los parámetros: la elección del ciclo ATR y el multiplicador tiene un mayor impacto en el rendimiento de la estrategia
  3. Dependencia del entorno del mercado: es posible que haya un mayor deslizamiento durante una alta volatilidad
  4. Establecimiento de stop loss: el stop loss porcentual fijo puede no ser adecuado para todas las condiciones del mercado

Dirección de optimización de la estrategia

  1. Introducción de análisis de múltiples marcos de tiempo para mejorar la precisión de las tendencias
  2. Adición de confirmación de indicadores de intercambio para mejorar la fiabilidad de la señal
  3. Desarrollo de mecanismos de parada y pérdidas adaptativos que se ajusten a la dinámica de las fluctuaciones del mercado
  4. Aumentar los filtros de intensidad de tendencia y reducir las señales falsas
  5. Optimización de la hora de entrada en combinación con el indicador de volatilidad

Resumir

Se trata de una estrategia de seguimiento de tendencias bien diseñada, que permite un seguimiento preciso de las fluctuaciones del mercado a través de los indicadores ATR y la gestión de riesgos en combinación con el mecanismo de stop loss. La ventaja de la estrategia reside en su gran adaptabilidad, el riesgo es controlado, pero aún así se debe tener en cuenta el impacto del entorno de mercado en el rendimiento de la estrategia.

Código Fuente de la Estrategia
/*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)