В процессе загрузки ресурсов... загрузка...

Алгоритм многочасовой супертенденции динамического тренда

Автор:Чао Чжан, Дата: 2025-01-06 16:38:12
Тэги:ATRМТСЕМАРСИ

img

Обзор

Эта стратегия представляет собой адаптивную тенденционную систему, основанную на индикаторе Multi-Timeframe Supertrend. Она объединяет сигналы Supertrend из 15-минутных, 5-минутных и 2-минутных временных рамок для создания всеобъемлющей структуры идентификации трендов. Стратегия использует временной фильтр для обеспечения работы только во время наиболее активных торговых сессий и автоматически закрывает позиции в конце дня, чтобы избежать риска на ночь.

Принципы стратегии

Основной механизм основан на последовательности тренда в нескольких временных рамках для подтверждения торговых сигналов.

  1. Вычисляет линии супертенденции с использованием периода ATR и коэффициента множителя для каждого временного рамок.
  2. Триггеры покупают сигналы, когда бычьи условия выстраиваются на всех трех временных отрезках (цена выше линий супертенденции).
  3. Инициаторы продают сигналы, когда цена проходит ниже 5-минутной линии супертенденции или достигает конца торгового дня.
  4. Управляет часами торговли с помощью настроек часового пояса и фильтра сеанса (по умолчанию 09:30-15:30).

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

  1. Многомерное подтверждение тренда повышает надежность сигнала и снижает риски ложного прорыва.
  2. Адаптивные параметры Supertrend позволяют адаптировать стратегию к различным условиям волатильности рынка.
  3. Строгий механизм управления временем устраняет помехи от неэффективных периодов торговли.
  4. Ясный интерфейс визуализации отображает состояние тренда на всех временных отрезках.
  5. Гибкая система управления позициями поддерживает конфигурацию на основе процентов.

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

  1. Может генерировать чрезмерные торговые сигналы на различных рынках, увеличивая затраты на транзакции.
  2. Многочисленные условия фильтрации могут привести к упущенным прибыльным возможностям.
  3. Зависимость оптимизации параметров требует корректировки для различных рыночных условий.
  4. Высокая вычислительная сложность может привести к проблемам с эффективностью выполнения.

Руководство по оптимизации

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

Резюме

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


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Timeframe Supertrend Strategy", 
         overlay=true, 
         shorttitle="MTF Supertrend TF", 
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=50000, 
         currency=currency.USD)

// === Input Parameters === //
atrPeriod = input.int(title="ATR Period", defval=10, minval=1)
factor = input.float(title="Factor", defval=3.0, step=0.1)

// === Time Filter Parameters === //
// Define the trading session using input.session
// Format: "HHMM-HHMM", e.g., "0930-1530"
sessionInput = input("0930-1530", title="Trading Session")

// Specify the timezone (e.g., "Europe/Istanbul")
// Refer to the list of supported timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
timezoneInput = input.string("Europe/Istanbul", title="Timezone", tooltip="Specify a valid IANA timezone (e.g., 'Europe/Istanbul', 'America/New_York').")

// === Calculate Supertrend for Different Timeframes === //
symbol = syminfo.tickerid

// 15-Minute Supertrend
[st_15m, dir_15m] = request.security(symbol, "15", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 5-Minute Supertrend
[st_5m, dir_5m] = request.security(symbol, "5", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 2-Minute Supertrend
[st_2m, dir_2m] = request.security(symbol, "2", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// === Current Timeframe Supertrend === //
[st_current, dir_current] = ta.supertrend(factor, atrPeriod)

// === Time Filter: Check if Current Bar is Within the Trading Session === //
in_session = true

// === Define Trend Directions Based on Supertrend === //
is_up_15m = close > st_15m
is_up_5m  = close > st_5m
is_up_2m  = close > st_2m
is_up_current = close > st_current

// === Buy Condition === //
buyCondition = is_up_15m and is_up_5m and is_up_2m and is_up_current and in_session and strategy.position_size == 0

// === Sell Conditions === //
// 1. Price falls below the 5-minute Supertrend during trading session
sellCondition1 = close < st_5m

// 2. End of Trading Day: Sell at the close of the trading session
is_new_day = ta.change(time("D"))
sellCondition2 = not in_session and is_new_day

// Combined Sell Condition: Only if in Position
sellSignal = (sellCondition1 and in_session) or sellCondition2
sellCondition = sellSignal and strategy.position_size > 0

// === Execute Trades === //
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.close("Buy")

// === Plot Supertrend Lines === //
// Plotting current timeframe Supertrend
plot(st_current, title="Current TF Supertrend", color=is_up_current ? color.green : color.red, linewidth=2, style=plot.style_line)

// Plotting higher timeframe Supertrend lines
plot(st_15m, title="15m Supertrend", color=is_up_15m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_5m, title="5m Supertrend", color=is_up_5m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_2m, title="2m Supertrend", color=is_up_2m ? color.green : color.red, linewidth=1, style=plot.style_line)

// === Plot Buy and Sell Signals === //
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, 
          color=color.green, style=shape.labelup, text="BUY", size=size.small)

plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, 
          color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// === Optional: Background Color to Indicate Position === //
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : na, title="In Position Background")

// === Alerts === //
// Create alerts for Buy and Sell signals
alertcondition(buyCondition, title="Buy Alert", message="Buy signal generated by MTF Supertrend Strategy with Time Filter.")
alertcondition(sellCondition, title="Sell Alert", message="Sell signal generated by MTF Supertrend Strategy with Time Filter.")


Связанные

Больше