Эта стратегия представляет собой импульсную торговую систему, основанную на индексе товарного канала (CCI), предназначенную для захвата торговых возможностей в перепроданных районах путем мониторинга отклонений цен от среднего.
Основной принцип использует CCI для измерения отклонения цены от среднего. Расчет CCI включает: сначала вычисление типичной цены (арифметическое среднее значение высоких, низких и закрытых цен), затем расчет простой скользящей средней (SMA) типичной цены, наконец, получение CCI путем вычитания SMA от типичной цены, деления на среднее отклонение и умножения на 0.015. Долгие позиции вводятся, когда CCI падает ниже -90, указывая на возможные условия перепродажи; позиции закрываются, когда цена превышает предыдущие максимумы, подтверждая восходящую тенденцию. Стратегия предлагает настраиваемые параметры стоп-лосса и прибыли, чтобы учесть различные предпочтения риска.
Эта стратегия захватывает возможности перепродажи на рынке с помощью индикатора CCI, в сочетании с механизмами стоп-лосса и получения прибыли для создания полной торговой системы. Стратегия имеет четкую логику, легкую реализацию и хорошие возможности контроля рисков. Благодаря таким мерам оптимизации, как фильтрация сигналов и динамические пороги, стабильность и рентабельность стратегии могут быть еще лучше. Трейдерам рекомендуется провести тщательное обратное тестирование и корректировать параметры в соответствии с конкретными характеристиками рынка до реализации.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("CCI Threshold Strategy", overlay=false, initial_capital=50000, pyramiding=0, commission_type=strategy.commission.cash_per_contract, commission_value=0.05, slippage=1) // --- Input Parameters --- // Lookback period for CCI calculation lookbackPeriod = input.int(12, minval=1, title="CCI Lookback Period") // Buy threshold for CCI; typically represents an oversold condition buyThreshold = input.int(-90, title="CCI Buy Threshold") // Stop loss and take profit settings stopLoss = input.float(100.0, minval=0.0, title="Stop Loss in Points") takeProfit = input.float(150.0, minval=0.0, title="Take Profit in Points") // Checkboxes to enable/disable SL and TP useStopLoss = input.bool(false, title="Enable Stop Loss") useTakeProfit = input.bool(false, title="Enable Take Profit") // --- Calculate CCI --- // CCI (Commodity Channel Index) is used as a momentum indicator to identify oversold and overbought conditions cci = ta.cci(close, length=lookbackPeriod) // --- Define Buy and Sell Conditions --- // Buy condition: CCI drops below -90, indicating potential oversold levels longCondition = cci < buyThreshold // Sell condition: Close price crosses above the previous day's high, signaling potential exit sellCondition = close > ta.highest(close[1], 1) // --- Strategy Execution --- // Buy entry based on the long condition if (longCondition) strategy.entry("Buy", strategy.long) // Close the long position based on the sell condition if (sellCondition) strategy.close("Buy") // Optional: Add stop loss and take profit for risk management if (longCondition) strategy.exit("Sell", from_entry="Buy", loss=useStopLoss ? stopLoss : na, profit=useTakeProfit ? takeProfit : na) // --- Plotting for Visualization --- // Plot CCI with threshold levels for better visualization plot(cci, title="CCI", color=color.blue) hline(buyThreshold, "Buy Threshold", color=color.red, linestyle=hline.style_dotted) hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)