Улучшенная стратегия скользящего среднего показателя RSI MACD

Автор:Чао Чжан, Дата: 2024-01-05 16:11:23
Тэги:

img

Обзор

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

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

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

  1. гистограмма MACD больше установленного длинного входного уровня;
  2. RSI выше 50, что указывает на состояние перекупа;
  3. Краткосрочная EMA пересекает длинносрочную EMA, образуя золотой крест;
  4. Цена закрытия превышает длительную EMA и выше длительного EMA плюс диапазон остановки ATR.

При выполнении следующих двух условий выхода стратегия закрывает позиции для остановки потерь:

  1. гистограмма MACD меньше установленного уровня стоп-лосса;
  2. Краткосрочная EMA пересекается ниже долгосрочной EMA, образуя мертвый перекресток.

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

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

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

  1. Применение РСИ позволяет избежать потерь по комиссионным за транзакции, вызванным неоднократным открытием позиций на рынках с ограниченным диапазоном.

  2. Чувствительность индикатора гистограммы MACD обеспечивает своевременное определение точек перелома.

  3. Движущиеся средние отфильтровывают краткосрочный рыночный шум и в полной мере влияют на эффект индикатора.

Риски и решения

К основным рискам этой стратегии относятся:

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

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

Ориентация на улучшение

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

  1. Увеличить количество дополнительных фильтров для дальнейшего предотвращения ложных сигналов, например, комбинировать с показателями объема, волатильности и т.д.

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

  3. Оптимизировать настройки параметров скользящей средней.

  4. Исследуйте адаптивные скользящие средние.

Заключение

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


/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved RSI MACD Strategy with Moving Averages", overlay=true)

// Inputs
src = input(close, title="RSI Source")

// RSI Settings
lengthRSI = input.int(14, minval=1)

// Stop Loss Settings
stopLossPct = input.float(0.09, title="Stop Loss Percentage")
takeProfitPct = input.float(0.15, title="Take Profit Percentage")

// MACD Settings
fastlen = input(12)
slowlen = input(26)
siglen = input(9)

// Strategy Settings
longEntry = input(0, title="Long Entry Level")
exitLevel = input(0, title="Exit Level")

// EMA Settings
emaShortLength = input(8, title="Short EMA Length")
emaLongLength = input(21, title="Long EMA Length")

atrMultiplier = input.float(2, title="atrMultiplier")
atrLength = input.int(20, title="atrLength")

// Indicators
rsi1 = ta.rsi(src, lengthRSI)
[macd, signal, hist] = ta.macd(src, fastlen, slowlen, siglen)

// Calculate EMAs
emaShort = ta.ema(src, emaShortLength)
emaLong = ta.ema(src, emaLongLength)

// Calculate ATR
atr = ta.atr(atrLength)

// Variables
var bool canEnterLong = na

// Strategy conditions
longCondition = hist > longEntry and rsi1 > 50 and emaShort > emaLong and close > emaLong + atrMultiplier * atr

// Entries and Exits
if hist < exitLevel and emaShort < emaLong
    canEnterLong := true
    strategy.close("Long")
    
// Store last entry price
var lastEntryPrice = float(na)
var lastEntryPrice2 = float(na)
if longCondition
    strategy.entry("Long", strategy.long)
    canEnterLong := false
    lastEntryPrice := close
if lastEntryPrice < close
    lastEntryPrice := close
// Calculate Stop Loss and Take Profit Levels based on last entry price
stopLossLevel = lastEntryPrice * (1 - stopLossPct)

// Check for stop loss and take profit levels and close position if triggered
if (strategy.position_size > 0)
    last_buy = strategy.opentrades[0]
    if (close < stopLossLevel)
        strategy.close("Long", comment="Stop Loss Triggered")
    if (close * (1 - takeProfitPct) > strategy.opentrades.entry_price(strategy.opentrades - 1) )
        strategy.close("Long", comment="Take Profit Triggered")

Больше