Эта стратегия представляет собой псевдосетевой бот, предназначенный в первую очередь для алгоритмической торговли. Она использует динамическую, взвешенную по объему сетку, которая обновляется только при выполнении определенных условий RSI. Это также стратегия прорыва, тогда как обычные сетевые боты этого не делают (типичные сетевые боты продают, когда достигается более высокая сетка, тогда как эта стратегия продает, когда более низкая сетка нарушается при определенных условиях).
Короче говоря, стратегия обновляет свою сетку до наивысших/низших значений данного источника (
Вы можете настроить шорты, источник, длину RSI и уровни перекупа / перепродажи в настройках.
Основная логика стратегии заключается в следующем:
Использование индикатора RSI для определения точек перелома тренда, используя перекрестки линий RSI с уровнями перекупленности/перепроданности в качестве сигналов подтверждения.
При появлении сигнала RSI записывают самые высокие/низкие цены за период как верхние/нижние пределы сетки.
Разделите диапазон на 5 равномерно расположенных линий сетки. Проверьте в режиме реального времени, к какой линии цена ближе всего.
Когда цена переходит линию выше, вы идете на длинный.
Используя прорыв вместо прикосновения, он может лучше улавливать обратные тенденции.
Закройте все пирамидальные заказы до закрытия, чтобы избежать рисков на ночь.
Стратегия состоит из следующего:
Настройки ввода: источник, параметры RSI, длинный/короткий и т.д.
Расчет RSI: вычислить RSI и проверить наличие перекрестных сигналов.
Динамическая сетка: запись диапазона цен на сигналах RSI и расчет линий сетки.
Проверка сигнала: обнаружение сетевых линий с перерывом цены для длинных/коротких сигналов.
Управление заказами: отправка заказов и сглаживание до закрытия.
Картографирование: графические линии сетки, длинные/короткие зоны и т.д.
Благодаря динамическому обновлению сетки и использованию RSI для контекста тренда плюс сигналов прорыва, эта стратегия может эффективно отслеживать тенденции и обращать их вспять при изменении тренда.
Основными преимуществами этой стратегии являются:
Динамическая сетка адаптируется к тренду, в отличие от фиксированной сетки.
Регулирует сетку только при подтверждении RSI, уменьшая шум.
Сигналы прорыва обнаруживают обратные действия лучше, чем при ощущении.
Уровняется перед закрытием, чтобы избежать рисков прорыва на ночь.
RSI эффективен для обнаружения перекупа/продажи.
Режим прорыва обеспечивает раннее вхождение в тренд по сравнению с реверсией.
Настройка расстояния и размера сетки позволяет регулировать риск.
Визуальная сетка и длинные/короткие зоны.
Необходимые шорты для разных трейдеров.
Простая логика, подходящая для торговли.
Это делает стратегию способной автоматического отслеживания тренда с контролем риска для торговли в режиме реального времени.
Следует также отметить некоторые потенциальные риски:
Рынки могут приводить к стоп-потерям, могут увеличивать стопы или приостанавливать торговлю.
Ночные пробелы могут оставить большие открытые пробелы, могут уменьшить размер позиции.
Плохая настройка параметров может увеличить торговлю или ошибки сигналов. Требует осторожной оптимизации.
Высокие сборы могут снизить прибыль от сетевой торговли.
Сигналы прорыва могут немного отстать от обратных.
В случае постоянного роста показатели могут быть уменьшены.
Необходим достаточный капитал для больших размеров позиций и пирамиды, иначе результаты будут плохими.
Уменьшение последствий:
Оптимизировать параметры для уменьшения частоты торговли и переоценки.
Комбинируйте с индикаторами тренда, избегайте торговых периодов.
Уменьшить размер сделки в % и риск по сделке.
Испытайте различные пороги прорыва для наилучшего баланса срочности и стабильности.
Добавьте больше условий входа, введите только четкие тенденции, чтобы избежать ловушки.
Проверка на более длительные периоды для оценки стабильности параметров.
Исследование оптимизации динамических параметров на основе машинного обучения для адаптации рынка.
Подумайте о сочетании с опционными стратегиями для хеджирования рисков позиций.
Корректировать параметры на основе недавних рыночных условий, чтобы сохранить эффективность стратегии.
Построить платформы визуальной оптимизации для быстрого тестирования.
С оптимизацией параметров, сочетанием сигналов и большей информацией о рынке, риски могут быть уменьшены, чтобы сделать действительно надежную стратегию algo.
Стратегия может быть дополнительно усилена путем:
Оптимизирую параметры RSI, проверяю периоды RSI для лучших комбинаций.
Испытание различных расстояний сетки для оптимального риска-вознаграждения.
Добавление других индикаторов к фильтрующим сигналам, например MACD, KD и т.д., для повышения точности.
Разработка адаптивных остановок на основе волатильности рынка.
Увеличение условий входа, вводят только очевидные тенденции, чтобы избежать ловушек.
Проведение обратных испытаний в течение более длительных периодов для оценки стабильности параметров.
Исследование динамической оптимизации на основе машинного обучения для адаптации.
Включение стратегий опционов для хеджирования рисков.
Корректировка параметров на основе недавних рыночных условий для поддержания эффективности.
Создание платформ визуальной оптимизации для быстрых тестов.
С автоматизированной оптимизацией, комбинациями стратегий, большей информацией о рынке и т. Д. Он может достичь лучшей стабильности и прибыли как реальная торговая стратегия.
Подводя итог, стратегия RSI Box Grid использует RSI для выявления подтверждения обратного тренда, устанавливает динамические сетки ценового диапазона, вырывы сделок и сглаживает внутридневный тренд - формируя гибкий тренд после стратегии торговли алгоритмом. По сравнению с фиксированными сетками, она лучше адаптируется к изменениям рынка.
Стратегия имеет преимущества, включая RSI для контекста тренда, динамические сетки, трейдинг прорыва и полное сглаживание внутридневного. Это позволяет эффективно отслеживать тенденции с контролем рисков. Однако существуют риски, такие как стоп-потери, ночные разрывы, требующие оптимизации, сочетания сигналов и управления рисками.
Существует много возможностей для улучшения, путем включения большего количества индикаторов, оптимизации ML, визуального бэкстестинга и т. Д., Он может стать более надежной высокодоходной алгоритмической стратегией торговли.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © wbburgin //@version=5 // strategy("RSI Box Strategy (pseudo-Grid Bot)", overlay=true, initial_capital = 10000, // default_qty_type = strategy.percent_of_equity, default_qty_value = 1, pyramiding = 33, commission_value=0.10) src = input.source(close,"Source") rsiLength = input.int(14,"RSI Length") oblvl = input.int(70,"Overbought Level") oslvl = input.int(30,"Oversold Level") useShorts = input.bool(false,"Use Shorts",inline="B") showGrid = input.bool(false,"Show Grid",inline="B") rsi = ta.rsi(src,rsiLength) rsi_crossdn = ta.crossunder(rsi,oblvl) rsi_crossup = ta.crossover(rsi,oslvl) highest = ta.vwma(ta.highest(src,rsiLength),rsiLength) lowest = ta.vwma(ta.lowest(src,rsiLength), rsiLength) gridTop = ta.valuewhen(rsi_crossdn,highest,0) gridBottom = ta.valuewhen(rsi_crossup,lowest,0) gridMiddle = math.avg(gridTop,gridBottom) gridMidTop = math.avg(gridMiddle,gridTop) gridMidBottom = math.avg(gridMiddle,gridBottom) diff1 = math.abs(src - gridTop) diff2 = math.abs(src - gridBottom) diff3 = math.abs(src - gridMiddle) diff4 = math.abs(src - gridMidTop) diff5 = math.abs(src - gridMidBottom) minDiff = math.min(diff1, diff2, diff3, diff4, diff5) // Determine which line is the closest float closestLine = na if minDiff == diff1 closestLine := gridTop else if minDiff == diff2 closestLine := gridBottom else if minDiff == diff3 closestLine := gridMiddle else if minDiff == diff4 closestLine := gridMidTop else if minDiff == diff5 closestLine := gridMidBottom buyCrosses = ta.crossover(src,gridTop) or ta.crossover(src,gridBottom) or ta.crossover(src,gridMiddle) or ta.crossover(src,gridMidTop) or ta.crossover(src,gridMidBottom) sellCrosses= ta.crossunder(src,gridTop) or ta.crossunder(src,gridBottom) or ta.crossunder(src,gridMiddle) or ta.crossunder(src,gridMidTop) or ta.crossunder(src,gridMidBottom) condition_bull = buyCrosses condition_bear = sellCrosses var float bull_status_line = na var float bear_status_line = na var float bull_buy_line = na var float bear_sell_line = na if condition_bull bull_status_line := closestLine if condition_bear bear_status_line := closestLine if bull_status_line == gridBottom bull_buy_line := gridMidBottom if bull_status_line == gridMidBottom bull_buy_line := gridMiddle if bull_status_line == gridMiddle bull_buy_line := gridMidTop if bull_status_line == gridMidTop bull_buy_line := gridTop if bear_status_line == gridTop bear_sell_line := gridMidTop if bear_status_line == gridMidTop bear_sell_line := gridMiddle if bear_status_line == gridMiddle bear_sell_line := gridMidBottom if bear_status_line == gridMidBottom bear_sell_line := gridBottom l = ta.crossover(src,bull_buy_line) s = ta.crossunder(src,bear_sell_line) if l strategy.entry("Long",strategy.long) if s strategy.close("Long") if useShorts strategy.entry("Short",strategy.short) // Plotting in_buy = ta.barssince(l) < ta.barssince(s) u=plot(bull_buy_line,color=na,title="Buy Plot") d=plot(bear_sell_line,color=na,title="Sell Plot") plot(not showGrid?na:gridBottom,color=color.new(color.white,75),title="Grid Line -2") plot(not showGrid?na:gridMidBottom,color=color.new(color.white,75),title="Grid Line -1") plot(not showGrid?na:gridMiddle,color=color.new(color.white,75),title="Grid Line 0") plot(not showGrid?na:gridMidTop,color=color.new(color.white,75),title="Grid Line 1") plot(not showGrid?na:gridTop,color=color.new(color.white,75),title="Grid Line 2") fill(u,d,color=in_buy ? color.new(color.lime,75) : color.new(color.red,75))