Стратегия разворота тренда на основе истинного диапазона среднего значения Ренко


Дата создания: 2024-02-01 14:30:24 Последнее изменение: 2024-02-01 14:30:24
Копировать: 0 Количество просмотров: 1467
1
Подписаться
1617
Подписчики

Стратегия разворота тренда на основе истинного диапазона среднего значения Ренко

Обзор

ATR Trend Reversal Strategy - уникальная торговая стратегия, которая использует график Ренко в сочетании с показателем ATR для идентификации обратных точек на финансовых рынках. Эта стратегия устраняет проблему задержки на графике Ренко и позволяет точно улавливать переломные точки, обеспечивая четкий сигнал для принятия торговых решений.

Стратегический принцип

Создание блока Renko

Эта стратегия сначала рассчитывает значение 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))