Стратегия скальпинга RSI Momentum

RSI VOLUME momentum TRAILING
Дата создания: 2025-09-29 18:07:14 Последнее изменение: 2025-09-29 18:07:14
Копировать: 0 Количество просмотров: 527
2
Подписаться
319
Подписчики

Стратегия скальпинга RSI Momentum Стратегия скальпинга RSI Momentum

8 циклов RSI + динамический спад 14. Это не традиционная стратегия RSI

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

Основная логика очень проста: RSI вызывает многоголовый сигнал при изменении динамики >14 и пустой сигнал при <-14. При этом требуется среднее количество сделок, превышающее 13 циклов, чтобы убедиться, что это не ложный прорыв. Такая конструкция на 1-2 цикла раньше, чем просто RSI сверхпокупка сверхпродажа, чтобы захватить золотой момент начала тренда.

4.15% Stop Loss против 1.85% Stop Loss: риско-прибыль более чем 2:1

Стоп-стоп составляет 4,15%, стоп-лосс - 1,85%, а риск-прибыль соотношение достигает 2,24:1. Это соотношение считается радикальным в стратегии снятия с головы, но в сочетании с 2,55 процентами движущихся стоп-лосс, фактический контроль риска более строг.

Ключевой момент заключается в дизайне движущихся стоп-ложек: как только цена движется в пользу, стоп-линия будет следовать динамической коррекции максимума / минимума. Это означает, что большая часть прибыли может быть заблокирована, даже если не будет достигнута цель стоп-ложек 4.15%. В реальном бою многие сделки будут выведены с движущимися стоп-ложеками в 2-3% от позиции, что позволит избежать обратного оттока прибыли.

Фильтр загрузки: 1-кратное умножение выглядит консервативно, но в действительности оно точно

Для открытия позиции необходимо, чтобы объем сделки превышал среднее значение 13 циклов. Эта конструкция отфильтровывает 90% ложных сигналов. Многие стратегии RSI часто открывают позиции в условиях низкого количества, в результате чего их ломают.

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

Трехкратное условие входа: не каждый RSI-сигнал стоит торговли

Многоголовый вход требует выполнения одного из трех условий: RSI динамика > 14, RSI отскок от зоны oversold, RSI проходит через линию oversold. Эта конструкция более гибкая, чем одноголовый, и адаптируется к различным состояниям рынка.

Сверхпродажная линия устанавливается на 10, сверхпокупаемая линия устанавливается на 90, что более экстремально, чем традиционная 3070. Плюс в том, что это уменьшает количество ложных сигналов, плюс в том, что вы можете пропустить некоторые возможности.

Сценарий применения: рай коротких линий для высоковибрационных сортов

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

Лучшее время для транзакций в европейском и американском часовом диапазоне, когда лучшая ликвидность и наиболее эффективные фильтры транзакций. Азиатское время снижает качество сигнала из-за низкой транзакции.

Предупреждение о риске: наибольшая угроза - непрерывные потери

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

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

