Стратегия реверсии тренда Ренко ATR - это уникальный торговый подход, который использует графики Ренко в сочетании с индикатором среднего истинного диапазона (ATR) для выявления точек реверсии тренда на финансовых рынках.
Стратегия сначала рассчитывает значение ATR за определенный период и использует этот ATR в качестве размера кирпича для диаграммы Ренко. Новые кирпичи Ренко выбираются, когда движение цен превышает один ATR. Таким образом, диаграмма Ренко может автоматически адаптироваться к волатильности рынка, с большими размерами кирпича для более высокой волатильности и меньшими размерами кирпича для периодов более низкой волатильности.
Сигнал покупки генерируется, когда открытая цена графика Ренко пересекает ниже цены закрытия. Наоборот, сигнал продажи генерируется, когда открытая цена пересекает цену закрытия. Эти сигналы обозначают потенциальные точки обратного тренда.
Стратегия динамически устанавливает уровни стоп-лосса и прибыли для каждой сделки в процентах от открытой цены Renko, на основе определенных пользователем параметров ввода.
Ручно рассчитывая цены открытия и закрытия, переокраска исключается, что делает сигналы более точными и своевременными.
Размер блока, основанный на ATR, позволяет стратегии автоматически адаптироваться к различным условиям волатильности рынка.
Динамический механизм установки уровней стоп-лосса и уровень получения прибыли позволяет лучше контролировать риск на основе волатильности рынка.
Диаграмма Ренко отфильтровывает рыночный шум и обеспечивает четкое визуальное обозрение для обнаружения обратных тенденций.
Пользователи должны оптимизировать такие параметры, как период ATR, процент остановки потери и процент получения прибыли для различных рыночных условий.
Крупные новостные события или выпуски политики могут привести к быстрому сдвигу с уровня остановки потерь или снижению уровня прибыли, что приводит к большим потерям.
В некоторых случаях сигнализируемая обратная картина может не осуществиться, что приводит к проигрышу сделок.
Более высокие временные рамки могут быть использованы для оценки направления общей тенденции.
Использование импульса, волатильности или других индикаторов в сочетании может улучшить качество сигнала и избежать ложных сигналов.
Коэффициент прибыли может быть динамически скорректирован на основе волатильности рынка и расстояния между начальной и текущей ценами.
Стратегия реверсии тренда Ренко ATR успешно использует графики Ренко с индикатором 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))