Эта стратегия представляет собой следующую систему трендов, которая сочетает в себе полосы Боллинджера, показатели волатильности и управление рисками. Она отслеживает трендовые возможности путем мониторинга ценовых прорывов за пределами полос Боллинджера при динамической корректировке размеров позиций с использованием ATR для точного контроля риска. Стратегия также включает механизм обнаружения периода консолидации для эффективной фильтрации ложных сигналов на рыночных диапазонах.
Стратегия основывается на следующей логике: 1. Использует 20-периодную скользящую среднюю в качестве средней полосы полос Боллинджера, с верхней и нижней полосами при 2 стандартных отклонениях. 2. Определяет периоды консолидации рынка путем сравнения текущей ширины полосы Боллинджера с ее скользящей средней. В периоды, не связанные с консолидацией, вводятся длинные позиции на прорывах верхней полосы и короткие позиции на прорывах нижней полосы. 4. Использует 14-периодный ATR для динамического расчета уровней стоп-лосса и устанавливает уровни получения прибыли на основе соотношения риск-вознаграждение 2:1. Автоматически рассчитывает размеры позиций для каждой сделки на основе 1% лимита риска счета и значения ATR.
Эта стратегия отслеживает тенденции с помощью прорывов полос Боллинджера, включая комплексную систему контроля рисков. Ее сильные стороны заключаются в высокой адаптивности и контролируемом риске, хотя необходимо обратить внимание на ложные прорывы и риски обратного тренда. Стратегия имеет место для дальнейшего улучшения путем добавления индикаторов подтверждения тренда и оптимизации механизмов корректировки параметров. В целом, она представляет собой логически обоснованную и практичную стратегию следования тренду.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-08 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Breakout Strategy", overlay=true) // Input parameters length = input(20, title="Bollinger Bands Length") stdDev = input(2.0, title="Standard Deviation") riskRewardRatio = input(2.0, title="Risk/Reward Ratio") atrLength = input(14, title="ATR Length") riskPercentage = input(1.0, title="Risk Percentage per Trade") // Calculate Bollinger Bands basis = ta.sma(close, length) dev = stdDev * ta.stdev(close, length) upperBand = basis + dev lowerBand = basis - dev // Calculate ATR for position sizing atr = ta.atr(atrLength) // Plot Bollinger Bands plot(basis, color=color.blue, title="Basis") plot(upperBand, color=color.red, title="Upper Band") plot(lowerBand, color=color.green, title="Lower Band") // Market Consolidation Detection isConsolidating = (upperBand - lowerBand) < ta.sma(upperBand - lowerBand, length) * 0.5 // Breakout Conditions longCondition = ta.crossover(close, upperBand) and not isConsolidating shortCondition = ta.crossunder(close, lowerBand) and not isConsolidating // Risk Management: Calculate position size equity = strategy.equity riskAmount = equity * (riskPercentage / 100) positionSize = riskAmount / (atr * riskRewardRatio) // Execute trades with risk management if (longCondition) strategy.entry("Long", strategy.long, qty=positionSize) strategy.exit("Take Profit", from_entry="Long", limit=close + atr * riskRewardRatio, stop=close - atr) if (shortCondition) strategy.entry("Short", strategy.short, qty=positionSize) strategy.exit("Take Profit", from_entry="Short", limit=close - atr * riskRewardRatio, stop=close + atr) // Alert conditions for breakouts alertcondition(longCondition, title="Long Breakout", message="Long breakout detected!") alertcondition(shortCondition, title="Short Breakout", message="Short breakout detected!")