Стратегия следования за трендом ATR


Дата создания: 2023-09-28 11:32:09 Последнее изменение: 2023-09-28 11:32:09
Копировать: 0 Количество просмотров: 795
1
Подписаться
1617
Подписчики

Обзор

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

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

Сначала стратегия рассчитывает простые скользящие средние цены sma и индексные скользящие средние ema. Затем рассчитывает показатель ATR, то есть средний диапазон колебаний за последние N дней.

Стратегия определяет направление тренда с помощью средней линии эма, верхней линии ((эма + ATR * коэффициент) и нижней линии ((эма - ATR * коэффициент). Когда цена входит в верхнюю часть, делайте больше; когда цена входит в нижнюю часть, делайте пустое.

Основная логика:

  1. Вычислить средние цены SMA и EMA
  2. Расчет среднего диапазона колебаний ATR
  3. Вычисление верхней и нижней полос
  4. Повышение цены на бензин
  5. Сигналы об убывании: цены вниз по линии
  6. Установка стоп-позиции: вниз по цене входит в орбиту плоская линия; вверх вниз по цене входит в орбиту плоская линия

Динамическая корректировка позиций с помощью ATR позволяет эффективно отслеживать тенденции Directions

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

  1. Использование ATR для определения направления тенденции позволяет эффективно улавливать ценовые тенденции
  2. Стоп-лосс на основе средней величины, позволяющий разумно контролировать риск
  3. Логика стратегии проста, ясна и понятна
  4. Настраиваемые параметры гибкие для различных рыночных условий

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

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

Решение проблемы:

  1. При значительных рыночных колебаниях следует приостановить стратегию или использовать другие показатели.
  2. Оптимизация параметров, снижение частоты открытия позиций
  3. Повышение Stop Loss Rate для важных событий
  4. Склонение ATR в зависимости от разновидности

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

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

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

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

Исходный код стратегии
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
basePeriod: 15m
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(2.618, type=input.float, minval=0, title="Length")
mullow = input(2.386, 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()) and ema(close,1) > ema(close,528)
    strategy.entry("KOP", strategy.long, when=bull_cross) 
    strategy.close("KOP", when=bear_cross)  
if (startTimeOk()) and ema(close,1) < ema(close,528)
   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)