Стратегия двойной фильтрации RSI и EMA


Дата создания: 2024-03-22 15:37:08 Последнее изменение: 2024-03-22 15:37:08
Копировать: 8 Количество просмотров: 789
1
Подписаться
1617
Подписчики

Стратегия двойной фильтрации RSI и EMA

Обзор

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

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

Основные принципы этой стратегии можно разделить на следующие части:

  1. Вычисление и применение RSI: Сначала стратегия рассчитывает RSI на заданный цикл ((по умолчанию 2). Когда RSI ниже перепродажной отметки ((по умолчанию 10), рынок находится в состоянии перепродажи, и можно рассматривать сделку; когда RSI выше перепродажной отметки (по умолчанию 90), рынок находится в состоянии перепродажи, и можно рассматривать сделку.

  2. Определение тренда на медленной линии EMA: стратегия рассчитывает две линии EMA, одну медленную (по умолчанию 200) и одну быструю (по умолчанию 50). Рынок считается в восходящем тренде, когда быстрая линия находится выше медленной линии и цена выше медленной линии; наоборот, рынок считается в нисходящем тренде, когда быстрая линия находится ниже медленной линии и цена ниже медленной линии.

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

  4. Подтверждение торгового сигнала: стратегия анализирует результаты оценки RSI и EMA, чтобы получить окончательный торговый сигнал. При многооборотном тренде открывайте позиции, когда RSI ниже превышения прожиточной отметки; при свободном тренде открывайте позиции, когда RSI выше превышения прожиточной отметки.

  5. Управление позициями: стратегия использует минимальный интервал торгов (включая 5 минут) для контроля частоты торгов, чтобы избежать чрезмерной торговли. В то же время, стратегия использует метод управления рисками в сочетании с отслеживанием стоп-лосса и фиксированным стоп-лосса, что позволяет эффективно контролировать убытки.

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

Двойная стратегия фильтрации RSI и EMA имеет следующие преимущества:

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

  2. Эффективная фильтрация ложных сигналов: RSI-индикатор может создавать больше ложных сигналов, особенно на рынках с неопределенным трендом. В то время как EMA-фильтрация трендов может эффективно идентифицировать основные тренды и снижать ложные сигналы, создаваемые RSI.

  3. Управление рисками: стратегия использует метод, который сочетает в себе отслеживание стоп-лосса и фиксированные стоп-лосса, что позволяет эффективно контролировать убытки, а также обеспечивает полное продолжение прибыли. Такой способ управления рисками может повысить стабильность стратегии и возможность отмены контроля.

  4. Гибкость параметров: стратегия предоставляет пользователям несколько параметров для корректировки, таких как циклы RSI, перекуп и перепродажа, циклы EMA и стоп-роль. Это позволяет стратегии гибко адаптироваться к различным рыночным условиям и торговым привычкам.

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

Несмотря на то, что RSI и EMA имеют хорошие преимущества в двойной стратегии фильтрации, существуют некоторые потенциальные риски:

  1. Риск поворота тренда: при повороте тренда на рынке линия EMA может задерживаться, что приводит к тому, что стратегия пропускает оптимальное время входа или задерживает выход.

  2. Риск оптимизации параметров: эффективность стратегии чувствительна к параметрам, и различные комбинации параметров могут привести к совершенно разным результатам. Если параметры будут оптимизированы чрезмерно, это может привести к тому, что стратегия будет плохо работать на будущих рынках.

  3. Риск Чёрного Свинца: Стратегия может быть отслежена и оптимизирована на основе исторических данных, но исторические данные не могут полностью отражать возможные экстремальные события в будущем. В случае Чёрного Свинца стратегия может понести большие потери.

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

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

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

  3. Установка разумного стоп-лосса, контроль максимальных потерь в отдельных сделках. При этом на уровне портфеля осуществляется контроль риска, такой как дифференцированные инвестиции, контроль позиций и т. д.

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

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

  2. Оптимизация методов определения тенденции: помимо использования линии EMA для определения тенденции, можно также исследовать другие методы определения тенденции, такие как метод высокой и низкой точки, система равной линии и т. Д.

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

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

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

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

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

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

//@version=4
strategy("RSI2", overlay=true)

// RSILength input
len = input(2, minval=1, title="RSILength")

// Threshold RSI up input
RSIthreshUP = input(90, title="Threshold RSI up")

// Threshold RSI down input
RSIthreshDWN = input(10, title="Threshold RSI down")

// Slow MA length input
mmlen = input(200, title="Slow MA len")

// Fast MA length input
mmflen = input(50, title="Fast MA len")

// Moving Average type input
machoice = input("EMA", defval="EMA", options=["SMA", "EMA"])

// Ticker size input
tick=input(0.5,title="Ticker size",type=input.float)

// Trend Filter input
filter=input(true,title="Trend Filter",type=input.bool)

// Trailing Stop percentage input
ts_percent = input(1, title="TrailingStop%")

// Stop Loss percentage input
sl_percent = input(0.3, title="Stop Loss %")

// Calculate RSI
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)

// Calculate moving averages
mmslow = machoice == "SMA" ? sma(close, mmlen) : ema(close, mmlen)
mmfast = machoice == "SMA" ? sma(close, mmflen) : ema(close, mmflen)

// Plot moving averages
plot(mmslow, color=color.white)
plot(mmfast, color=color.yellow)

// Conditions for entry and exit
var lastLongEntryTime = 0
var lastShortEntryTime = 0

ConditionEntryL = if filter == true
    mmfast > mmslow and close > mmslow and rsi < RSIthreshDWN
else 
    mmfast > mmslow and rsi < RSIthreshDWN
    
ConditionEntryS = if filter == true
    mmfast < mmslow and close < mmslow and rsi > RSIthreshUP
else
    mmfast < mmslow and rsi > RSIthreshUP

// Calculate trailing stop and stop loss
ts_calc = close * (1/tick) * ts_percent * 0.01
sl_price = close * (1 - sl_percent / 100)

// Entry and exit management
if ConditionEntryL and time - lastLongEntryTime > 1000 * 60 * 5 // 5 minutes
    strategy.entry("RSILong", strategy.long)
    lastLongEntryTime := time

if ConditionEntryS and time - lastShortEntryTime > 1000 * 60 * 5 // 5 minutes
    strategy.entry("RSIShort", strategy.short)
    lastShortEntryTime := time

lastLongEntryTimeExpired = time - lastLongEntryTime >= 1000 * 60 * 5
lastShortEntryTimeExpired = time - lastShortEntryTime >= 1000 * 60 * 5

strategy.exit("ExitLong", "RSILong", when=lastLongEntryTimeExpired, trail_points=0, trail_offset=ts_calc, stop=sl_price)
strategy.exit("ExitShort", "RSIShort", when=lastShortEntryTimeExpired, trail_points=0, trail_offset=ts_calc, stop=sl_price)