Исходный код стратегии
/*backtest
start: 2024-09-29 00:00:00
end: 2025-09-26 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Bybit","currency":"ETH_USDT","balance":500000}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MonkeyPhone

//@version=5
strategy("RSI Momentum Scalper", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills=true)

// Trading Mode Selection
tradeMode = input.string("Both", title="Trade Mode", options=["Both", "Long Only", "Short Only"])

// RSI Settings
rsiLength = input.int(8, title="RSI Length", minval=2, maxval=30)
rsiOverbought = input.int(90, title="RSI Overbought", minval=60, maxval=99)
rsiOversold = input.int(10, title="RSI Oversold", minval=1, maxval=40)
rsiMomentumThreshold = input.float(14, title="RSI Momentum Threshold", minval=1, maxval=15, step=0.5)

// Volume Settings
volMultiplier = input.float(1, title="Volume Multiplier", minval=1.0, maxval=3.0, step=0.1)
volLookback = input.int(13, title="Volume MA Length", minval=5, maxval=50)

// Exit Settings
takeProfitPercent = input.float(4.15, title="Take Profit %", minval=0.1, maxval=10.0, step=0.1)
stopLossPercent = input.float(1.85, title="Stop Loss %", minval=0.1, maxval=6.0, step=0.1)
trailingStopPercent = input.float(2.55, title="Trailing Stop %", minval=0.1, maxval=4.0, step=0.05)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)
rsiMA = ta.sma(rsi, 3)

// Calculate RSI Momentum
rsiMomentum = rsi - rsi[1]

// Volume Analysis
volMA = ta.sma(volume, volLookback)
highVolume = volume > volMA * volMultiplier

// Entry Conditions - Long
bullishMomentum = rsiMomentum > rsiMomentumThreshold
oversoldBounce = rsi < rsiOversold and rsi > rsi[1]
bullishCross = ta.crossover(rsi, rsiOversold)
longCondition = (bullishMomentum or oversoldBounce or bullishCross) and highVolume and close > close[1]

// Entry Conditions - Short
bearishMomentum = rsiMomentum < -rsiMomentumThreshold
overboughtReversal = rsi > rsiOverbought and rsi < rsi[1]
bearishCross = ta.crossunder(rsi, rsiOverbought)
shortCondition = (bearishMomentum or overboughtReversal or bearishCross) and highVolume and close < close[1]

// Apply trade mode filter
longEntry = longCondition and (tradeMode == "Both" or tradeMode == "Long Only")
shortEntry = shortCondition and (tradeMode == "Both" or tradeMode == "Short Only")

// Entry Logic
strategy.entry("Long", strategy.long, when=longEntry and strategy.position_size == 0)
strategy.entry("Short", strategy.short, when=shortEntry and strategy.position_size == 0)

// Declare and initialize trailing variables
var float highest_since_long = na
var float lowest_since_short = na
var float long_trailing_level = na
var float short_trailing_level = na
var float long_fixed_sl = na
var float long_tp = na
var float short_fixed_sl = na
var float short_tp = na

// Update trailing levels using ternary operators with math.max/min
highest_since_long := strategy.position_size > 0 ? math.max(na(highest_since_long[1]) ? math.max(high, strategy.position_avg_price) : highest_since_long[1], high) : na
lowest_since_short := strategy.position_size < 0 ? math.min(na(lowest_since_short[1]) ? math.min(low, strategy.position_avg_price) : lowest_since_short[1], low) : na

// Calculate exit levels
long_fixed_sl := strategy.position_size > 0 ? strategy.position_avg_price * (1 - stopLossPercent / 100) : na
long_tp := strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeProfitPercent / 100) : na
long_trailing_level := strategy.position_size > 0 ? highest_since_long * (1 - trailingStopPercent / 100) : na
short_fixed_sl := strategy.position_size < 0 ? strategy.position_avg_price * (1 + stopLossPercent / 100) : na
short_tp := strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeProfitPercent / 100) : na
short_trailing_level := strategy.position_size < 0 ? lowest_since_short * (1 + trailingStopPercent / 100) : na

// Effective stop loss levels
effective_long_sl = strategy.position_size > 0 ? math.max(long_fixed_sl, long_trailing_level) : na
effective_short_sl = strategy.position_size < 0 ? math.min(short_fixed_sl, short_trailing_level) : na

// Exit Logic
strategy.exit("Long Exit", "Long", limit=long_tp, stop=effective_long_sl, when=strategy.position_size > 0)
strategy.exit("Short Exit", "Short", limit=short_tp, stop=effective_short_sl, when=strategy.position_size < 0)

// Plot TP, fixed SL, and trailing SL levels on chart when in position
plot(strategy.position_size > 0 ? long_tp : na, title="Long TP", color=color.green, style=plot.style_linebr)
plot(strategy.position_size > 0 ? long_fixed_sl : na, title="Long Fixed SL", color=color.red, style=plot.style_linebr)
plot(strategy.position_size > 0 ? long_trailing_level : na, title="Long Trailing SL", color=color.orange, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_tp : na, title="Short TP", color=color.green, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_fixed_sl : na, title="Short Fixed SL", color=color.red, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_trailing_level : na, title="Short Trailing SL", color=color.orange, style=plot.style_linebr)

// Alerts
alertcondition(longEntry, title="Long Entry Alert", message="RSI Momentum Long Signal")
alertcondition(shortEntry, title="Short Entry Alert", message="RSI Momentum Short Signal")