
ATR Trend Reversal Strategy - уникальная торговая стратегия, которая использует график Ренко в сочетании с показателем ATR для идентификации обратных точек на финансовых рынках. Эта стратегия устраняет проблему задержки на графике Ренко и позволяет точно улавливать переломные точки, обеспечивая четкий сигнал для принятия торговых решений.
Эта стратегия сначала рассчитывает значение ATR в течение определенного периода и на основе этого ATR устанавливает размер блока на графике Ренко. Когда цена меняется более одного ATR, рисуется новый блок Ренко. Таким образом, график Ренко может автоматически адаптироваться к уровню волатильности рынка, устанавливая больший размер блока при высокой волатильности и меньший размер блока при низкой волатильности.
Когда Renko начинает торговать ниже цены закрытия, создается сигнал покупки; когда Renko начинает торговать выше цены закрытия, создается сигнал продажи. Эти сигналы указывают на потенциальный поворот тренда.
Стратегия устанавливает стоп-стоп и стоп-стоп цены для каждой сделки в зависимости от стоп-лосса и стоп-стопа, которые определяются пользователем, с использованием цены открытия Ренко в качестве базовой динамики, чтобы контролировать риск и прибыль для каждой сделки.
Эта стратегия устраняет проблемы с задержкой на графике путем ручного вычисления цены открытия и закрытия Ренко, что позволяет создавать более точные и своевременные сигналы.
Настройка блочного размера Renko на основе показателя ATR позволяет стратегии автоматически адаптироваться к колебаниям цен в разных рыночных условиях.
Стратегия устанавливает динамические механизмы стоп-лосса и стоп-стопа для каждой сделки, позволяя контролировать риск в зависимости от степени волатильности рынка.
Карта Renko сама по себе снимает рыночный шум и обеспечивает четкий визуальный эффект, позволяющий распознавать перемены в тренде.
Пользователям необходимо оптимизировать параметры ATR-циклов, стоп-процентов и стоп-процентов, чтобы адаптироваться к различным рыночным условиям. Неправильная настройка параметров может привести к неэффективности стратегии.
Крупные экономические события или политические решения могут привести к быстрому увеличению объемов, что приведет к потере большего количества средств.
В некоторых случаях обратная тенденция, предсказанная торговыми сигналами, может быть неудачной и не способствовать движению цены в обратную сторону, что приводит к убыткам.
Можно оценивать большие тенденции на более высоких временных периодах, чтобы избежать обратной торговли. Также можно отфильтровывать ложные сигналы на более низких временных периодах.
Использование в сочетании с динамическими индикаторами, показателями частоты колебаний и т. д. может улучшить качество сигнала и избежать ошибочного сигнала.
Процент остановки может быть динамически скорректирован в зависимости от степени волатильности рынка и расстояния от последней цены до точки входа.
Стратегия реверса, основанная на средней реальной величине волн Renko, успешно использует график Renko в сочетании с показателем ATR для автоматической идентификации переломных точек в финансовых рынках. Эта стратегия имеет такие преимущества, как устранение задержки, автоматическое адаптация к волатильности рынка и динамические стоп-стопы.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='[tradinghook] - Renko Trend Reversal Strategy', shorttitle='[tradinghook] - Renko TRS', overlay=true ,initial_capital = 100, commission_value = 0.05, default_qty_value = 5)
// INPUTS
renkoATRLength = input.int(10, minval=1, title='ATR Length')
stopLossPct = input.float(3, title='Stop Loss Percentage', step=0.1)
takeProfitPct = input.float(20, title='Take Profit Percentage', step=0.1)
startDate = input(timestamp("01 July 2023 00:00"), title="Start Date")
endDate = input(timestamp("31 Dec 2025 23:59"), title="End Date")
enableShorts = input.bool(true, title="Enable Shorts")
var float stopLossPrice = na
var float takeProfitPrice = na
atr = ta.atr(renkoATRLength)
// thanks to https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/ for manually calculating renkoClose and renkoOpen in order to remove repaint
getRenkoClose() =>
p1 = 0.0
p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1])
p1
Renko3() =>
p3 = 0.0
p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1])
p3
getRenkoOpen() =>
open_v = 0.0
Br_2 = Renko3()
open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1])
open_v
renkoOpen = getRenkoOpen()
renkoClose = getRenkoClose()
// COLORS
colorGreen = #089981
colorRed = #F23645
bgTransparency = 95
bgColorRed = color.new(colorRed, bgTransparency)
bgColorGreen = color.new(colorGreen, bgTransparency)
lineColor = renkoClose < renkoOpen ? colorRed : colorGreen
bgColor = renkoClose < renkoOpen ? bgColorRed : bgColorGreen
// PLOTS
plot(renkoOpen, title="Renko Open", style=plot.style_line, linewidth=2, color=lineColor)
bgcolor(bgColor)
// SIGNALS
isWithinTimeRange = true
buySignal = ta.crossunder(renkoOpen, renkoClose) and isWithinTimeRange
sellSignal = ta.crossover(renkoOpen, renkoClose) and isWithinTimeRange and enableShorts
if (buySignal)
stopLossPrice := renkoOpen * (1 - stopLossPct / 100)
takeProfitPrice := renkoOpen * (1 + takeProfitPct / 100)
strategy.entry("Long", strategy.long)
strategy.exit("ExitLong", "Long", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))
if (sellSignal)
stopLossPrice := renkoOpen * (1 + stopLossPct / 100)
takeProfitPrice := renkoOpen * (1 - takeProfitPct / 100)
strategy.entry("Short", strategy.short)
strategy.exit("ExitShort", "Short", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))