
Стратегия основана на индексе товарного канала (CCI) и использует динамические адаптивные входы для определения времени обратного тренда, используя при этом стоп-локирование для блокировки прибыли. Название стратегии перспективно адаптировано к CCI. Стратегия торговли товарами для захвата нижней части CCI включает в себя ключевые моменты этой стратегии: использование индекса CCI для определения района перепродажи для захвата возможности обратного поворота и использование динамических адаптивных входов для горизонтальной оптимизации времени входа.
Ключевым показателем является показатель CCI, используемый для определения возможности перепродажи, чтобы подсказать обратный тренд. Кроме того, в зависимости от разных показателей и рыночных условий, ширина перепродажи CCI также может варьироваться. Таким образом, эта стратегия использует обзорный способ, чтобы определить местонахождение наименьших точек CCI за прошедший период времени и динамически установить уровень покупки CCI.
В частности, CCI по умолчанию составляет -145. Затем следует определить местонахождение наименьшей точки CCI за последние 40-50 дней и т. д. Если минимальная точка выше уровня по умолчанию, то -90 как новый уровень входа. Если минимальная точка выше -90, то -70 как новый уровень входа, и т. д. Таким образом, уровень входа может динамически переключаться между -145 / -90 / -70 / -50 / -4 / 0 / +25 / +50 / +70.
Кроме того, стратегия также использует слежение за стоп-локами для блокировки прибыли, а уровень стоп-лосов меняется в зависимости от движения цены.
По сравнению с фиксированным уровнем входов, такая динамическая конструкция позволяет оптимизировать время входов. В более низких рынках более высокие стандарты входов позволяют снизить риск; в то время как более низкие стандарты входов позволяют использовать больше возможностей на рынках, свернутых в колебательных зонах. Такая конструкция повышает адаптивность стратегии.
CCI сам по себе является более четким и надежным показателем для определения перекупа и перепродажи, а также эффективным методом отсчета CCI для определения обратной тенденции. В сочетании с динамической разработкой записей, общие преимущества этой стратегии являются значительными.
На основе CCI судить о тенденции переломный момент имеет некоторую задержку, когда цены быстро поднимаются или падают, может быть неправильно вовремя, входящих. Кроме того, входящих в горизонтальной динамических адаптивных механизмов трудно идеально соответствовать текущей рыночной среде, что приводит к входящих не обязательно является оптимальным.
В основном можно оптимизировать несколько аспектов, начиная с самих параметров CCI, установки уровня Entry и параметров Stop Loss. Лучшие параметры для точного определения конкретных параметров могут повысить эффективность стратегии.
Стратегия использует CCI для определения перепродажи, а также динамически адаптируемый уровень Entries для захвата прорывных тенденций. По сравнению с фиксированными параметрами, динамический уровень Entries значительно повышает адаптивность стратегии.
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Extended Adaptive CCI Entry Strategy for Commodities", shorttitle="Ext_Adaptive_CCI_Entry_Com", overlay=true)
// Inputs
cciLength = input(20, title="CCI Period")
defaultCCIEntryOversold = input(-145, title="Default CCI Entry Oversold Level")
adaptiveCCIEntryLevel90 = input(-90, title="Adaptive CCI Entry Level for 40 Days")
adaptiveCCIEntryLevel70_50Days = input(-70, title="Adaptive CCI Entry Level for 50 Days")
adaptiveCCIEntryLevel50 = input(-50, title="Adaptive CCI Entry Level for 60 Days")
adaptiveCCIEntryLevel4 = input(-4, title="Adaptive CCI Entry Level for 90 Days")
adaptiveCCIEntryLevel0 = input(0, title="Adaptive CCI Entry Level for 120 Days")
adaptiveCCIEntryLevel25 = input(25, title="Adaptive CCI Entry Level for 140 Days")
adaptiveCCIEntryLevel50_160Days = input(50, title="Adaptive CCI Entry Level for 160 Days")
adaptiveCCIEntryLevel70_180Days = input(70, title="Adaptive CCI Entry Level for 180 Days")
lookback40 = input(40, title="Lookback Period for -90 Level")
lookback50 = input(50, title="Lookback Period for -70 Level")
lookback60 = input(60, title="Lookback Period for -50 Level")
lookback90 = input(90, title="Lookback Period for -4 Level")
lookback120 = input(120, title="Lookback Period for 0 Level")
lookback140 = input(140, title="Lookback Period for +25 Level")
lookback160 = input(160, title="Lookback Period for +50 Level")
lookback180 = input(180, title="Lookback Period for +70 Level")
// Indicator Calculation
cci = ta.cci(close, cciLength)
// Determine adaptive entry level based on lookback periods
var float entryLevel = defaultCCIEntryOversold // Initialize with the default level
if ta.lowest(cci, lookback40) > adaptiveCCIEntryLevel90
entryLevel := adaptiveCCIEntryLevel90
if ta.lowest(cci, lookback50) > adaptiveCCIEntryLevel70_50Days
entryLevel := adaptiveCCIEntryLevel70_50Days
if ta.lowest(cci, lookback60) > adaptiveCCIEntryLevel50
entryLevel := adaptiveCCIEntryLevel50
if ta.lowest(cci, lookback90) > adaptiveCCIEntryLevel4
entryLevel := adaptiveCCIEntryLevel4
if ta.lowest(cci, lookback120) > adaptiveCCIEntryLevel0
entryLevel := adaptiveCCIEntryLevel0
if ta.lowest(cci, lookback140) > adaptiveCCIEntryLevel25
entryLevel := adaptiveCCIEntryLevel25
if ta.lowest(cci, lookback160) > adaptiveCCIEntryLevel50_160Days
entryLevel := adaptiveCCIEntryLevel50_160Days
if ta.lowest(cci, lookback180) > adaptiveCCIEntryLevel70_180Days
entryLevel := adaptiveCCIEntryLevel70_180Days
// Entry Condition
longCondition = cci < entryLevel
// Entry and Exit
if (longCondition)
strategy.entry("Long", strategy.long, qty=1)
alert("Long entry executed at " + str.tostring(close), alert.freq_once_per_bar)
trailOffset = input(10.0, title="Trailing Stop Offset in USD")
strategy.exit("Trailing Stop", "Long", trail_offset = trailOffset, trail_price = close)
if (close < entryLevel - trailOffset)
alert("Long position closed at " + str.tostring(close), alert.freq_once_per_bar)
// Plotting
plot(series=cci, color=color.purple, title="CCI")
hline(price=defaultCCIEntryOversold, color=color.red, title="Default CCI Entry Oversold Level")
hline(price=adaptiveCCIEntryLevel90, color=color.orange, title="CCI -90 Level (40 Days)")
hline(price=adaptiveCCIEntryLevel70_50Days, color=color.yellow, title="CCI -70 Level (50 Days)")
hline(price=adaptiveCCIEntryLevel50, color=color.green, title="CCI -50 Level (60 Days)")
hline(price=adaptiveCCIEntryLevel4, color=color.blue, title="CCI -4 Level (90 Days)")
hline(price=adaptiveCCIEntryLevel0, color=color.purple, title="CCI 0 Level (120 Days)")
hline(price=adaptiveCCIEntryLevel25, color=color.aqua, title="CCI +25 Level (140 Days)")
hline(price=adaptiveCCIEntryLevel50_160Days, color=color.black, title="CCI +50 Level (160 Days)")
hline(price=adaptiveCCIEntryLevel70_180Days, color=color.gray, title="CCI +70 Level (180 Days)")