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

Автор:Чао Чжан, Дата: 2023-11-28 14:07:46
Тэги:

img

Обзор

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

Логика стратегии

Эта стратегия основывается главным образом на двух показателях:

  1. Простая скользящая средняя (SMA): отражает среднюю тенденцию цен.
  2. Индекс относительной силы (RSI): отражает силу или слабость ценовых показателей.

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

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

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

В частности, эта стратегия генерирует торговые сигналы через следующие этапы:

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

Преимущества стратегии

Объединяя суждение о тренде скользящих средних и показатель перекупленности/перепроданности RSI, эта стратегия может эффективно определять точки перелома на рынке, используя сильные стороны различных индикаторов.

Основными преимуществами являются:

  1. Движущиеся средние могут эффективно указывать на тенденции цен.
  2. Индекс рентабельности может отражать условия перекупа/перепродажи.
  3. Сочетание двойных показателей повышает точность определения переломных моментов на рынке.
  4. Стоп-лосс можно использовать для контроля рисков.

Риски стратегии

Эта стратегия также сопряжена с некоторыми рисками:

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

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

  1. Корректировать параметры скользящей средней и RSI, чтобы сделать индикаторные сигналы более надежными.
  2. Установка стоп-лосса должна быть более широкой, чтобы избежать слишком частого запуска.
  3. Использование динамического стоп-лосса для увеличения гибкости стоп-лосса.

Руководство по оптимизации стратегии

Дальнейшие направления оптимизации включают:

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

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

Заключение

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


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-24 06:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "RSI versus SMA", shorttitle = "RSI vs SMA", overlay = false, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, currency = currency.GBP)

// Revision:        1
// Author:          @JayRogers
//
// *** USE AT YOUR OWN RISK ***
// - Nothing is perfect, and all decisions by you are on your own head. And stuff.
//
// Description:
//  - It's RSI versus a Simple Moving Average.. Not sure it really needs much more description.
//  - Should not repaint - Automatically offsets by 1 bar if anything other than "open" selected as RSI source.

// === INPUTS ===
// rsi
rsiSource   = input(defval = open, title = "RSI Source")
rsiLength   = input(defval = 8, title = "RSI Length", minval = 1)
// sma
maLength    = input(defval = 34, title = "MA Period", minval = 1)
// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop     = input(defval = false, title = "Use Initial Stop Loss?")
slPoints    = input(defval = 25, title = "Initial Stop Loss Points", minval = 1)
useTS       = input(defval = true, title = "Use Trailing Stop?")
tslPoints   = input(defval = 120, title = "Trail Points", minval = 1)
useTSO      = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset   = input(defval = 20, title = "Trail Offset Points", minval = 1)
// === /INPUTS ===

// === BASE FUNCTIONS ===
// delay for direction change actions
switchDelay(exp, len) =>
    average = len >= 2 ? sum(exp, len) / len : exp[1]
    up      = exp > average
    down    = exp < average
    state   = up ? true : down ? false : up[1]
// === /BASE FUNCTIONS ===

// === SERIES and VAR ===
// rsi
shunt = rsiSource == open ? 0 : 1
rsiUp = rma(max(change(rsiSource[shunt]), 0), rsiLength)
rsiDown = rma(-min(change(rsiSource[shunt]), 0), rsiLength)
rsi = (rsiDown == 0 ? 100 : rsiUp == 0 ? 0 : 100 - (100 / (1 + rsiUp / rsiDown))) - 50 // shifted 50 points to make 0 median
// sma of rsi
rsiMa   = sma(rsi, maLength)
// self explanatory..
tradeDirection = tradeInvert ? 0 <= rsiMa ? true : false : 0 >= rsiMa ? true : false
// === /SERIES ===

// === PLOTTING ===
barcolor(color = tradeDirection ? green : red, title = "Bar Colours")
// hlines
medianLine  = hline(0, title = 'Median', color = #996600,  linewidth = 1)
limitUp     = hline(25, title = 'Limit Up', color = silver,  linewidth = 1)
limitDown   = hline(-25, title = 'Limit Down', color = silver,  linewidth = 1)
// rsi and ma
rsiLine     = plot(rsi, title = 'RSI', color = purple, linewidth = 2, style = line, transp = 50)
areaLine    = plot(rsiMa, title = 'Area MA', color = silver, linewidth = 1, style = area, transp = 70)
// === /PLOTTING ===

goLong() => not tradeDirection[1] and tradeDirection
killLong() => tradeDirection[1] and not tradeDirection
strategy.entry(id = "Buy", long = true, when = goLong())
strategy.close(id = "Buy", when = killLong())

goShort() => tradeDirection[1] and not tradeDirection
killShort() => not tradeDirection[1] and tradeDirection
strategy.entry(id = "Sell", long = false, when = goShort())
strategy.close(id = "Sell", when = killShort())

if (useStop)
    strategy.exit("XSL", from_entry = "Buy", loss = slPoints)
    strategy.exit("XSS", from_entry = "Sell", loss = slPoints)
// if we're using the trailing stop
if (useTS and useTSO) // with offset
    strategy.exit("XSL", from_entry = "Buy", trail_points = tslPoints, trail_offset = tslOffset)
    strategy.exit("XSS", from_entry = "Sell", trail_points = tslPoints, trail_offset = tslOffset)
if (useTS and not useTSO) // without offset
    strategy.exit("XSL", from_entry = "Buy", trail_points = tslPoints)
    strategy.exit("XSS", from_entry = "Sell", trail_points = tslPoints)

Больше