Динамическая стратегия остановки

Автор:Чао Чжан, Дата: 2024-02-27 15:02:34
Тэги:

img

Обзор

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

Логика стратегии

Стратегия в основном использует 3 показателя: самую высокую цену, самую низкую цену и цену закрытия.longoffsetдля длинной задержки иshortoffsetДолгая дистанция по умолчанию составляет 228,5 балла, а короткая - 243,5 балла.

Затем стратегия использует следующую логику для корректировки цены остановкиtrailstop:

  • Если самая низкая цена последней свечи ниже цены последней свечи, а самая низкая цена свечи до нее выше цены последней две свечи, то цена последней свечи = цена закрытия + расстояние последней остановки

  • Если самая высокая цена последней свечи выше цены последней свечи, а самая высокая цена свечи до нее ниже цены последней две свечи, то цена последней свечи = цена закрытия - длинное расстояние последней остановки.

  • Если самая высокая цена последней свечи выше цены последней свечи, то цена последней свечи = max ((предыдущая цена последней свечи, самая высокая цена последней свечи - длинное расстояние последней остановки)

  • Если самая низкая цена последней свечи ниже цены последней свечи, то цена последней свечи = min ((предыдущая цена последней свечи, самая низкая цена последней свечи + короткое расстояние последней остановки)

  • В противном случае текущая цена остановки отслеживания свечи = цена закрытия

Это позволяет динамически корректировать цену остановки на основе изменений в самых высоких и самых низких рыночных ценах для достижения динамических остановок.

Анализ преимуществ

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

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

Наконец, логика стоп-лосса этой стратегии проста и ясна, легко понятна, и ее легко развивать и интегрировать в другие стратегии.

Анализ рисков

Основными рисками этой стратегии являются:

  1. Динамические остановки могут только уменьшить потери в нормальных рыночных условиях, но не могут выдержать крупные события или экстремальные рыночные условия.

  2. Если расстояние от заднего стопа установлено слишком большим, это может привести к большим потерям. Если установлено слишком мало, это может привести к преждевременному остановке. Настройка требует тщательного тестирования и оптимизации на основе характеристик продукта.

  3. В первые несколько свечей после открытия позиции, из-за механизма отставания, дистанция отставания может быть слишком большой, что создает дополнительный риск в течение этого периода.

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизация параметров для различных продуктов: Выберите разумные длинные и короткие расстояния остановки на основе волатильности, внутридневного диапазона и других показателей для различных продуктов.

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

  3. Включайте индикаторы объема торговли: например, сократите расстояние остановки во время скачков объема, чтобы избежать остановки арбитражем.

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

Заключение

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


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//By River
strategy("BitMex Trailing Stop Strategy", overlay=true)
longoffset = input(defval=228.5, title="Long Trailing Stop Size", type=float, minval=0.5, maxval=1000, step=0.5)
shortoffset = input(defval=243.5, title="Short Trailing Stop Size ", type=float, minval=0.5, maxval=1000, step=0.5)

hiprice = request.security(syminfo.tickerid, "1", high)
loprice = request.security(syminfo.tickerid, "1", low)
price = request.security(syminfo.tickerid, "1", close)

trailstop = price
trailstop := (loprice <= trailstop[1] and loprice[1] >= trailstop[2]) ? price + shortoffset : ((hiprice >= trailstop[1] and hiprice[1] <= trailstop[2]) ? price - longoffset : (hiprice > trailstop[1] ? max(hiprice - longoffset, trailstop[1]) : (loprice < trailstop[1] ? min(loprice + shortoffset, trailstop[1]) : price)))

trailcol = trailstop > price ? red : green
plot(trailstop, color=trailcol)

longCondition =  trailcol == green
alertcondition(longCondition, "Long Stop alert", "BUY")
if (longCondition)
    strategy.entry("Long", strategy.long)
shortCondition = trailcol == red
alertcondition(shortCondition, "Short alert", "SELL")
if (shortCondition)
    strategy.entry("Short", strategy.short)



Больше