Многоуровневая цель прибыли и динамический стоп-лосс, улучшенная количественная стратегия

TP SL ML QS AT EXIT ENTRY
Дата создания: 2025-02-20 11:36:09 Последнее изменение: 2025-02-20 14:56:34
Копировать: 1 Количество просмотров: 314
2
Подписаться
319
Подписчики

Многоуровневая цель прибыли и динамический стоп-лосс, улучшенная количественная стратегия Многоуровневая цель прибыли и динамический стоп-лосс, улучшенная количественная стратегия

Обзор

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

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

Основная логика стратегии строится вокруг многоуровневого механизма выхода. В отношении входа, стратегия запускает многозадачные и пустые торговые сигналы через два источника входа longEntry и shortEntry. Для каждого торгового направления стратегия устанавливает три независимых цели получения прибыли (TP1, TP2, TP3), каждая из которых может быть динамически скорректирована на основе внешних сигналов индикаторов.

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

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

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

  1. Риск зависимости от сигнала: стратегия сильно зависит от качества внешнего индикаторного сигнала, который может привести к ошибочным сделкам.
  2. Риск оптимизации параметров: необходимо тщательно оптимизировать несколько целевых показателей прибыли и параметров остановки убытков, а чрезмерная оптимизация может привести к перенастройке.
  3. Риск адаптации к рыночной среде: фиксированные многоуровневые цели прибыли могут быть недостаточно гибкими в различных рыночных условиях.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2025-02-04 00:00:00
end: 2025-02-18 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Enhanced Strategy Tester with multi TP and SL Trigger", overlay=true, margin_long=100, margin_short=100)

// Entry Signals
longEntry = input.source(close, 'Long Entry Trigger', 'long signal source')
shortEntry = input.source(close, 'Short Entry Trigger', 'short signal source')

// Exit Triggers
activateLongExit = input.bool(false, 'Activate Long Exit Signals')
longExit1 = input.source(high, 'Long Exit TP1')
longExit2 = input.source(high, 'Long Exit TP2')
longExit3 = input.source(high, 'Long Exit TP3')

activateShortExit = input.bool(false, 'Activate Short Exit Signals')
shortExit1 = input.source(low, 'Short Exit TP1')
shortExit2 = input.source(low, 'Short Exit TP2')
shortExit3 = input.source(low, 'Short Exit TP3')

// Stop Loss from External Indicator
useSLSignal = input.bool(false, 'Activate SL Signal')
slSignal = input.source(low, 'SL', 'SL Signal Source')

// Long Entry Condition
longCondition = not na(longEntry) and longEntry > 0
if (longCondition and strategy.opentrades == 0)
    strategy.entry('long', strategy.long)
    strategy.exit('exit_long_tp1', 'long', limit=longExit1, comment='TP1 hit')
    strategy.exit('exit_long_tp2', 'long', limit=longExit2, comment='TP2 hit')
    strategy.exit('exit_long_tp3', 'long', limit=longExit3, comment='TP3 hit')
    strategy.exit('exit_long_sl', 'long', stop=useSLSignal ? slSignal : na, comment='SL hit')

// Long Exit Condition
if (activateLongExit)
    if (not na(longExit1) and longExit1 > 0)
        strategy.close('long', comment='TP1 at Exit')
    if (not na(longExit2) and longExit2 > 0)
        strategy.close('long', comment='TP2 at Exit')
    if (not na(longExit3) and longExit3 > 0)
        strategy.close('long', comment='TP3 at Exit')

// Short Entry Condition
shortCondition = not na(shortEntry) and shortEntry > 0
if (shortCondition and strategy.opentrades == 0)
    strategy.entry('short', strategy.short)
    strategy.exit('exit_short_tp1', 'short', limit=shortExit1, comment='TP1 hit')
    strategy.exit('exit_short_tp2', 'short', limit=shortExit2, comment='TP2 hit')
    strategy.exit('exit_short_tp3', 'short', limit=shortExit3, comment='TP3 hit')
    strategy.exit('exit_short_sl', 'short', stop=useSLSignal ? slSignal : na, comment='SL hit')

// Short Exit Condition
if (activateShortExit)
    if (not na(shortExit1) and shortExit1 > 0)
        strategy.close('short', comment='TP1 at Exit')
    if (not na(shortExit2) and shortExit2 > 0)
        strategy.close('short', comment='TP2 at Exit')
    if (not na(shortExit3) and shortExit3 > 0)
        strategy.close('short', comment='TP3 at Exit')