Эта стратегия представляет собой адаптивную торговую систему с средней реверсией, основанную на индикаторе Болинджерских полос. Она улавливает перекупленные и перепроданные возможности путем мониторинга ценовых кроссоверов с Болинджерскими полосами, торгуя по принципу средней реверсии. Стратегия включает в себя динамическое размещение позиций и механизмы управления рисками, подходящие для нескольких рынков и временных рамок.
Основная логика основана на следующих моментах: 1. Использует 20-периодную скользящую среднюю в качестве средней полосы, с 2 стандартными отклонениями для верхней и нижней полос. 2. Открывает длинные позиции, когда цена опускается ниже нижней полосы (сигнал перепродажи). Открывает короткие позиции, когда цена превышает верхнюю полосу (сигнал перекупленности). Принимает прибыль, когда цена возвращается в средний диапазон. 5. Установка стоп-лосса на 1% и прибыли на 2%, достижение соотношения риск-вознаграждение 2: 1. 6. Использует размер позиций на основе процента, инвестируя 1% от собственного капитала счета на одну сделку.
Консолидационный рыночный риск - может привести к убыткам из-за частой торговли на различных рынках. Решение: Добавьте фильтры тренда, торгуйте только тогда, когда тренд ясен.
Риск ложного выхода - цена может быстро измениться после выхода. Решение: Добавить подтверждающие сигналы, такие как объем или другие технические показатели.
Систематический риск - может иметь большие потери в экстремальных рыночных условиях. Решение: внедрить максимальные лимиты привлечения, автоматически прекратить торговлю при достижении порога.
Эта стратегия фиксирует отклонение цены с использованием полос Боллинджера и торгует по принципу среднего реверсии. Ее всестороннее управление рисками и четкие правила торговли обеспечивают хорошую практичность. Благодаря предложенным оптимизациям стабильность и рентабельность стратегии могут быть еще больше повышены. Она подходит для количественных трейдеров, ищущих стабильную прибыль.
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 10m basePeriod: 10m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Bollinger Bands Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200) // Inputs for Bollinger Bands bbLength = input.int(20, title="Bollinger Bands Length") bbStdDev = input.float(2.0, title="Bollinger Bands StdDev") // Inputs for Risk Management stopLossPerc = input.float(1.0, title="Stop Loss (%)", minval=0.1, step=0.1) takeProfitPerc = input.float(2.0, title="Take Profit (%)", minval=0.1, step=0.1) // Calculate Bollinger Bands basis = ta.sma(close, bbLength) bbStdev = ta.stdev(close, bbLength) upper = basis + bbStdDev * bbStdev lower = basis - bbStdDev * bbStdev // Plot Bollinger Bands plot(basis, color=color.blue, title="Middle Band") plot(upper, color=color.red, title="Upper Band") plot(lower, color=color.green, title="Lower Band") // Entry Conditions longCondition = ta.crossover(close, lower) shortCondition = ta.crossunder(close, upper) // Exit Conditions exitLongCondition = ta.crossunder(close, basis) exitShortCondition = ta.crossover(close, basis) // Stop Loss and Take Profit Levels longStopLoss = close * (1 - stopLossPerc / 100) longTakeProfit = close * (1 + takeProfitPerc / 100) shortStopLoss = close * (1 + stopLossPerc / 100) shortTakeProfit = close * (1 - takeProfitPerc / 100) // Execute Long Trades if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry="Long", stop=longStopLoss, limit=longTakeProfit) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit) // Close Positions on Exit Conditions if (exitLongCondition and strategy.position_size > 0) strategy.close("Long") if (exitShortCondition and strategy.position_size < 0) strategy.close("Short") // 🔊 SOUND ALERTS IN BROWSER 🔊 if (longCondition) alert("🔔 Long Entry Signal!", alert.freq_once_per_bar_close) if (shortCondition) alert("🔔 Short Entry Signal!", alert.freq_once_per_bar_close) if (exitLongCondition) alert("🔔 Closing Long Trade!", alert.freq_once_per_bar_close) if (exitShortCondition) alert("🔔 Closing Short Trade!", alert.freq_once_per_bar_close)