Эта стратегия использует две остановки ATR с различными параметрами для установки динамических уровней стоп-лосса - одну быструю остановку и одну медленную остановку. Она устанавливает длинные позиции на основе ценового прорыва различных уровней стоп-лосса и выходит из позиций с использованием последующих остановок. Цель состоит в том, чтобы использовать остановки ATR для установки разумных уровней стоп-лосса, максимизируя при этом способность следовать за трендом.
Стратегия использует индикатор ATR для расчета двух уровней стоп-лосса. Быстрая остановка использует 5-периодный ATR умноженный на 0,5 как стоп-расстояние. Медленная остановка использует 10-периодный ATR умноженный на 3 как стоп-расстояние. Когда цена превышает уровень быстрой остановки, устанавливается длинная позиция.
Логика такова:
Вычислить быструю остановку Trail1: 5-периодный ATR * 0,5
Расчет медленной остановки Trail2: 10-периодный ATR * 3
Когда цена превышает Trail1, устанавливается длинная позиция.
Когда цена продолжает превышать Trail2, настроить остановку на Trail2
Если цена снизится, переходя через Trail1, настроить остановку обратно на Trail1
Если цена продолжает падать, превышая Трейл2, настроить остановку на Трейл2.
Наконец, если цена достигнет уровня остановки, выйти из позиции с остановкой потери
Таким образом, стратегия может максимизировать прибыль во время восходящих тенденций с последующими остановками, быстро останавливая потери, когда тенденция переходит в обратный путь.
Стойки ATR устанавливают динамические уровни стоп-лосса на основе волатильности рынка
Механизм двойной остановки балансирует между остановкой потерь и тенденцией снижения
Длинное направление соответствует общему восходящему тренду, более высокая рентабельность
Простая и понятная логика, легко понятная и реализуемая
Строгие правила стоп-лосса эффективно ограничивают потери
Неправильные параметры ATR могут привести к тому, что остановки будут слишком широкими или слишком тесными
Длинная направленность имеет направленную предвзятость, склонность к остановке на рынке вершины
Правила двойной остановки сложны, могут потерпеть неудачу, если не настроить правильно
Отсутствие фильтров, таких как перекрестки EMA, может привести к плохим сделкам.
Отсутствие управления позициями или рисками, риски переоценки
Эти риски могут быть уменьшены путем оптимизации параметров ATR, добавления фильтров и обеспечения управления рисками.
Оптимизировать комбинации параметров ATR для достижения наилучших результатов
Добавить фильтры, такие как EMA для квалификации сигналов входа
Включить такие индикаторы, как Stoch RSI для дополнительного преимущества
Добавить логику повторного входа для оптимизации управления позициями
Оптимизировать правила управления рисками для ограничения стоп-лосса на одну сделку
Включить аналитику на уровне рынка, чтобы избежать ошибок в направлении
Подумайте о более быстрых стратегиях временных рамок, таких как почасовые
Расширение на универсальную стратегию для многих рынков
Развернуть высокопроизводительный торговый двигатель
Благодаря этим улучшениям стратегия может стать более надежной, стабильной и прибыльной.
Стратегия использует четкие остановки 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)