Стратегия ATR Trailing Stop

Автор:Чао Чжан, Дата: 2023-09-26 20:23:13
Тэги:

Обзор: Стратегия ATR trailing stop - это стратегия торговли, которая динамически устанавливает уровни стоп-лосса на основе индикатора среднего истинного диапазона (ATR).

Логика стратегии

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

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

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

Анализ преимуществ

Преимущества этой стратегии включают:

  1. Динамические остановки, основанные на ATR, адаптируются к волатильности рынка, избегая остановки слишком близко или слишком далеко.

  2. Целью торгового канала является отслеживание среднего обратного движения в рамках трендов.

  3. Непрерывная торговля трендом без прогнозирования прорыва. Следует трендам для лучшей прибыльности.

  4. Простые параметры и правила, легко понять и автоматизировать.

  5. Высокое использование капитала, непрерывная торговля обеспечивают больше возможностей для получения прибыли.

Риски и улучшения

Некоторые риски следует учитывать:

  1. Большие коэффициенты ATR приводят к остановкам слишком далеко, не контролируя риск.

  2. Снижение частоты остановок на рынках с ограниченным диапазоном, изменение коэффициентов ATR для уменьшения нежелательных остановок.

  3. Добавление фильтра тренда к торговому каналу нарушает только в направлении тренда.

  4. Большие скачки могут сделать остановки неэффективными.

Возможные оптимизации:

  1. Оптимизировать параметры ATR для нахождения правильного баланса между отслеживанием волатильности и предотвращением чрезмерных остановок.

  2. Добавьте индикатор тренда, только торговая разрыв в направлении тренда.

  3. Испытывать параметры индивидуально для каждого прибора для определения оптимальных значений.

  4. Оптимизируйте вход, подумайте о входе в канал на середине линии прорыва.

  5. Увеличение размеров позиций при одновременном контроле общего риска/снятия.

Заключение

Стратегия ATR trailing stop непрерывно торгует трендами, динамично управляя рисками. Она подходит для волатильных инструментов и обеспечивает хорошее использование капитала. Оптимизация параметров и добавление фильтров могут еще больше улучшить производительность.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Investoz

//@version=4
strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(26, type=input.integer, minval=1, title="Length")
mul = input(1, type=input.float, minval=0, title="Length")
mullow = input(2, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2008, title = "From Year", minval = 2008)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk())
    strategy.entry("KOP", strategy.long, when=bull_cross)
    strategy.close("KOP", when=bear_cross)  
    strategy.entry("SALJ", strategy.short, when=bear_cross)
    strategy.close("SALJ", when=bull_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)

Больше