Madrid Bands RSI Enhanced Multiple Timeframe EMA Trend Strategy

EMA RSI MA 移动平均线 相对强弱指标 趋势跟踪 多时间框架分析 动量分析
Дата создания: 2025-03-24 15:52:28 Последнее изменение: 2025-03-24 15:52:28
Копировать: 0 Количество просмотров: 510
2
Подписаться
319
Подписчики

Madrid Bands RSI Enhanced Multiple Timeframe EMA Trend Strategy Madrid Bands RSI Enhanced Multiple Timeframe EMA Trend Strategy

Обзор

Мадридская лентовая RSI-усиленная многочасовая рамка EMA - это комплексная количественная торговая система, которая хитро сочетает в себе ленточную систему с перемещающимися средними ((Madrid Ribbon) и относительно слабыми показателями ((RSI) фильтрами, чтобы обеспечить двойной механизм подтверждения для идентификации тенденций и выполнения сделок. В основе стратегии лежит структура ленточной формы, образованной путем мониторинга индикаторных перемещающихся средних ((EMA) с различными периодами от 5 до 90), а также введение RSI-индекса в качестве фильтрующих условий, эффективно снижающих ложные сигналы. Внутренняя стратегия включает в себя автоматическую торговую функцию, включающую в себя предопределенный стоп-лосс механизм, который определяет направление и силу рыночных тенденций путем вычисления количества зеленых и красных перемещающихся средних линий, а затем генерирует сигналы покупки и продажи.

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

Основные принципы стратегии основаны на анализе кластеров скользящих средних на нескольких временных рамках и фильтрации показателей RSI:

  1. Многовременные рамки с перемещающейся средней полосой: Стратегия построена на 18 скользящих средних с периодами от 5 до 90 и сравнивается с базовой линией на 100 периодов. Каждая скользящая средняя обозначена цветом в зависимости от направления ее изменения и положения относительно базовой линии:

    • Поднимается и находится над базовой линией: светло-зеленый ((lime)
    • Снижение и расположение над базовой линией: темно-красный (maroon)
    • снижение и находится ниже базовой линии: красный ((red))
    • Повышается и находится ниже базовой линии: зеленый
  2. Количественная интенсивность тренда: Стратегия количественного определения интенсивности тренда путем вычисления количества движущихся средних в зеленом (вверх) и красном (вниз) цветах:

    • Сильная тенденция к повышению, когда количество зеленых скользящих средних ≥ 13
    • Сильный нисходящий тренд, когда количество красных скользящих средних ≥ 9
  3. Фильтрация RSIВ качестве фильтрующих условий для снижения ложных сигналов в стратегии используются показатели RSI:

    • Сигнал покупки должен удовлетворять: зеленая скользящая средняя ≥13 и RSI <30 (область перепродажи)
    • Сигнал продажи должен удовлетворять: красная скользящая средняя ≥9 и RSI >70 (область перекупа)
  4. Механизм управления рисками: Стратегия устанавливает параметры стоп-лосса, основанные на процентах:

    • Множественная торговля: остановка установлена на входную цену +0.5%, остановка установлена на входную цену -1%
    • Порожная торговля: остановка установлена на входную цену -0.5%, остановка установлена на входную цену +1%
  5. Управление деньгами: Стратегия позволяет пользователям устанавливать начальную сумму и автоматически рассчитывать размер позиции на основе текущей цены.

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

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

  2. Количественная интенсивность трендаВ отличие от простой кросс-стратегии, эта стратегия измеряет силу тренда, рассчитывая количество различных цветных скользящих средних, что делает торговые решения более объективными и основанными на данных.

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

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

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

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

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

  1. Задержка в обратном направленииИз-за того, что стратегия зависит от нескольких движущихся средних, в случае быстрого поворота тренда может быть задержка реакции, что приводит к нежелательному времени для входа или выхода. В связи с этим риском можно рассмотреть возможность добавления показателей с более короткими периодами или корректировки параметров RSI, чтобы повысить чувствительность стратегии к изменениям рынка.

  2. Строгие условия фильтрации приводят к упущенным возможностямRSI фильтрует условия более строго (<30 и >70), что может привести к упущению потенциальных торговых возможностей. Пользователь может корректировать RSI-порог в соответствии с особенностями рынка, например, расширяя условия покупки до RSI <40, расширяя условия продажи до RSI >60

  3. Ограничения фиксированного стоп-стап-процента: Стратегия использует фиксированные процентные параметры стоп-стоп-убытков ((0,5% и 1%), которые могут быть недостаточно гибкими на рынках с различной волатильностью. Рекомендуется регулировать уровень стоп-стоп-убытков в зависимости от динамики средней реальной волатильности актива (ATR).

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

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

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

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

  2. Добавление фильтра силы трендаВведение индикатора ADX для измерения силы тренда, торговля только в условиях сильного тренда ADX> 25, избегание чрезмерного создания ложных сигналов в условиях слабого тренда или наклонного рынка.

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

  4. Введение подтверждения поставкиДобавление измерения анализа объема сделок, чтобы обеспечить достаточную поддержку участия рынка при появлении сигнала и повысить надежность торговых сигналов. Например, можно потребовать, чтобы объем сделок был выше среднего уровня за N дней при появлении сигнала покупки.

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

  6. Фильтр рыночной средыПроверка текущих рыночных условий с помощью показателей волатильности (например, VIX или ATR), корректировка параметров стратегии или приостановка торговли в условиях высокой волатильности, снижение риска в экстремальных рыночных условиях.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-03-24 00:00:00
end: 2025-03-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/

//@version=5
strategy("Madrid Ribbon Strategy with Backtesting", shorttitle="Madrid Ribbon Strat", overlay=true, default_qty_type=strategy.cash, default_qty_value=100000)

// Inputs
i_exp = input.bool(true, title="Use Exponential MA")
wallet_balance = input.float(100000, title="Starting Wallet Balance", minval=1000)

// RSI Settings
rsi_length = input.int(14, title="RSI Length")
rsi = ta.rsi(close, rsi_length)

// Profit Target & Stop Loss (%)
long_take_profit_perc = input.float(0.5, title="Long Take Profit (%)") / 100  // 0.5%
long_stop_loss_perc = input.float(1.0, title="Long Stop Loss (%)") / 100    // 1%
short_take_profit_perc = input.float(0.5, title="Short Take Profit (%)") / 100  // 0.5%
short_stop_loss_perc = input.float(1.0, title="Short Stop Loss (%)") / 100    // 1%

// Source
src = close

// Compute Moving Averages
ma05 = i_exp ? ta.ema(src, 5) : ta.sma(src, 5)
ma10 = i_exp ? ta.ema(src, 10) : ta.sma(src, 10)
ma15 = i_exp ? ta.ema(src, 15) : ta.sma(src, 15)
ma20 = i_exp ? ta.ema(src, 20) : ta.sma(src, 20)
ma25 = i_exp ? ta.ema(src, 25) : ta.sma(src, 25)
ma30 = i_exp ? ta.ema(src, 30) : ta.sma(src, 30)
ma35 = i_exp ? ta.ema(src, 35) : ta.sma(src, 35)
ma40 = i_exp ? ta.ema(src, 40) : ta.sma(src, 40)
ma45 = i_exp ? ta.ema(src, 45) : ta.sma(src, 45)
ma50 = i_exp ? ta.ema(src, 50) : ta.sma(src, 50)
ma55 = i_exp ? ta.ema(src, 55) : ta.sma(src, 55)
ma60 = i_exp ? ta.ema(src, 60) : ta.sma(src, 60)
ma65 = i_exp ? ta.ema(src, 65) : ta.sma(src, 65)
ma70 = i_exp ? ta.ema(src, 70) : ta.sma(src, 70)
ma75 = i_exp ? ta.ema(src, 75) : ta.sma(src, 75)
ma80 = i_exp ? ta.ema(src, 80) : ta.sma(src, 80)
ma85 = i_exp ? ta.ema(src, 85) : ta.sma(src, 85)
ma90 = i_exp ? ta.ema(src, 90) : ta.sma(src, 90)
ma100 = i_exp ? ta.ema(src, 100) : ta.sma(src, 100)

// Function for ribbon color
maColor(_ma, _maRef) =>
    diffMA = ta.change(_ma)
    resultColor = diffMA >= 0 and _ma > _maRef ? color.lime :
                  diffMA < 0 and _ma > _maRef ? color.maroon :
                  diffMA <= 0 and _ma < _maRef ? color.red :
                  diffMA >= 0 and _ma < _maRef ? color.green : color.gray
    resultColor

// Count Green and Red Ribbons
count_green = 0
count_red = 0

mas = array.new_float(18)
array.set(mas, 0, ma05)
array.set(mas, 1, ma10)
array.set(mas, 2, ma15)
array.set(mas, 3, ma20)
array.set(mas, 4, ma25)
array.set(mas, 5, ma30)
array.set(mas, 6, ma35)
array.set(mas, 7, ma40)
array.set(mas, 8, ma45)
array.set(mas, 9, ma50)
array.set(mas, 10, ma55)
array.set(mas, 11, ma60)
array.set(mas, 12, ma65)
array.set(mas, 13, ma70)
array.set(mas, 14, ma75)
array.set(mas, 15, ma80)
array.set(mas, 16, ma85)
array.set(mas, 17, ma90)

for i = 0 to array.size(mas) - 1
    ma = array.get(mas, i)
    col = maColor(ma, ma100)
    count_green += col == color.lime or col == color.green ? 1 : 0
    count_red += col == color.red or col == color.maroon ? 1 : 0

// Buy/Sell Conditions
buy_signal = count_green >= 13
sell_signal = count_red >= 9

// RSI Filtering
rsi_buy = buy_signal and rsi < 30
rsi_sell = sell_signal and rsi > 70

// Calculate Entry, Take Profit & Stop Loss for Long and Short
entry_price = close
long_take_profit = entry_price * (1 + long_take_profit_perc)  // +0.5%
long_stop_loss = entry_price * (1 - long_stop_loss_perc)      // -1%
short_take_profit = entry_price * (1 - short_take_profit_perc) // -0.5%
short_stop_loss = entry_price * (1 + short_stop_loss_perc)     // +1%

// Backtesting Orders
if rsi_buy
    strategy.entry("Buy", strategy.long, qty=wallet_balance / close)
    strategy.exit("Long Exit", from_entry="Buy", limit=long_take_profit, stop=long_stop_loss)
    alert("📈 Buy Signal! Entering long trade at " + str.tostring(entry_price), alert.freq_once_per_bar_close)

if rsi_sell
    strategy.entry("Sell", strategy.short, qty=wallet_balance / close)
    strategy.exit("Short Exit", from_entry="Sell", limit=short_take_profit, stop=short_stop_loss)
    alert("📉 Sell Signal! Entering short trade at " + str.tostring(entry_price), alert.freq_once_per_bar_close)

// Highlight Chart Background Based on Ribbon Counts
bgcolor(count_green >= 13 ? color.new(color.green, 90) : count_red >= 9 ? color.new(color.red, 90) : na, title="Ribbon Trend Highlight")

// Plot "B" when Buy Signal is active
plotshape(rsi_buy, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="B")

// Plot "S" when Sell Signal is active
plotshape(rsi_sell, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="S")

// Plot the Madrid Ribbon (all MAs)
plot(ma05, color=maColor(ma05, ma100), title="MA05", linewidth=1)
plot(ma10, color=maColor(ma10, ma100), title="MA10", linewidth=1)
plot(ma15, color=maColor(ma15, ma100), title="MA15", linewidth=1)
plot(ma20, color=maColor(ma20, ma100), title="MA20", linewidth=1)
plot(ma25, color=maColor(ma25, ma100), title="MA25", linewidth=1)
plot(ma30, color=maColor(ma30, ma100), title="MA30", linewidth=1)
plot(ma35, color=maColor(ma35, ma100), title="MA35", linewidth=1)
plot(ma40, color=maColor(ma40, ma100), title="MA40", linewidth=1)
plot(ma45, color=maColor(ma45, ma100), title="MA45", linewidth=1)
plot(ma50, color=maColor(ma50, ma100), title="MA50", linewidth=1)
plot(ma55, color=maColor(ma55, ma100), title="MA55", linewidth=1)
plot(ma60, color=maColor(ma60, ma100), title="MA60", linewidth=1)
plot(ma65, color=maColor(ma65, ma100), title="MA65", linewidth=1)
plot(ma70, color=maColor(ma70, ma100), title="MA70", linewidth=1)
plot(ma75, color=maColor(ma75, ma100), title="MA75", linewidth=1)
plot(ma80, color=maColor(ma80, ma100), title="MA80", linewidth=1)
plot(ma85, color=maColor(ma85, ma100), title="MA85", linewidth=1)
plot(ma90, color=maColor(ma90, ma100), title="MA90", linewidth=1)
plot(ma100, color=maColor(ma100, ma100), title="MA100", linewidth=2)