Эта стратегия представляет собой трендоустойчивую торговую систему, основанную на осцилляторе импульса Чанде (CMO). Она ищет возможности покупки в перепроданных регионах и возможности продажи в перекупленных регионах, включая временные ограничения на удержание позиций для управления рисками. Этот подход позволяет улавливать перевороты цен, избегая частой торговли на различных рынках.
В основе стратегии используется индикатор CMO для измерения импульса рынка. CMO генерирует осциллятор в диапазоне от -100 до 100 путем расчета соотношения разницы между движениями вверх и вниз к их сумме. Система генерирует длинный сигнал, когда CMO падает ниже -50, что указывает на перепроданное состояние рынка. Позиции закрываются, когда CMO превышает 50 или когда период удержания превышает 5 циклов. Эта конструкция улавливает возможности восстановления цены при реализации своевременных мер по получению прибыли и прекращению потерь.
Эта стратегия, основанная на динамике, использует индикатор CMO для определения возможностей перекупления и перепродажи на рынке. Разработка стратегии рациональна, с четкими правилами торговли и механизмами контроля рисков. Хотя существуют существующие риски, оптимизация может еще больше повысить стабильность и прибыльность стратегии. Стратегия особенно подходит для очень волатильных рынков и может достигать хорошей доходности во время очевидных фаз тренда.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Chande Momentum Oscillator Strategy", overlay=false) // Input for the CMO period cmoPeriod = input.int(9, minval=1, title="CMO Period") // Calculate price changes priceChange = ta.change(close) // Separate positive and negative changes up = priceChange > 0 ? priceChange : 0 down = priceChange < 0 ? -priceChange : 0 // Calculate the sum of ups and downs using a rolling window sumUp = ta.sma(up, cmoPeriod) * cmoPeriod sumDown = ta.sma(down, cmoPeriod) * cmoPeriod // Calculate the Chande Momentum Oscillator (CMO) cmo = 100 * (sumUp - sumDown) / (sumUp + sumDown) // Define the entry and exit conditions buyCondition = cmo < -50 sellCondition1 = cmo > 50 sellCondition2 = ta.barssince(buyCondition) >= 5 // Track if we are in a long position var bool inTrade = false if (buyCondition and not inTrade) strategy.entry("Long", strategy.long) inTrade := true if (sellCondition1 or sellCondition2) strategy.close("Long") inTrade := false // Plot the Chande Momentum Oscillator plot(cmo, title="Chande Momentum Oscillator", color=color.blue) hline(-50, "Buy Threshold", color=color.green) hline(50, "Sell Threshold", color=color.red)