
Эта стратегия является высококвалифицированной системой торговли, которая объединяет динамический осциллятор Чанда (CMO) и полосы Боллинджа (Bollinger Bands). Она идентифицирует состояние перекупа и перепродажи на рынке, анализируя волатильность цен и динамические индикаторы, чтобы создать точный торговый сигнал. Эта стратегия использует механизм двойной проверки, использующий обратную динамику и прорыв в ценовом канале, что эффективно повышает надежность торгов.
Основная логика стратегии основана на следующих ключевых компонентах:
Стратегия создает целостную систему сделок с помощью совместной работы Бринбета и CMO. Стратегия повышает надежность сделок с помощью механизма многократного подтверждения, сохраняя при этом операционную объективность. Стратегия демонстрирует хорошую практичность и масштабируемость с помощью разумной настройки параметров и контроля риска.
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Chande Momentum Oscillator + Bollinger Bands Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Bollinger Bands Parameters
bbLength = input.int(20, title="Bollinger Bands Length")
bbStdDev = input.float(2.0, title="Bollinger Bands Std Dev")
basis = ta.sma(close, bbLength)
upper = basis + bbStdDev * ta.stdev(close, bbLength)
lower = basis - bbStdDev * ta.stdev(close, bbLength)
// Chande Momentum Oscillator Parameters
cmoLength = input.int(14, title="CMO Length")
cmoOverbought = input.float(50, title="CMO Overbought Level")
cmoOversold = input.float(-50, title="CMO Oversold Level")
cmo = ta.cmo(close, cmoLength)
// Plot Bollinger Bands
plot(basis, color=color.orange, title="Bollinger Basis")
p1 = plot(upper, color=color.blue, title="Bollinger Upper")
p2 = plot(lower, color=color.blue, title="Bollinger Lower")
fill(p1, p2, color=color.blue, transp=90, title="Bollinger Fill")
// Plot CMO
hline(cmoOverbought, "Overbought", color=color.red)
hline(cmoOversold, "Oversold", color=color.green)
plot(cmo, color=color.purple, title="CMO")
// Buy Condition: Price crosses below lower Bollinger Band and CMO is oversold
longCondition = ta.crossunder(close, lower) and cmo < cmoOversold
if (longCondition)
strategy.entry("Long", strategy.long)
// Sell Condition: Price crosses above upper Bollinger Band and CMO is overbought
shortCondition = ta.crossover(close, upper) and cmo > cmoOverbought
if (shortCondition)
strategy.entry("Short", strategy.short)
// Exit Long: Price crosses above basis or CMO is overbought
exitLong = ta.crossover(close, basis) or cmo > cmoOverbought
if (exitLong)
strategy.close("Long")
// Exit Short: Price crosses below basis or CMO is oversold
exitShort = ta.crossunder(close, basis) or cmo < cmoOversold
if (exitShort)
strategy.close("Short")