Стратегия ATR Trailing Stop (только длинная)

Автор:Чао Чжан, Дата: 2023-11-02 14:05:22
Тэги:

img

Обзор

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

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

Стратегия использует индикатор ATR для расчета двух уровней стоп-лосса. Быстрая остановка использует 5-периодный ATR умноженный на 0,5 как стоп-расстояние. Медленная остановка использует 10-периодный ATR умноженный на 3 как стоп-расстояние. Когда цена превышает уровень быстрой остановки, устанавливается длинная позиция.

Логика такова:

  1. Вычислить быструю остановку Trail1: 5-периодный ATR * 0,5

  2. Расчет медленной остановки Trail2: 10-периодный ATR * 3

  3. Когда цена превышает Trail1, устанавливается длинная позиция.

  4. Когда цена продолжает превышать Trail2, настроить остановку на Trail2

  5. Если цена снизится, переходя через Trail1, настроить остановку обратно на Trail1

  6. Если цена продолжает падать, превышая Трейл2, настроить остановку на Трейл2.

  7. Наконец, если цена достигнет уровня остановки, выйти из позиции с остановкой потери

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

Преимущества

  1. Стойки ATR устанавливают динамические уровни стоп-лосса на основе волатильности рынка

  2. Механизм двойной остановки балансирует между остановкой потерь и тенденцией снижения

  3. Длинное направление соответствует общему восходящему тренду, более высокая рентабельность

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

  5. Строгие правила стоп-лосса эффективно ограничивают потери

Риски

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

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

  3. Правила двойной остановки сложны, могут потерпеть неудачу, если не настроить правильно

  4. Отсутствие фильтров, таких как перекрестки EMA, может привести к плохим сделкам.

  5. Отсутствие управления позициями или рисками, риски переоценки

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

Области улучшения

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

  2. Добавить фильтры, такие как EMA для квалификации сигналов входа

  3. Включить такие индикаторы, как Stoch RSI для дополнительного преимущества

  4. Добавить логику повторного входа для оптимизации управления позициями

  5. Оптимизировать правила управления рисками для ограничения стоп-лосса на одну сделку

  6. Включить аналитику на уровне рынка, чтобы избежать ошибок в направлении

  7. Подумайте о более быстрых стратегиях временных рамок, таких как почасовые

  8. Расширение на универсальную стратегию для многих рынков

  9. Развернуть высокопроизводительный торговый двигатель

Благодаря этим улучшениям стратегия может стать более надежной, стабильной и прибыльной.

Резюме

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


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

//@version=4
strategy("ATR Trailing Stop Strategy (Long Position Only)", overlay=true)

SC = input(close, "Source", input.source)

// Fast Trail
AP1 = input(5, "Fast ATR period", input.integer)
AF1 = input(0.5, "Fast ATR multiplier", input.float)
SL1 = AF1 * atr(AP1)
Trail1 = 0.0
Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0), SC + SL1, na))

// Slow Trail
AP2 = input(10, "Slow ATR period", input.integer)
AF2 = input(3, "Slow ATR multiplier", input.float)
SL2 = AF2 * atr(AP2)
Trail2 = 0.0
Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0), SC + SL2, na))

Green = Trail1 > Trail2 and close > Trail2 and low > Trail2

Buy = crossover(Trail1, Trail2)

plotshape(Buy, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)

strategy.entry("Buy", strategy.long, when = Buy)

var float trailingStopPrice = na
if (Trail2 > trailingStopPrice)
    trailingStopPrice := Trail2

if (crossover(Trail1, Trail2))
    trailingStopPrice := Trail2

strategy.exit("Exit", from_entry = "Buy", stop=trailingStopPrice)


Больше