
Стратегия управляет риском, используя динамические остановки, рассчитывая показатель ATR в качестве линии остановки, создавая сигнал покупки, когда цена пересекает EMA, и сигнал продажи, когда цена пересекает EMA.
Основная логика этой стратегии заключается в следующем:
Вычисление показателя ATR в качестве линии стоп-лосса, значение ATR используется для расчета стоп-лосса nLoss
По умолчанию, для определения источника цены на основе опции Heikin Ashi h используется цена закрытия close, если выбран опция Heikin Ashi, то используется цена закрытия данной опции
Определение xATRTrailingStop как динамическая стоп-линия, которая определяет текущую стоп-линию K-линии на основе сравнения цены с предыдущей стоп-линией
Определение позиции pos, при переходе цены через остановку на 1 (сделать больше), при переходе цены через остановку на -1 (сделать меньше), в противном случае на 0 (сделать меньше)
Вычислить среднее значение линии EMA для K-линии, определяя показатель с верхним прохождением (покупающий сигнал) и нижним прохождением (продающий сигнал)
Настройка входа и выхода сделок при появлении сигналов покупки и продажи
Функция barcolor используется для обозначения цвета K-линий в зависимости от позиции
Знаки сигналов при покупке и продаже с помощью plotshape
Стратегия управляет риском с помощью динамического остановки ATR, позволяя вовремя войти в тренд и вовремя остановить его при попадании в линию остановки.
Эта стратегия имеет следующие преимущества:
Используя динамический стоп ATR, можно скорректировать стоп-дистанцию в зависимости от степени волатильности рынка, гарантируя стоп-убытки, но избегая слишком радикальных стопов, вызванных краткосрочными колебаниями цен
Используя EMA для создания торговых сигналов, можно отфильтровать ненужные сделки, вызванные некоторыми ложными прорывами.
Допускается выбор Heikin Ashi в качестве источника цены, чтобы отфильтровать шум для определения тенденций
Управление позициями четко, делать больше, чтобы сделать позиции четко, избегать частого отслеживания сделок, которые приводят к остановке убытков
Интуитивное отображение торговых сигналов и остановок с помощью чертежей, маркировки и окрашивания
Логика стратегии проста, понятна, легко понятна и изменяется
Настраиваемые ATR-циклы и ATR-стоп-лост-коэффициенты для различных рыночных условий
В целом, стратегия объединяет технологию отслеживания трендов и динамического остановки потерь, чтобы эффективно идентифицировать тенденции и управлять рисками.
Однако эта стратегия также несет в себе определенные риски:
EMA может задерживаться, упуская возможность короткой линии
Стоп-диапазон определяется ATR, который может быть частым при рыночных колебаниях
Двусторонние комиссионные в фактических сделках влияют на прибыль без учета затрат
Отсутствие надлежащего контроля за позициями, улучшение управления капиталом
Эффективность зависит от оптимизации параметров, которые необходимо скорректировать в разных рынках.
В то же время, на фоне резких колебаний рынка, они могут оказаться в ловушке.
Необходимость своевременного мониторинга, своевременного вмешательства или прекращения стратегии
Риск может быть уменьшен путем соответствующей оптимизации параметров, установки позиционного контроля, в сочетании с другими показателями фильтрационных сигналов и других методов. В реальном режиме торговли необходимо контролировать размер позиции, постоянно контролировать эффективность стратегии, в случае необходимости вмешаться или закрыть.
Эта стратегия может быть оптимизирована в следующих аспектах:
Корректировка ATR-параметров для более рационального использования стоп-дистанции на различных рынках
Тестирование различных равномерных показателей для дальнейшей фильтрации ложных сигналов
Добавление показателей для определения тенденции, определение направления тенденции и последующее вхождение в систему
Установка позиционного контроля, ограничение количества односторонних позиций
Условия для открытия позиции, такие как объем сделки, цена закрытия, отклоненная от средней
Учитывая затраты, устанавливайте стоп-дистанцию в зависимости от комиссионных
Оптимизация времени покупки и продажи в сочетании с множеством сигналов и индикаторов
Настройка частичного или подвижного торможения
Добавление функции оптимизации параметров, автоматическая оптимизация тестовых параметров
С помощью комплексного применения различных технических показателей и методов оптимизации, можно усовершенствовать эту стратегию и добиться более устойчивого эффекта на большем количестве рынков.
Стратегия, объединяющая динамические технологии остановки и отслеживания тенденций, имеет такие преимущества, как эффективное остановка, плавное отслеживание, легкость понимания и оптимизации, и применяется для отслеживания моделей средне-длинных тенденций. Но также следует обратить внимание на контроль риска, параметры оптимизации. Если правильно использовать эту стратегию, можно получить хороший эффект на рынках с заметной тенденцией. В целом, стратегия предоставляет краткую и практичную торговую идею для отслеживания тенденций и управления рисками.
/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="UT Bot Strategy", overlay = true)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol.
// Inputs
a = input(1, title = "Key Vaule. 'This changes the sensitivity'")
c = input(10, title = "ATR Period")
h = input(false, title = "Signals from Heikin Ashi Candles")
xATR = atr(c)
nLoss = a * xATR
src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close
xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss),
iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
pos = 0
pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
ema = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)
buy = src > xATRTrailingStop and above
sell = src < xATRTrailingStop and below
barbuy = src > xATRTrailingStop
barsell = src < xATRTrailingStop
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny)
barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)
strategy.entry("long", true, when = buy)
strategy.entry("short", false, when = sell)