Эта стратегия является улучшенной версией традиционной системы Bollinger Bands, следующей за трендом. Она отслеживает ценовое действие в течение трех последовательных касаний Bollinger Bands, чтобы подтвердить надежность тренда, что приводит к более высоким показателям выигрыша. Стратегия использует 20-периодную скользящую среднюю в качестве средней полосы и 2 стандартных отклонения для верхней и нижней полос. Благодаря детальному анализу ценовых отношений с границами полос, она достигает торговой системы с уникальными преимуществами.
Основная логика основана на механизме подсчета для выявления устойчивых ценовых изменений границ полосы Болинджера. Система генерирует длинный сигнал, когда цена превышает нижнюю полосу три раза подряд, и короткий сигнал, когда цена превышает верхнюю полосу три раза подряд. Этот механизм эффективно фильтрует ложные прорывы, улучшая надежность торговли. Стратегия использует среднюю полосу (20-периодической скользящей средней) в качестве выходной сигналы, завершая сделки, когда цена возвращается в среднюю полосу.
Эта стратегия улучшает традиционные системы торговли полосами Боллинджера, внедряя высоконадежный подход к следующему тренду. Ее уникальный механизм подтверждения с тремя касаниями эффективно увеличивает показатели выигрыша, в то время как механизм выхода на основе скользящей средней обеспечивает рациональное решение получения прибыли. Хотя существуют присущие риски, предложенные направления оптимизации могут еще больше повысить стабильность и прибыльность стратегии.
/*backtest start: 2024-11-10 00:00:00 end: 2024-12-09 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("Bollinger Bands Strategy - 3 Crossings", overlay=true) // Input Parameters length = input.int(20, title="Bollinger Bands Length", minval=1) src = input(close, title="Source") mult = input.float(2.0, title="Multiplier", step=0.1) // Calculate Bollinger Bands basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot Bollinger Bands plotBasis = plot(basis, color=color.blue, title="Basis") plotUpper = plot(upper, color=color.red, title="Upper Band") plotLower = plot(lower, color=color.green, title="Lower Band") fill(plot1=plotUpper, plot2=plotLower, color=color.new(color.blue, 90), title="Band Fill") // Counter Variables var int longCrossCount = 0 var int shortCrossCount = 0 // Detect Crossings longCondition = close < lower // Price closes below the lower band shortCondition = close > upper // Price closes above the upper band if longCondition longCrossCount += 1 // Increment the counter for long shortCrossCount := 0 // Reset the short counter if shortCondition shortCrossCount += 1 // Increment the counter for short longCrossCount := 0 // Reset the long counter if not longCondition and not shortCondition longCrossCount := 0 // Reset if no crossing shortCrossCount := 0 // Entry and Exit Rules if longCrossCount >= 3 and strategy.position_size <= 0 strategy.entry("Long", strategy.long) longCrossCount := 0 // Reset the counter after entering if shortCrossCount >= 3 and strategy.position_size >= 0 strategy.entry("Short", strategy.short) shortCrossCount := 0 // Reset the counter after entering // Exit Condition (When Price Returns to the Middle Band) exitCondition = ta.crossover(src, basis) or ta.crossunder(src, basis) if exitCondition and strategy.position_size > 0 strategy.close("Long") if exitCondition and strategy.position_size < 0 strategy.close("Short")