Стратегия пересечения осевой скользящей средней RSI


Дата создания: 2023-11-23 16:45:55 Последнее изменение: 2023-11-23 16:45:55
Копировать: 2 Количество просмотров: 751
1
Подписаться
1617
Подписчики

Стратегия пересечения осевой скользящей средней RSI

Обзор

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

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

Эта стратегия сначала рассчитывает 14-дневный RSI, а затем 8-дневную простую скользящую среднюю RSI. Когда RSI пробивает свою скользящую среднюю сверху, это создает сигнал к покупке; когда RSI пробивает свою скользящую среднюю сверху, это создает сигнал к продаже.

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

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

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

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

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

Самый большой риск в RSI-аксиональной среднелинейной кросс-стратегии заключается в задержке RSI и самой движущейся средней. Когда наступает быстрое движение, расчеты и определение тренда в индикаторе будут иметь определенную задержку. Это приведет к тому, что точка покупки будет поднята, а точка продажи будет подавлена.

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

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

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

RSI может быть оптимизирована в следующих направлениях:

  1. Оптимизация параметров RSI: изменение длины RSI может сбалансировать чувствительность и стабильность

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

  3. Увеличение механизма остановки убытков: установка мобильного или временного остановки убытков, контроль одиночных убытков

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

  5. Проверка в нескольких временных рамках: использование более высоких временных рамок для определения тенденций и избежания подтасовки

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

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

Исходный код стратегии
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Copyright (c) 2020-present, Alex Orekhov (everget)
// Corrected Moving Average script may be freely distributed under the terms of the GPL-3.0 license.
strategy('rsisma', shorttitle='rsisma')

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

plot(rsi, "RSI", color=#7E57C2)
plot(rsiMA, "RSI-based MA", color=color.blue)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")


long = ta.crossover(rsi, rsiMA)
short = ta.crossunder(rsi, rsiMA)
if long
    strategy.entry("long", strategy.long)
if short
    strategy.close("long", comment = "long TP")

 
// long1 = close * 9
// long2 = long1 / 100
// long3 = long2 + close


//plot(long3,color=color.blue)
// if short
//     strategy.entry("short", strategy.short)
// if long
//     strategy.close("short", comment = "short TP")