Стратегия движущихся средних по уровню - это стратегия торговли, основанная на диаграммах RENKO. Она использует индикаторы движущихся средних для сглаживания цены и перекрестных переходов между движущимися средними различных временных рамок в качестве торговых сигналов. Между тем, она также использует индикатор ATR для определения уровней остановки потери для более разумных остановок.
Основная логика этой стратегии включает в себя:
Использование ввода для выбора временных рамок RENKO и периода ATR
Вычислить цену и цвет RENKO. Переключитесь вверх, когда цена превышает предыдущую цену RENKO плюс текущий ATR. Переключитесь вниз, когда цена падает ниже предыдущей цены RENKO минус текущий ATR.
Используйте два целых числа BUY и SELL для записи текущих длинных и коротких позиций.
Если нет короткой позиции, то займите длинную, если уже короткая, то закрывайте короткую позицию. Если нет длинной позиции, то перейдите на короткую, если уже длинная, то закрывайте длинную позицию.
График РЕНКО с использованием графика.
С этой логикой стратегия может открывать длинные или короткие позиции, когда цена превышает предыдущий уровень, и закрывать позиции, когда цена переворачивается.
Эта стратегия имеет следующие преимущества:
RENKO фильтрует шум и выявляет тенденции RENKO может эффективно отфильтровывать шум цен и идентифицировать значимые тенденции.
Кроссоверы скользящих средних генерируют торговые сигналы Кроссоверы между скользящими средними за разные временные рамки могут обеспечить надежные торговые сигналы и избежать ложных сигналов от шума.
Динамические остановки с ATR Использование ATR для динамического установления стоп-лосса может сделать стопы более разумными на основе текущей волатильности, избегая стопов слишком широких или слишком узких.
Сочетание тенденции и скользящей средней Сочетание индикаторов тренда и скользящей средней использует сильные стороны обоих - ловить тренды с RENKO, обеспечивая при этом надежные сигналы с скользящими средними.
Стратегия также сопряжена с некоторыми рисками:
Неправильное определение тенденции Способ определения трендов RENKO может привести к ненужным длинным или коротким.
Ложные сигналы от пересечения скользящей средней
Может быть ложные сигналы от пересечения скользящих средних, что приводит к ненужным сделкам.
Неправильные параметры ATR Неправильное установление периода ATR также может привести к слишком широким или слишком тесным остановкам.
Рынки с вилками На боковых или сильных рынках РЕНКО может генерировать много ненужных сделок, занимая капитал.
Стратегия может быть оптимизирована в следующих аспектах:
Оптимизировать параметры RENKO и ATR
Настраивайте эти параметры, чтобы минимизировать ложные сигналы РЕНКО и лучше улавливать тенденции.
Добавить фильтры пересечения скользящей средней Добавьте больше скользящих средних и требуйте, чтобы большинство из них выровнялись перед генерацией сигналов, чтобы отфильтровать ложные сигналы.
Добавить другие индикаторные фильтры Например, добавьте объем, чтобы принимать сделки только тогда, когда объем подтверждает цену, избегая ловушек.
Улучшение стратегии стоп-лосса Исследуйте, как использовать остановки, основанные на тренде, вместо простого отслеживания ATR, для более логичных остановок.
Оптимизировать управление деньгами Исследуйте оптимальное распределение капитала в рамках этой стратегии, чтобы максимизировать доходность при одновременном контроле рисков.
В целом, это стратегия, которую стоит оптимизировать и протестировать на живых рынках. Основная идея использования RENKO для тренда и скользящих средних кроссоверов в качестве фильтрованных сигналов звучит. С динамическими остановками ATR он может стать прочной системой, следующей за трендом. Следующим шагом является продолжение оптимизации на основе известных рисков для улучшения параметров и производительности.
/*backtest start: 2022-09-19 00:00:00 end: 2023-09-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Renko Level Strategy 2", shorttitle="RLS2", overlay=true, pyramiding=2, currency=currency.USD, default_qty_value=50, initial_capital=2000, default_qty_type=strategy.percent_of_equity) TF = input(title='TimeFrame', type=input.resolution, defval="D") ATRlength = input(title="ATR length", type=input.integer, defval=14, minval=2, maxval=100) HIGH = security(syminfo.tickerid, TF, high) LOW = security(syminfo.tickerid, TF, low) CLOSE = security(syminfo.tickerid, TF, close) ATR = security(syminfo.tickerid, TF, atr(ATRlength)) float RENKO = na color COLOR = na int BUY = na int SELL = na bool UP = na bool DN = na RENKO := na(RENKO[1]) ? close : RENKO[1] COLOR := na(COLOR[1]) ? color.white : COLOR[1] BUY := na(BUY[1]) ? 0 : BUY[1] SELL := na(SELL[1]) ? 0 : SELL[1] UP := false DN := false if(close > RENKO[1]+ATR[1]) UP := true RENKO := close COLOR := color.lime SELL := 0 BUY := BUY+1 if(close < RENKO[1]-ATR[1]) DN := true RENKO := close COLOR := color.red BUY := 0 SELL := SELL+1 if(BUY[1]==1 and BUY==2) strategy.entry("long", strategy.long)//, limit = RENKODN) if(DN) strategy.cancel_all() strategy.close_all(comment = "close") plot(RENKO, style=plot.style_line, linewidth=2, color=COLOR)