Эта стратегия представляет собой комплексную торговую систему, основанную на полосах Боллинджера, индикаторе RSI и скользящих средних. Она определяет потенциальные торговые возможности с помощью диапазона волатильности цены полос Боллинджера, уровней перекупленности / перепроданности RSI и фильтрации тренда EMA. Система поддерживает как длинные, так и короткие сделки и предоставляет несколько механизмов выхода для защиты капитала.
Стратегия основана на следующих основных компонентах:
Это хорошо разработанная количественная стратегия торговли, которая использует различные технические индикаторы для получения рыночных возможностей. Стратегия очень конфигурируема и может адаптироваться к различным потребностям торговли. Хотя существуют определенные риски, ее стабильность и надежность могут быть еще больше повышены с помощью оптимизации параметров и дополнительных вспомогательных индикаторов.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-11 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Scalp Pro", overlay=true) // Inputs for the strategy length = input(20, title="Bollinger Band Length") src = input(close, title="Source") mult = input(1.8, title="Bollinger Band Multiplier") rsiLength = input(7, title="RSI Length") rsiOverbought = input(75, title="RSI Overbought Level") rsiOversold = input(25, title="RSI Oversold Level") // Custom RSI exit points rsiExitLong = input(75, title="RSI Exit for Long (Overbought)") rsiExitShort = input(25, title="RSI Exit for Short (Oversold)") // Moving Average Inputs emaLength = input(500, title="EMA Length") enableEMAFilter = input.bool(true, title="Enable EMA Filter") // Exit method: Choose between 'RSI' and 'Bollinger Bands' exitMethod = input.string("RSI", title="Exit Method", options=["RSI", "Bollinger Bands"]) // Enable/Disable Long and Short trades enableLong = input.bool(true, title="Enable Long Trades") enableShort = input.bool(false, title="Enable Short Trades") // Enable/Disable Stop Loss enableStopLoss = input.bool(false, title="Enable Stop Loss") stopLossPercent = input.float(1.0, title="Stop Loss Percentage (%)", minval=0.1) / 100 // Bollinger Bands calculation basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upperBB = basis + dev lowerBB = basis - dev // RSI calculation rsi = ta.rsi(src, rsiLength) // 200 EMA to filter trades (calculated but only used if enabled) ema200 = ta.ema(src, emaLength) // Long condition: RSI below oversold, price closes below the lower Bollinger Band, and optionally price is above the 200 EMA longCondition = enableLong and (rsi < rsiOversold) and (close < lowerBB) and (not enableEMAFilter or close > ema200) if (longCondition) strategy.entry("Long", strategy.long) // Short condition: RSI above overbought, price closes above the upper Bollinger Band, and optionally price is below the 200 EMA shortCondition = enableShort and (rsi > rsiOverbought) and (close > upperBB) and (not enableEMAFilter or close < ema200) if (shortCondition) strategy.entry("Short", strategy.short) // Stop Loss setup if (enableStopLoss) strategy.exit("Long Exit", "Long", stop = strategy.position_avg_price * (1 - stopLossPercent)) strategy.exit("Short Exit", "Short", stop = strategy.position_avg_price * (1 + stopLossPercent)) // Exit conditions based on the user's choice of exit method if (exitMethod == "RSI") // Exit based on RSI exitLongCondition = rsi >= rsiExitLong if (exitLongCondition) strategy.close("Long") exitShortCondition = rsi <= rsiExitShort if (exitShortCondition) strategy.close("Short") else if (exitMethod == "Bollinger Bands") // Exit based on Bollinger Bands exitLongConditionBB = close >= upperBB if (exitLongConditionBB) strategy.close("Long") exitShortConditionBB = close <= lowerBB if (exitShortConditionBB) strategy.close("Short")