Diese Strategie ist ein quantitatives Handelssystem, das den Relative Strength Index (RSI) und die Moving Averages (MA) kombiniert, um Markttrends und Handelschancen zu identifizieren. Das System enthält auch Volumen- und Volatilitätsfilter, um die Zuverlässigkeit von Handelssignalen zu verbessern. Das Kernkonzept besteht darin, die Trendrichtung durch die Überschneidung von schnellen und langsamen gleitenden Durchschnitten zu bestimmen, während der RSI zur Bestätigung der Dynamik verwendet wird, was letztendlich einen vollständigen Handelsentscheidungsrahmen bildet.
Die Strategie verwendet einen Doppelsignal-Bestätigungsmechanismus: 1. Trendbestätigungsschicht: Verwendet die Überschneidung von Fast Moving Average (FastMA) und Slow Moving Average (SlowMA) zur Bestimmung von Markttrends. Wenn die schnelle Linie über die langsame Linie überschreitet, wird ein Aufwärtstrend festgelegt; wenn die schnelle Linie unter die langsame Linie überschreitet, wird ein Abwärtstrend festgelegt. 2. Momentum-Bestätigungsschicht: Verwendet den RSI als Momentum-Bestätigungsinstrument. Bei Aufwärtstrends sollte der RSI unter 50 liegen, was auf ein Aufwärtstrendpotenzial hinweist; bei Abwärtstrends sollte der RSI über 50 liegen, was auf ein Abwärtstrendpotenzial hinweist. Handelsfilter: Setzt Mindestschwellen für Volumen und ATR-Volatilität, um Signale mit unzureichender Liquidität oder Volatilität auszufiltern.
Diese Strategie etabliert ein umfassendes Handelssystem durch die integrierte Nutzung von Trend- und Momentumindikatoren. Die Stärken des Systems liegen in seinem mehrschichtigen Signalbestätigungsmechanismus und einem umfassenden Risikomanagement-Framework. Die praktische Anwendung erfordert jedoch die Aufmerksamkeit für die Auswirkungen der Marktbedingungen auf die Strategieleistung und die Optimierung von Parametern auf der Grundlage der tatsächlichen Umstände. Durch kontinuierliche Verbesserung und Optimierung hat diese Strategie das Potenzial, eine stabile Performance in verschiedenen Marktumgebungen zu erhalten.
/*backtest start: 2024-01-17 00:00:00 end: 2025-01-16 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ // © Boba2601 //@version=5 strategy("RSI-MA Synergy", overlay=true, margin_long=100, margin_short=100) // === Налаштування індикаторів === length_rsi = input.int(14, title="RSI Period", group="Індикатори") fastMALength = input.int(9, title="Fast MA Length", group="Індикатори") slowMALength = input.int(21, title="Slow MA Length", group="Індикатори") // === Налаштування стоп-лосу і тейк-профіту === useStopLossTakeProfit = input.bool(true, title="Використовувати стоп-лос і тейк-профіт", group="Стоп-лос і Тейк-профіт") stopLossPercent = input.float(2.0, title="Стоп-лос (%)", minval=0.1, step=0.1, group="Стоп-лос і Тейк-профіт") takeProfitPercent = input.float(4.0, title="Тейк-профіт (%)", minval=0.1, step=0.1, group="Стоп-лос і Тейк-профіт") // === Налаштування об'єму та волатильності === useVolumeFilter = input.bool(false, title="Використовувати фільтр об'єму", group="Об'єм та Волатильність") volumeThreshold = input.int(50000, title="Мінімальний об'єм", group="Об'єм та Волатильність") useVolatilityFilter = input.bool(false, title="Використовувати фільтр волатильності", group="Об'єм та Волатильність") atrLength = input.int(14, title="Період ATR для волатильності", group="Об'єм та Волатильність") volatilityThreshold = input.float(1.5, title="Мінімальна волатильність (ATR)", step=0.1, group="Об'єм та Волатильність") // === Розрахунок індикаторів === rsiValue = ta.rsi(close, length_rsi) fastMA = ta.sma(close, fastMALength) slowMA = ta.sma(close, slowMALength) // === Розрахунок об'єму та волатильності === averageVolume = ta.sma(volume, 20) atrValue = ta.atr(atrLength) // === Умови входу в позицію === longCondition = ta.crossover(fastMA, slowMA) and rsiValue < 50 if useVolumeFilter longCondition := longCondition and volume > volumeThreshold if useVolatilityFilter longCondition := longCondition and atrValue > volatilityThreshold shortCondition = ta.crossunder(fastMA, slowMA) and rsiValue > 50 if useVolumeFilter shortCondition := shortCondition and volume > volumeThreshold if useVolatilityFilter shortCondition := shortCondition and atrValue > volatilityThreshold // === Логіка входу та виходу з позиції === if (longCondition) strategy.entry("Long", strategy.long) if (useStopLossTakeProfit) stopLossPrice = close * (1 - stopLossPercent / 100) takeProfitPrice = close * (1 + takeProfitPercent / 100) strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice) if (shortCondition) strategy.entry("Short", strategy.short) if (useStopLossTakeProfit) stopLossPrice = close * (1 + stopLossPercent / 100) takeProfitPrice = close * (1 - takeProfitPercent / 100) strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice) // === Закриття позицій за зворотнім сигналом === if (strategy.position_size > 0 and (ta.crossunder(fastMA, slowMA) or rsiValue > 50)) strategy.close("Long", comment="Закрито по сигналу") if (strategy.position_size < 0 and (ta.crossover(fastMA, slowMA) or rsiValue < 50)) strategy.close("Short", comment="Закрито по сигналу")