Торговая стратегия на основе индикатора расхождения длинных и коротких линий RSI


Дата создания: 2024-01-15 12:09:54 Последнее изменение: 2024-01-15 12:09:54
Копировать: 2 Количество просмотров: 837
1
Подписаться
1617
Подписчики

Торговая стратегия на основе индикатора расхождения длинных и коротких линий RSI

Обзор

Эта стратегия определяет рыночные тенденции и принимает торговые решения, рассчитывая разрыв в диапазоне RSI. В частности, она рассматривает скрытые многоголовые сигналы, когда RSI формирует более низкие низкие, но цены формируют более высокие низкие; и скрытые пустые сигналы, когда RSI формирует более высокие высокие, но цены формируют более низкие высокие.

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

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

  1. Нормальный многоголовый сигнал: RSI формирует более высокие низкие точки, цена формирует более низкие низкие точки. Это говорит о том, что покупатели подняли RSI, но не полностью отразились на цене, что свидетельствует о усилении многоголовой силы.

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

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

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

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

Стратегические преимущества

  1. Используйте теорию множественного разрыва RSI для оценки потенциальных тенденций рынка.
  2. В то же время, в качестве подтверждения, используйте ценовые тенденции, чтобы избежать создания шумовых сигналов.
  3. Это позволяет заранее определить важные сигналы, прежде чем рынок быстро перевернется.
  4. Осуществляется визуализация многополосных сигнальных сигналов, удобная и интуитивная эксплуатация.
  5. Настраиваемые параметры, адаптированные к различным рыночным условиям.

Стратегический риск

  1. Разногласия в RSI и цене не обязательно указывают на обратную сторону, но могут быть нормальными.
  2. Скрытые сигналы являются более шумными, что может привести к ошибочным выводам.
  3. Для подтверждения сигналов требуется использовать дополнительные показатели или методы технического анализа.
  4. Неправильная настройка параметров сигнала также может повлиять на суждение.

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

  1. Добавление MACD, KDJ и других показателей в сочетании с RSI, чтобы определить сигнал входного сигнала.
  2. Увеличение стратегии по удержанию убытков и снижение убытков в одиночку.
  3. Оптимизация параметров, например, поиск наиболее подходящих параметров цикла RSI.
  4. Добавление алгоритмов машинного обучения для обучения точности определения входных сигналов.
  5. Добавление веб-сокетов в режиме реального времени для снижения задержки подтверждения сигнала.

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

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

Исходный код стратегии
/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Divergence Indicator")
len = input.int(title="RSI Period", minval=1, defval=20)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=5)
lbL = input(title="Pivot Lookback Left", defval=5)
rangeUpper = input(title="Max of Lookback Range", defval=60)
rangeLower = input(title="Min of Lookback Range", defval=5)
plotBull = input(title="Plot Bullish", defval=true)
plotHiddenBull = input(title="Plot Hidden Bullish", defval=true)
plotBear = input(title="Plot Bearish", defval=true)
plotHiddenBear = input(title="Plot Hidden Bearish", defval=true)
bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 80)
hiddenBearColor = color.new(color.red, 80)
textColor = color.white
noneColor = color.new(color.white, 100)
osc = ta.rsi(src, len)

plot(osc, title="RSI", linewidth=2, color=#2962FF)
hline(50, title="Middle Line", color=#787B86, linestyle=hline.style_dotted)
obLevel = hline(70, title="Overbought", color=#787B86, linestyle=hline.style_dotted)
osLevel = hline(30, title="Oversold", color=#787B86, linestyle=hline.style_dotted)
fill(obLevel, osLevel, title="Background", color=color.rgb(33, 150, 243, 90))

plFound = na(ta.pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(ta.pivothigh(osc, lbL, lbR)) ? false : true
_inRange(cond) =>
	bars = ta.barssince(cond == true)
	rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low

oscHL = osc[lbR] > ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Lower Low

priceLL = low[lbR] < ta.valuewhen(plFound, low[lbR], 1) 
// bull : 상승 Condition : 조건
bullCond = plotBull and priceLL and oscHL and plFound // 상승다이버전스?
strategy.entry("상승 다이버전스 진입", strategy.long, when = bullCond)
// strategy.close("상승 다이버전스 진입", when = ta.crossover(osc, 70)) 
plot(
     plFound ? osc[lbR] : na,
     offset=-lbR,
     title="Regular Bullish",
     linewidth=2,
     color=(bullCond ? bullColor : noneColor)
     )

plotshape(
	 bullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish Label",
	 text=" Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low

oscLL = osc[lbR] < ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low

priceHL = low[lbR] > ta.valuewhen(plFound, low[lbR], 1)
hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound
strategy.entry("히든 상승 다이버전스 진입", strategy.long, when = hiddenBullCond)
// strategy.close("히든 상승 다이버전스 진입", when = ta.crossover(osc, 70))
plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish",
	 linewidth=2,
	 color=(hiddenBullCond ? hiddenBullColor : noneColor)
	 )

plotshape(
	 hiddenBullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish Label",
	 text=" H Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High

oscLH = osc[lbR] < ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Higher High

priceHH = high[lbR] > ta.valuewhen(phFound, high[lbR], 1)
// bear : 하락 
bearCond = plotBear and priceHH and oscLH and phFound
strategy.entry("하락 다이버전스 진입", strategy.short, when = bearCond)
// strategy.close("하락 다이버전스 진입", when = ta.crossunder(osc, 50)) 
plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish",
	 linewidth=2,
	 color=(bearCond ? bearColor : noneColor)
	 )

plotshape(
	 bearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish Label",
	 text=" Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High

oscHH = osc[lbR] > ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Lower High

priceLH = high[lbR] < ta.valuewhen(phFound, high[lbR], 1)

hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound
strategy.entry("히든 하락 다이버전스 진입", strategy.short, when = hiddenBearCond)
// strategy.close("히든 하락 다이버전스 진입", when = ta.crossunder(osc, 50)) 
plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish",
	 linewidth=2,
	 color=(hiddenBearCond ? hiddenBearColor : noneColor)
	 )

plotshape(
	 hiddenBearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish Label",
	 text=" H Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor
	 )