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


Дата создания: 2023-11-28 14:07:46 Последнее изменение: 2023-11-28 14:07:46
Копировать: 0 Количество просмотров: 663
1
Подписаться
1621
Подписчики

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

Обзор

Стратегия Moving Average Relative Strength Index - это количественная торговая стратегия, которая использует одновременно движущиеся средние и относительно сильные индикаторы в качестве торговых сигналов. Эта стратегия создает торговые сигналы, чтобы захватить возможности в рыночных тенденциях, сравнивая цены с движущимися средними и относительно сильными индикаторами.

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

Стратегия основана на двух показателях:

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

Основная логика стратегии:

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

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

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

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

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

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

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

  1. Движущиеся средние эффективно указывают на тенденцию цен
  2. RSI может отражать перекуп и перепродажу
  3. Двойные показатели помогают более точно определить рыночные переломы
  4. Можно установить точку остановки, чтобы контролировать риск

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

Однако эта стратегия также несет в себе некоторые риски:

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

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

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

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

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

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

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

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

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

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