Стратегия динамической прямоугольной сетки RSI


Дата создания: 2023-10-30 11:29:30 Последнее изменение: 2023-10-30 11:29:30
Копировать: 0 Количество просмотров: 1022
1
Подписаться
1617
Подписчики

Стратегия динамической прямоугольной сетки RSI

Обзор

Эта стратегия является аналогом стратегии Grid Bot, используемой в основном для алгоритмической торговли. Она использует динамическую, неравномерную сетку Grid, основанную на количестве сделок, и обновляет сеть только тогда, когда RSI удовлетворяет определенным условиям. Она также имеет характеристики прорывной торговли, в отличие от обычного Grid Bot (типичный Grid Bot продает, когда достигает более высокой линии сетки, в то время как эта стратегия продает, когда падает ниже линии сетки при определенных условиях).

Проще говоря, всякий раз, когда RSI пересекает линию сигнала покупки/продажи, сетка обновляется до максимальной/минимальной цены, основанной на количестве сделок, рассчитанных на данный источник данных (настройка “src”). Он создает линию с равным интервалом в 5 строк в зависимости от этого интервала и использует текущий источник данных, чтобы определить, какой из источников данных является ближайшим к линии. Если источник данных прорывает линию, расположенную прямо над текущей линией, то подается сигнал покупки; если источник данных падает, то подается сигнал продажи.

Вы можете настроить в своих настройках наличие вакуума, источник данных, продолжительность цикла RSI и линию перекупа/перепродажи.

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

Основная логика этой стратегии заключается в следующем:

  1. Используйте индикатор RSI, чтобы определить обратную точку тренда, и используйте RSI-линию, которая пересекает установленную зону сверхпокупа или зону сверхпродажи, как подтверждающий сигнал.

  2. При появлении сигнала подтверждения RSI, записываются максимальные и минимальные цены за определенный период и устанавливаются как нижние границы на сетке.

  3. В зависимости от верхнего и нижнего предела, они делятся на 5 линий сетки, чтобы в реальном времени определить, какая из них ближе к линии сетки.

  4. Когда цена пробивает сетчатую линию выше линии, делается дополнительный вход; когда цена падает сетчатую линию ниже линии, делается пустой вход.

  5. Используя прорыв в сетке, а не обычный Grid Bot, который касается сетки, можно лучше понять прорыв в тренде.

  6. При закрытии торгового дня все ордера пирамиды должны быть выброшены, чтобы предотвратить риски на ночь.

Стратегия состоит из следующих частей:

  1. Параметры ввода: источник данных, параметры RSI, дополнительные варианты дисконтирования и т. д.

  2. Расчет RSI: рассчитывает RSI и определяет, есть ли у него проходный сигнал.

  3. Динамическая сетка: записывает ценовой диапазон и рассчитывает сетчатую линию при появлении сигнала RSI.

  4. Сигнальный анализ: определение того, пробилась ли цена через сетку, и определение того, что лишний сигнал является пустым.

  5. Управление заказами: выпускается сигнал о многократном разрыве и размещении пирамидальных заказов до закрытия.

  6. Картографический интерфейс: отображение сетчатой линии, создание дополнительных свободных зон и т.д.

Благодаря динамическому обновлению сетки, в сочетании с RSI индикаторами для определения тенденции и сигналов обрыва, стратегия позволяет эффективно отслеживать тенденцию и своевременно корректировать направление при повороте. Прямые позиции перед закрытием эффективно контролируют риск на ночь.

Анализ преимуществ

Основные преимущества этой стратегии:

  1. Динамическая сетка может адаптироваться к тенденциям, а не к фиксированной и неизменной сетке, более гибкая.

  2. Сетка может быть отфильтрована только в том случае, если RSI подтверждает обратный тренд.

  3. Используя прорывные сигналы, а не только сенсорные сигналы, можно более точно улавливать переломные моменты тренда.

  4. В этом случае вы можете избежать риска значительных колебаний в течение ночи и защитить свою прибыль.

  5. Индекс RSI лучше всего подходит для определения перекупа и перепродажи в сочетании с динамической сеткой.

  6. Применение форс-мажорной, а не обратной модели позволяет получить лучшие шансы на вход в начале тренда.

  7. Корректировка сетчатого расстояния и соотношения объемов сделок позволяет гибко корректировать риско-прибыльные характеристики стратегии.

  8. Графический интерфейс визуально отображает распределение сетки и зоны дополнительного заготовки.

  9. Можно выбрать, будет ли открыт куокинг, чтобы удовлетворить потребности различных трейдеров.

  10. Правила простые, понятные, легко понятные, подходящие для алгоритмической торговли.

Эти преимущества позволяют стратегии автоматически отслеживать тенденции, контролируя риски, и подходят для применения в количественной торговле.

Анализ рисков

