В процессе загрузки ресурсов... загрузка...

Стратегия многотенденционного следования на базе ATR с системой оптимизации получения прибыли и остановки убытков

Автор:Чао Чжан, Дата: 2024-11-12 16:14:11
Тэги:ATRSMATP/SLOHLCМ.А.

img

Обзор

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

Принципы стратегии

Основная стратегия основана на динамических расчетах ATR, используя параметр периода (по умолчанию 10) для вычисления истинного диапазона рынка.

  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)


Связанные

Больше