Стратегия следования за трендом на основе нескольких индикаторов в сочетании с динамической системой торговли по каналам и скользящим средним

EMA ATR
Дата создания: 2024-12-12 15:58:57 Последнее изменение: 2024-12-12 15:58:57
Копировать: 0 Количество просмотров: 376
1
Подписаться
1617
Подписчики

Стратегия следования за трендом на основе нескольких индикаторов в сочетании с динамической системой торговли по каналам и скользящим средним

Обзор

Стратегия представляет собой многопоказательную торговую систему, которая сочетает в себе G-Channel, индексную подвижную среднюю (EMA) и реальную волатильность (ATR). Она идентифицирует торговые сигналы с помощью динамических уровней поддержки/сопротивления и подтверждения тенденций, а также управляет риском с помощью остановок и остановок на основе ATR. Система разработана с учетом надежности и контроля риска и подходит для трейдеров, которые ищут стабильный метод торговли.

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

Основная логика стратегии основана на следующих ключевых компонентах:

  1. G-канал рассчитывает динамические уровни поддержки и сопротивления, постоянно корректируя по математическим формулам движение вверх и вниз по рельсам
  2. EMA используется для определения направления общей тенденции, а положение цены относительно EMA определяет направление торговли
  3. Входящий сигнал основан на прорыве G-канала и подтверждении местоположения EMA
  4. Установка остановок и остановок с использованием множества ATR, остановка - 2 ATR, остановка - 4 ATR
  5. Предотвращение последовательности повторяющихся сигналов с помощью отслеживания состояния

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

  1. Многоуровневый механизм подтверждения сигналов повышает надежность транзакций
  2. Динамично измененные границы каналов для различных рыночных условий
  3. Управление рисками на основе волатильности более адаптивно
  4. Избегание повторения сигналов снижает риск переплаты
  5. Визуально четкие торговые маркировки для анализа и отслеживания

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("G-Channel with EMA Strategy and ATR SL/TP", shorttitle="G-EMA-ATR", overlay=true)

// Input parameters
length = input.int(100, title="G-Channel Length")
src = input.source(close, title="Source")
ema_length = input.int(50, title="EMA Length")  // EMA length
atr_length = input.int(14, title="ATR Length")  // ATR length

// G-Channel calculation
var float a = na
var float b = na
a := math.max(src, nz(a[1])) - nz(a[1] - b[1]) / length
b := math.min(src, nz(b[1])) + nz(a[1] - b[1]) / length
avg = (a + b) / 2

// G-Channel cross conditions
crossup = b[1] < close[1] and b > close
crossdn = a[1] < close[1] and a > close
bullish = ta.barssince(crossdn) <= ta.barssince(crossup)
c = bullish ? color.lime : color.red

// EMA calculation
ema_value = ta.ema(src, ema_length)

// ATR calculation
atr_value = ta.atr(atr_length)

// Plot G-Channel average and Close price
p1 = plot(avg, "G-Channel Average", color=c, linewidth=1, transp=90)
p2 = plot(close, "Close Price", color=c, linewidth=1, transp=100)
fill(p1, p2, color=c, transp=90)

// Plot EMA
plot(ema_value, color=color.blue, linewidth=2, title="EMA")

// Buy and Sell conditions
buy_condition = bullish and close < ema_value
sell_condition = not bullish and close > ema_value

// Track the last signal state
var bool last_was_buy = false
var bool last_was_sell = false

// ATR-based SL and TP calculations
long_sl = close - 2 * atr_value  // 2 ATR below the entry for SL
long_tp = close + 4 * atr_value  // 4 ATR above the entry for TP
short_sl = close + 2 * atr_value // 2 ATR above the entry for SL (short)
short_tp = close - 4 * atr_value // 4 ATR below the entry for TP (short)

// Generate Buy signal only if the last signal was not Buy
if (buy_condition and not last_was_buy)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", from_entry="Buy", stop=long_sl, limit=long_tp)
    last_was_buy := true
    last_was_sell := false

// Generate Sell signal only if the last signal was not Sell
if (sell_condition and not last_was_sell)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", from_entry="Sell", stop=short_sl, limit=short_tp)
    last_was_sell := true
    last_was_buy := false

// Plot shapes for Buy and Sell signals
plotshape(series=buy_condition and not last_was_buy, location=location.belowbar, style=shape.labelup, color=color.lime, size=size.small, text="Buy", textcolor=color.white)
plotshape(series=sell_condition and not last_was_sell, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.small, text="Sell", textcolor=color.white)