Множественные стратегии отслеживания тренда и система оптимизации стоп-профита и стоп-лосса на основе ATR

ATR SMA TP/SL OHLC MA
Дата создания: 2024-11-12 16:14:11 Последнее изменение: 2024-11-12 16:14:11
Копировать: 5 Количество просмотров: 518
1
Подписаться
1617
Подписчики

Множественные стратегии отслеживания тренда и система оптимизации стоп-профита и стоп-лосса на основе ATR

Обзор

Стратегия является системой отслеживания трендов, основанной на показателях средней реальной длины волны (ATR), для определения рыночных тенденций путем динамического расчета диапазона колебаний цен и управления рисками в сочетании с адаптированным механизмом остановки и убытка. Стратегия использует многоциклический метод анализа, динамически регулируя условия запуска торговых сигналов с помощью умножения ATR для точного отслеживания колебаний рынка.

Стратегический принцип

В основе стратегии лежит динамический расчет ATR-индикатора, который определяет реальную волность рынка с помощью установленных циклических параметров (например, 10-й по умолчанию). Используя ATR-множитель (например, 3.0) он создает линию восходящей и нисходящей орбиты, которая запускает торговый сигнал, когда цена пробивает орбитальную линию. В частности, он включает в себя:

  1. Определение частоты по SMA или ATR
  2. Динамический расчет верхней и нижней орбитальных линий в качестве ориентира для отслеживания тенденций
  3. Определение направления тренда через пересечение цены и орбитальной линии
  4. В точке перехода в тренд запускается торговый сигнал
  5. Реализация динамической системы стоп-стоп на основе процентов

Стратегические преимущества

  1. Умение адаптироваться: реагировать на рыночные колебания с помощью ATR
  2. Контролируемый риск: встроенная стоп-стоп система, эффективно контролирующая риск каждой сделки
  3. Гибкость параметров: ключевые параметры, такие как ATR-цикл, умножение и т. Д., могут быть изменены в зависимости от рыночных особенностей
  4. Визуальная четкость: предоставление полноценного графического интерфейса, включающего маркировку тенденций и сигнальные подсказки
  5. Управление временем: поддержка пользовательских торговых временных окон, повышение применимости стратегий

Стратегический риск

  1. Риск обратного тренда: часто могут появляться ложные сигналы на рынках, находящихся в колебании
  2. Чувствительность параметров: выбор ATR-циклов и умножения имеет большое влияние на эффективность стратегии
  3. Зависимость от рыночных условий: возможны большие скольжения во время высокой волатильности
  4. Стоп-стратегия: фиксированный стоп-процент может не подходить для всех рыночных условий

Направление оптимизации стратегии

  1. Внедрение многоразового анализа временных рамок для повышения точности определения тенденций
  2. Добавление подтверждения показателей передачи, повышение надежности сигнала
  3. Разработка адаптивных механизмов стоп-стоп, адаптирующихся к динамике рыночных колебаний
  4. Увеличение фильтров интенсивности тренда, уменьшение ложных сигналов
  5. Оптимизация времени входа в комбинации с показателями волатильности

Подвести итог

Это хорошо разработанная стратегия отслеживания тенденций, которая позволяет точно отслеживать колебания рынка с помощью показателей ATR и управлять рисками в сочетании с механизмом остановки и потери. Преимущество стратегии заключается в ее высокой адаптивности, контролируемом риске, но при этом следует учитывать влияние рыночной среды на эффективность стратегии.

Исходный код стратегии
/*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)