Адаптивная стратегия стоп-профит и стоп-лосс на основе баланса трейлинг-ретрейсинга

OCA GAP
Дата создания: 2024-12-12 14:25:36 Последнее изменение: 2024-12-12 14:25:36
Копировать: 2 Количество просмотров: 413
1
Подписаться
1617
Подписчики

Адаптивная стратегия стоп-профит и стоп-лосс на основе баланса трейлинг-ретрейсинга

Обзор

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

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

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

  1. Механизм трейдинга в пробелах: выявление пробелов вверх и вниз, установка стоп-листов в месте пробела
  2. Тренд-трек: направление тренда на основе отношения цены открытия и цены закрытия
  3. Пирамидальный залог: разрешено держать до 100 ордеров в одном направлении
  4. Динамический стоп-стоп: динамически настроенный стоп-стоп на основе средней цены за позицию
  5. Управление ордерами OCA: использование портфельных ордеров OCA для обеспечения взаимоисключения стоп-стоп и стоп-лосс
  6. Ограничение в однодневных сделках: управление рисками путем установления максимального количества ордеров в однодневных сделках

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

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

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

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

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

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

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

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

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

//@version=5
strategy("Greedy Strategy - maclaurin", pyramiding = 100, calc_on_order_fills=false, overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
backtestStartDate = input(timestamp("1 Jan 1990"),
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " +
     "where the chart's instrument trades. It doesn't use the time " +
     "zone of the chart or of your computer.")
backtestEndDate = input(timestamp("1 Jan 2023"),
     title="End Date", group="Backtest Time Period",
     tooltip="This end date is in the time zone of the exchange " +
     "where the chart's instrument trades. It doesn't use the time " +
     "zone of the chart or of your computer.")
inTradeWindow = true
tp = input(10)
sl = input(10)
maxidf = input(title="Max Intraday Filled Orders", defval=5)
// strategy.risk.max_intraday_filled_orders(maxidf)
upGap = open > high[1]
dnGap = open < low[1]
dn = strategy.position_size < 0 and open > close
up = strategy.position_size > 0 and open < close
if inTradeWindow and upGap
    strategy.entry("GapUp", strategy.long, stop = high[1])
else
    strategy.cancel("GapUp")
if inTradeWindow and dn
    strategy.entry("Dn", strategy.short, stop = close)
else
    strategy.cancel("Dn")
if inTradeWindow and dnGap
    strategy.entry("GapDn", strategy.short, stop = low[1])
else
    strategy.cancel("GapDn")
if inTradeWindow and up
    strategy.entry("Up", strategy.long, stop = close)
else
    strategy.cancel("Up")
XQty = strategy.position_size < 0 ? -strategy.position_size : strategy.position_size
dir = strategy.position_size < 0 ? -1 : 1
lmP = strategy.position_avg_price + dir*tp*syminfo.mintick
slP = strategy.position_avg_price - dir*sl*syminfo.mintick
float nav = na
revCond = strategy.position_size > 0 ? dnGap : (strategy.position_size < 0 ? upGap : false)
if inTradeWindow and not revCond and XQty > 0
    strategy.order("TP", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, lmP, nav, "TPSL",  "TPSL")
    strategy.order("SL", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, nav, slP, "TPSL", "TPSL")
if XQty == 0 or revCond
    strategy.cancel("TP")
    strategy.cancel("SL")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)