В этой стратегии также есть потенциальные риски, о которых следует помнить:

  1. При значительных шоковых тенденциях может возникнуть риск остановки убытков. При необходимости можно расширить пределы остановки убытков или приостановить стратегию во время потрясения.

  2. В ночное время может произойти значительный скачок, что приводит к увеличению открытых позиций. Для предотвращения этого риска следует рассмотреть возможность снижения пропорции позиций.

  3. Неправильная настройка параметров может привести к частоте сделок или ошибочным сигналам. Параметры оптимизации следует тщательно тестировать.

  4. При высоких торговых сборах, прибыль от торговли в сети может быть съедена снова и снова. Следует соответствующим образом скорректировать количество сделок или выбрать биржи с более низкой комиссией.

  5. Сигнал прорыва может появиться немного позже, чем обратная точка тренда, поэтому необходимо разумно настроить прорыв.

  6. Эта стратегия может плохо работать в период роста и роста на фондовом рынке. Можно рассмотреть возможность использования ее в сочетании с другими индикаторами.

  7. Необходимо достаточное количество средств для поддержки больших позиций и пирамидальных позиций, иначе эффект не будет хорошим. Позиции должны быть скорректированы в зависимости от количества средств.

Ответ:

  1. Оптимизация параметров, снижение частоты сделок, предотвращение чрезмерной торговли.

  2. Вместе с трендовыми индикаторами, избегайте торговли в период колебаний.

  3. Регулирование позиций, снижение доли разовых сделок, контроль риска.

  4. Тестирование различных параметров прорыва, балансируя своевременность и устойчивость.

  5. Можно подумать о комбинации с другими показателями, чтобы использовать больше информации о рынке.

  6. Увеличение капитала, увеличение размеров позиций, увеличение доходности.

С помощью таких методов, как оптимизация параметров, управление рисками и их сочетание с другими стратегиями, можно в определенной степени снизить риск этой стратегии, что позволяет ей стабильно работать.

Направление оптимизации

Эта стратегия может быть улучшена в следующих аспектах:

  1. Оптимизируйте параметры RSI, тестируйте различные длины циклов RSI, ищите оптимальную комбинацию параметров.

  2. Тестируйте различные сетчатые расстояния, чтобы найти сетку с оптимальным соотношением риска и прибыли.

  3. Попытайтесь улучшить точность фильтрации в сочетании с другими индикаторами, такими как MACD, KD и т. д.

  4. Разработка адаптивной стратегии по остановке убытков, динамически корректируя размер остановки убытков в зависимости от степени волатильности рынка.

  5. Условия для открытия позиции должны быть повышены, чтобы избежать “закрытия” и открывать позиции только тогда, когда тенденция достаточно ясна.

  6. Оптимизация обратной связи, тестирование данных на более длительный период времени, оценка стабильности параметров.

  7. Попытка оптимизации динамических параметров на основе машинного обучения, чтобы стратегия адаптировалась к различным рыночным условиям.

  8. Изучение стратегий, связанных с опционами, которые используют опционы для хеджирования риска позиции.

  9. Применение стратегии оптимизации параметров в соответствии с особенностями текущей ситуации для поддержания эффективности стратегии.

  10. Разработка платформы для оптимизации графических стратегий с помощью быстрых тестов оптимизации.

С помощью автоматизированной оптимизации параметров, комбинации стратегий и введения большей информации о рынке эта стратегия может получить лучшую стабильность и доходность, чтобы стать действительно надежной стратегией количественной торговли.

Подвести итог

В целом, стратегия RSI Rectangular Grid использует RSI, чтобы определить обратный сигнал подтверждения тренда, установить динамическую сетку ценового диапазона, торговать при прорыве линии сетки, полностью свернуть позиции в течение дня, создавая гибкую стратегию торговли алгоритмическим отслеживанием тренда. По сравнению со стратегией фиксированной сетки, она может лучше адаптироваться к изменениям рынка.

Эта стратегия имеет определенные преимущества, в том числе в сочетании с RSI, чтобы определить тенденцию, динамическую адаптацию сетки, прорывную торговлю и полную позицию в течение суток. Это позволяет эффективно отслеживать тенденцию и одновременно контролировать риск. Но в этой стратегии также есть некоторые потенциальные риски, о которых следует помнить, такие как риск остановки потерь в сокрушительной тенденции, риск ночного взлета и т. Д. Эти риски могут быть уменьшены путем оптимизации параметров, комбинации с другими сигналами и средствами управления рисками.

Стратегия также имеет множество направлений оптимизации, которые могут быть оптимизированы в более стабильную, более прибыльную алгоритмическую торговую стратегию путем введения большего количества показателей, параметров оптимизации машинного обучения и графических платформ для обратной связи. В целом, стратегия предоставляет надежную и простую алгоритмическую структуру для отслеживания тенденций в количественной торговле.

Исходный код стратегии
/*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))