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

MTF Pivot TP SL
Дата создания: 2025-02-08 15:04:47 Последнее изменение: 2025-02-08 15:04:47
Копировать: 1 Количество просмотров: 412
1
Подписаться
1617
Подписчики

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

Обзор

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

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

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

  1. На более высоких временных промежутках (по умолчанию 60 минут) используется анализ точек оси, определяя условия формирования оси с помощью параметров leftBars и rightBars.
  2. Управление рисками и целями прибыли для каждой сделки с помощью динамически рассчитанного процента стоп-стоп-лосс.
  3. Многочасовой анализ дает более надежные оценки структуры рынка и снижает количество ложных сигналов.
  4. Механизм управления интервалом торгов ((по умолчанию 1440 минут) предотвращает чрезмерную торговлю и улучшает качество сигнала.
  5. Функция тестирования временного диапазона позволяет проводить проверку стратегии в определенном историческом диапазоне.

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2025-01-01 00:00:00
end: 2025-01-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Pivot Reversal Strategy with MTF TP & SL in Percent and Test Range", overlay=true)

// Входные параметры
higher_tf = input.timeframe("60", title="Higher Timeframe for Breakout Check")  // Таймфрейм для анализа пробоя
leftBars = input(4, title="Left Bars")
rightBars = input(2, title="Right Bars")
TP_percent = input.float(1.0, title="Take Profit (%)", minval=0.1, step=0.1)   // Тейк-профит в процентах
SL_percent = input.float(0.5, title="Stop Loss (%)", minval=0.1, step=0.1)    // Стоп-лосс в процентах
trade_interval = input.int(1440, title="Minimum Time Between Trades (Minutes)") // Интервал между сделками

// Диапазон тестирования (используем UNIX timestamps)
start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date")  // Стартовая дата для тестирования
end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date")    // Конечная дата для тестирования

// Проверка, попадает ли текущая свеча в указанный диапазон времени
in_test_range = true

// Определение пивотов на более крупном таймфрейме
higher_tf_high = request.security(syminfo.tickerid, higher_tf, ta.pivothigh(leftBars, rightBars))
higher_tf_low = request.security(syminfo.tickerid, higher_tf, ta.pivotlow(leftBars, rightBars))

// Последнее время открытия сделки
var float last_trade_time = na

// Логика для лонга
swh_cond = not na(higher_tf_high)
hprice = 0.0
hprice := swh_cond ? higher_tf_high : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if le and in_test_range and (na(last_trade_time) or (time - last_trade_time >= trade_interval * 60 * 1000))
    tp_price_long = hprice * (1 + TP_percent / 100)  // Тейк-профит в процентах
    sl_price_long = hprice * (1 - SL_percent / 100)  // Стоп-лосс в процентах
    strategy.entry("PivRevLE", strategy.long, stop=hprice + syminfo.mintick)
    strategy.exit("TP_SL_Long", from_entry="PivRevLE", 
                  limit=tp_price_long, 
                  stop=sl_price_long)
    last_trade_time := time

// Логика для шорта
swl_cond = not na(higher_tf_low)
lprice = 0.0
lprice := swl_cond ? higher_tf_low : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if se and in_test_range and (na(last_trade_time) or (time - last_trade_time >= trade_interval * 60 * 1000))
    tp_price_short = lprice * (1 - TP_percent / 100)  // Тейк-профит в процентах
    sl_price_short = lprice * (1 + SL_percent / 100)  // Стоп-лосс в процентах
    strategy.entry("PivRevSE", strategy.short, stop=lprice - syminfo.mintick)
    strategy.exit("TP_SL_Short", from_entry="PivRevSE", 
                  limit=tp_price_short, 
                  stop=sl_price_short)
    last_trade_time := time

// Для наглядности отображаем уровни на графике
plot(le and in_test_range ? hprice * (1 + TP_percent / 100) : na, color=color.green, title="Long Take Profit")
plot(le and in_test_range ? hprice * (1 - SL_percent / 100) : na, color=color.red, title="Long Stop Loss")
plot(se and in_test_range ? lprice * (1 - TP_percent / 100) : na, color=color.green, title="Short Take Profit")
plot(se and in_test_range ? lprice * (1 + SL_percent / 100) : na, color=color.red, title="Short Stop Loss")