
Стратегия синхронного трейдинга с двумя динамическими индикаторами - это система количественного трейдинга, основанная на техническом анализе, которая хитро сочетает в себе преимущества относительно сильного индикатора ((RSI) и индикатора рассеянности свертывания скользящих средних ((MACD) и фокусируется на захвате сильных восходящих тенденций на рынке. Стратегия выполняет только многоголовые сделки, реализуя систематизированный процесс принятия решений о сделках путем идентификации динамических сигналов прорыва и в сочетании с механизмом управления рисками.
Эта стратегия основана на взаимодействии двух ключевых технических показателей. Во-первых, стратегия использует RSI, чтобы измерить скорость и величину изменения цен, чтобы определить, находится ли рынок в состоянии перекупа или перепродажи; во-вторых, использует MACD, чтобы определить изменение тенденций рынка и силу динамики.
Условия участия:
Дополнительные условия фильтрации:
Условия участия:
Стратегия разработала механизм отслеживания состояния, чтобы гарантировать, что можно войти в состояние равновесия и выйти из состояния удержания, избегая проблемы с повторным сигналом. Такая конструкция позволяет каждому входу иметь только один выход, сохраняя ясность и согласованность логики торговли.
Синхронность показателейВ сочетании с преимуществами RSI и MACD, RSI может быстро реагировать на изменения цен, а MACD может подтверждать среднесрочную и долгосрочную тенденцию, что в сочетании повышает надежность сигнала.
Гибкий механизм фильтрацииСтратегия предлагает два варианта фильтрации на EMA-тенденции и контекстную фильтрацию на перепродажу, что позволяет трейдерам адаптировать стратегию в зависимости от различных рыночных условий.
Правильное управление рискамиВстроенный стоп-стоп-лосс, позволяющий трейдеру настроить процентные параметры в соответствии с его предпочтениями в отношении риска, эффективно контролируя рисковый порог для отдельных сделок.
Прозрачность управления состоянием: отслеживание состояния позиции с помощью переменных состояния, обеспечивает последовательность и логичность торговых сигналов, избегая проблем с повторным входом или выходом.
Высокая настройкаСтратегия предоставляет множество регулируемых параметров, включая длину RSI, MACD, фильтрующие условия и параметры управления рисками, что позволяет трейдерам оптимизировать в зависимости от различных рыночных условий и типов торгов.
Визуальная помощь: Стратегия предоставляет визуальные функции, такие как вход/выходные знаки, окрашивание K-линий и фоновое отображение триггеров, что позволяет трейдеру интуитивно понимать и корректировать стратегию.
Риск ложного проникновенияВ условиях волатильности рынка RSI и MACD могут часто давать ложные сигналы о прорыве, что приводит к последовательным убыточным сделкам. Для смягчения этого риска можно добавить дополнительные фильтры рыночной конъюнктуры, такие как индикаторы волатильности или индикаторы интенсивности тренда.
Ограничение односторонних сделок: Эта стратегия выполняет только многооборотные сделки, и в нисходящем тренде будет упущена потенциальная возможность декодирования. В полноценной торговой системе можно рассмотреть возможность добавления соответствующей пустой стратегии или приостановки торговли в явном нисходящем тренде.
Параметр Чувствительность: Стратегическая производительность чувствительна к параметровой настройке, различные рынки и временные рамки могут требовать различных комбинаций параметров. Рекомендуется оптимизировать параметры путем обратной связи в нескольких рыночных условиях и рассмотреть возможность использования метода адаптивных параметров.
Остановка рискаСлишком маленький стоп может привести к частым триггерам, а слишком большой стоп может привести к большим потерям. Стоп-проценты следует корректировать в соответствии с волатильными характеристиками целевого рынка или рассмотреть возможность использования динамических стоп-методов, таких как ATR-множественность.
Задержка сигналаВ качестве отстающих индикаторов, сигналы RSI и MACD могут появляться после того, как цена уже заметно изменилась, что влияет на цену входа и доходность. Для оптимизации времени входа можно рассмотреть возможность использования более чувствительных предыдущих индикаторов.
Система адаптивных параметровРазработка механизмов самостоятельной корректировки параметров, основанных на волатильности рынка или силе тренда, чтобы параметры RSI и MACD могли автоматически оптимизироваться в соответствии с текущими рыночными условиями, повышая адаптивность стратегии в различных рыночных условиях.
Анализ многовременных рамокВнедрение механизмов подтверждения в несколько временных рамок, например, подтверждение направления тренда в более крупные временные рамки, а затем выполнение конкретных сделок в более мелкие временные рамки, чтобы уменьшить количество ложных сигналов и повысить коэффициент выигрыша.
Динамический механизм остановки убытков: изменение фиксированных процентных стопов на динамические стопы, основанные на ATR, чтобы лучше адаптироваться к изменениям волатильности рынка, давая цене достаточно места для дыхания, защищая при этом средства.
Оптимизация управления капиталомВнедрение алгоритмов управления позициями, основанных на чистой стоимости счета, волатильности и выигрыше, таких как формула Келли или модель риска в фиксированной пропорции, чтобы риск для каждой сделки соответствовал текущим состояниям счета и рыночным условиям.
Интегрированные фильтры рыночной средыДобавление фильтров, позволяющих идентифицировать рыночную обстановку (тенденции, колебания или повороты), например, ADX (индекс среднего направления), индикатор волатильности или инструмент циклического анализа, чтобы совершать сделки при рыночных условиях, подходящих для стратегии.
Добавление логики для пустой торговли: Расширенная стратегия для включения правил торговли на пустом рынке, чтобы они могли быть эффективными во время нисходящего тренда, создавая таким образом всеобъемлющую торговую систему.
Стратегия синхронного трейдинга с двумя динамическими индикаторами создает количественную торговую систему с четкой логикой и управляемым риском, используя преимущества двух классических технических показателей RSI и MACD. Стратегия фокусируется на захвате динамических возможностей в восходящих тенденциях, а также на повышении качества торговли с помощью множества механизмов фильтрации и инструментов управления рисками. Хотя существуют inherent риски, такие как ложные прорывы и чувствительность к параметрам, эта стратегия имеет потенциал для дальнейшего повышения своей эффективности в различных рыночных условиях с помощью рекомендуемых направлений оптимизации, таких как адаптация к параметрам, анализ многократных временных рамок и управление динамическими рисками.
/*backtest
start: 2025-02-28 00:00:00
end: 2025-08-10 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
// Vibe coded by Andrew Grothe 2025-08-08. Adjust the TP/SL on lines 28 & 29 to fine tune the strategy
strategy("RSI + MACD Long-Only Strategy", overlay=true, pyramiding=0, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.0)
// Inputs — RSI
rsiLen = input.int(14, "RSI Length", minval=1, group="RSI")
rsiOB = input.int(70, "RSI Overbought", minval=50, maxval=100, group="RSI")
rsiOS = input.int(30, "RSI Oversold", minval=0, maxval=50, group="RSI")
rsiMid = input.int(50, "RSI Midline", minval=0, maxval=100, group="RSI")
// Inputs — MACD
fastLen = input.int(12, "MACD Fast Length", minval=1, group="MACD")
slowLen = input.int(26, "MACD Slow Length", minval=1, group="MACD")
sigLen = input.int(9, "MACD Signal Length", minval=1, group="MACD")
requireAboveZero = input.bool(false, "Require MACD > 0 (trend filter)", group="MACD")
// Inputs — Filters & Visuals
useOversoldContext = input.bool(false, "Entry must be within N bars after RSI < Oversold", group="Signals")
oversoldWindowBars = input.int(10, "N bars after oversold", minval=1, group="Signals")
useEMATrend = input.bool(false, "Only Long if price > EMA", group="Signals")
emaLen = input.int(200, "EMA Length", minval=1, group="Signals")
showMarkers = input.bool(true, "Plot Entry/Exit Markers", group="Visuals")
colorBars = input.bool(false, "Color Bars on Signals", group="Visuals")
// Inputs — Risk
// 1 hour = 2.0/1.0, 2 hour = 10.5/2.5
useTPSL = input.bool(true, "Use Take Profit / Stop Loss", group="Risk")
tpPerc = input.float(11.5, "Take Profit %", minval=0.0, step=0.1, group="Risk")
slPerc = input.float(2.5, "Stop Loss %", minval=0.0, step=0.1, group="Risk")
// Core calculations
rsi = ta.rsi(close, rsiLen)
[macd, macdSignal, macdHist] = ta.macd(close, fastLen, slowLen, sigLen)
emaTrend = ta.ema(close, emaLen)
// Conditions
macdBull = macd > macdSignal and (not requireAboveZero or macd > 0)
rsiBull = rsi > rsiMid
recentlyOversold = ta.barssince(rsi < rsiOS) <= oversoldWindowBars
trendOk = not useEMATrend or close > emaTrend
// Precompute cross events to avoid conditional execution warnings
rsiCrossUpMid = ta.crossover(rsi, rsiMid)
macdCrossUp = ta.crossover(macd, macdSignal)
rsiCrossDownMid = ta.crossunder(rsi, rsiMid)
macdCrossDown = ta.crossunder(macd, macdSignal)
// Signals (long-only)
longTrigger = (rsiCrossUpMid and macdBull) or (macdCrossUp and rsi >= rsiMid)
longEntry = longTrigger and (not useOversoldContext or recentlyOversold) and trendOk
exitSignal = rsiCrossDownMid or (macdCrossDown and macdHist <= 0)
// Stateful gating so we only get one exit per entry
var bool inLong = false
inLongPrev = barstate.isfirst ? false : inLong[1]
finalLongEntry = longEntry and not inLongPrev
finalExit = exitSignal and inLongPrev
inLong := (inLongPrev or finalLongEntry) and not finalExit
// Plots
plot(useEMATrend ? emaTrend : na, title="EMA", color=color.orange, linewidth=2)
plotshape(showMarkers and finalLongEntry, title="Long Entry", style=shape.triangleup, location=location.belowbar, color=color.lime, size=size.tiny, text="Long")
plotshape(showMarkers and finalExit, title="Exit", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, text="Exit")
barcolor(colorBars ? (finalLongEntry ? color.lime : finalExit ? color.red : na) : na)
// Debug background to visualize when raw long trigger occurs
bgcolor(longTrigger ? color.new(color.lime, 90) : na)
// Alerts
//alertcondition(finalLongEntry, title="RSI+MACD Long Entry", message="RSI+MACD Long Entry on {{ticker}} {{interval}} at {{close}}")
//alertcondition(finalExit, title="RSI+MACD Exit", message="RSI+MACD Exit on {{ticker}} {{interval}} at {{close}}")
// Strategy Orders — Long only
if finalLongEntry
strategy.entry("Long", strategy.long)
// Protective exits (TP/SL) while in position
if useTPSL and strategy.position_size > 0
longSL = strategy.position_avg_price * (1 - slPerc / 100.0)
longTP = strategy.position_avg_price * (1 + tpPerc / 100.0)
strategy.exit("Long TP/SL", from_entry="Long", stop=longSL, limit=longTP)
// Signal-based exit
if finalExit and strategy.position_size > 0
strategy.close("Long", comment="Signal Exit")