- Площадь
- Стратегия ATR Trailing Stop на основе UT Bot Indicator
Стратегия ATR Trailing Stop на основе UT Bot Indicator
Автор:
Чао Чжан, Дата: 2024-03-11 11:17:33
Тэги:
Обзор
Эта стратегия основана на индикаторе UT Bot, разработанном QuantNomad, и включает в себя идею последующей остановки потери. Оригинальный код был написан @Yo_adriiiiaan и изменен @HPotter. Стратегия будет использоваться совместно с концепциями Smart Money LuxAlgo. В настоящее время стратегия находится на стадии тестирования.
Принцип стратегии
Основными принципами этой стратегии являются следующие:
- Когда цена закрытия выше, чем 50-периодная простая скользящая средняя, вводится длинная сделка.
- Для длинных позиций устанавливается цена последнего стоп-лосса. Цена последнего стоп-лосса составляет 80% (1-20%) от текущей цены закрытия.
- Для коротких позиций также устанавливается цена последнего стоп-лосса. Цена последнего стоп-лосса составляет 120% (1+20%) от текущей цены закрытия.
- ATR (средний истинный диапазон) используется в качестве отсчета для остановки. Метод расчета цены остановки ATR заключается в следующем: при движении вверх, возьмите большую из предыдущей цены остановки ATR и (текущая цена закрытия - ATR * Ключевое значение); при движении вниз, возьмите меньшую из предыдущей цены остановки ATR и (текущая цена закрытия + ATR * Ключевое значение).
- На основе прорыва цены ATR trailing stop определяется направление текущей позиции. Когда цена превышает цену ATR trailing stop, удерживается длинная позиция; когда цена превышает цену ATR trailing stop, удерживается короткая позиция; в других случаях статус текущей позиции остается неизменным.
Анализ преимуществ
- Установка последней остановки может эффективно защитить прибыль, позволяя стратегии получать больше прибыли на трендовых рынках.
- Установление стоп-лосса отдельно для длинных и коротких позиций может адаптироваться к различным рыночным условиям.
- Использование ATR в качестве ориентира для стоп-лосса позволяет динамически регулировать положение стоп-лосса, делая его более гибким и эффективным.
- Параметр ключевого значения предоставляется для оптимизации пользователя, который может быть скорректирован в соответствии с различными сортами и циклами для улучшения адаптивности.
Анализ рисков
- На нестабильных рынках частые остановки могут привести к чрезмерному количеству сделок, увеличению комиссионных и снижению доходности.
- Метод фиксированного процентного отставания является относительно простым и может быть не в состоянии хорошо справиться с колебаниями цен в некоторых рыночных условиях.
- В стратегии рассматриваются только остановки и не устанавливаются цели по снижению прибыли, которые могут упустить некоторые возможности получения прибыли.
- Выбор параметров оказывает значительное влияние на эффективность стратегии, а ненадлежащие параметры могут привести к увеличению рисков использования.
Направление оптимизации
- Другие показатели или условия, такие как объем торговли и волатильность, могут рассматриваться для оптимизации условий входа и повышения надежности сигналов.
- Для метода расчета отставания можно исследовать более сложные и эффективные методы, такие как использование параболического стоп-лосса или динамического процентного стоп-лосса.
- При этом, в частности, можно использовать механизм целевой прибыли, который позволяет установить динамические целевые прибыли на основе ATR или процентов, чтобы лучше зафиксировать прибыль.
- Оптимизация параметров может быть выполнена для различных сортов и циклов, чтобы найти наиболее подходящие комбинации параметров.
Резюме
Основанная на индикаторе UT Bot, эта стратегия включает в себя логику остановки, которая может защитить прибыль на трендовых рынках. В то же время стратегия устанавливает остановки потерь отдельно для длинных и коротких позиций, что делает ее очень адаптивной. Использование ATR в качестве ориентира для остановки остановки позволяет динамически регулировать позицию остановки, улучшая гибкость. Однако эта стратегия может столкнуться с риском высоких затрат на транзакции из-за частых остановок на неуравновешенных рынках, и ей не хватает задания целевой прибыли, которая может упустить возможности получения прибыли. Кроме того, выбор параметров оказывает значительное влияние на производительность стратегии.
В будущем стратегия может быть улучшена путем оптимизации условий входа, изучения более сложных методов отставания, добавления механизма целевой прибыли отставания и оптимизации параметров для различных сортов и циклов, чтобы получить более стабильную доходность.
/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Trailingstop", overlay=true)
if close > sma(close, 50)
strategy.entry("long", strategy.long)
// Trailing stop loss for long positions
Trailperc = 0.20
price_stop_long = 0.0
if (strategy.position_size > 0)
stopValue = close * (1 - Trailperc)
price_stop_long := max(stopValue, price_stop_long[1])
else
price_stop_long := 0
if (strategy.position_size > 0)
strategy.exit(id="stoploss_long", stop=price_stop_long)
// Trailing stop loss for short positions
Trailperc_short = 0.20
price_stop_short = 0.0
if (strategy.position_size < 0)
stopValue_short = close * (1 + Trailperc_short)
price_stop_short := min(stopValue_short, price_stop_short[1])
else
price_stop_short := 0
if (strategy.position_size < 0)
strategy.exit(id="stoploss_short", stop=price_stop_short)
// ATR Trailing Stop for visualization
keyvalue = input(3, title="Key Value. 'This changes the sensitivity'", step=0.5)
atrperiod = input(10, title="ATR Period")
xATR = atr(atrperiod)
nLoss = keyvalue * xATR
xATRTrailingStop = 0.0
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos = 0
pos := iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
plot(xATRTrailingStop, color = xcolor, title = "Trailing Stop")
Больше