Расширенная адаптивная стратегия CCI по торговле товарами из нижнего рыболовства

Автор:Чао Чжан, Дата: 2021-12-21 14:30:03
Тэги:

img

Обзор

Эта стратегия основана на индикаторе индекса товарного канала (CCI) и использует динамические адаптивные уровни входа для определения сроков изменения тренда, используя при этом отставание стоп-лосса для блокировки прибыли.

Логика стратегии

Основным показателем является CCI, используемый для выявления перепроданных зон, что указывает на возможности обратного тренда. Кроме того, степень перепроданных зон CCI варьируется в зависимости от различных инструментов и рыночных условий. Поэтому эта стратегия использует "дальновидный" подход, изучая самые низкие уровни CCI за определенные периоды, чтобы динамически установить уровень входа в покупку CCI. Если самый низкий CCI за последние 40 дней превышает -90, то -90 становится новым порогом перепроданной зоны и так далее. Эта адаптивная конструкция позволяет уровням входа динамически соответствовать различным рыночным условиям, преследуя более консервативные входы во время сильных нисходящих тенденций, а более агрессивные входы во время рынков с ограниченным диапазоном.

В частности, уровень по умолчанию сигнала покупки CCI составляет -145. Стратегия затем проверяет самые низкие показания CCI за последние 40 дней, 50 дней и т. Д. Если самый низкий CCI выше следующего уровня, например -90, то -90 становится новым уровнем входа. И так далее, уровень входа может переключаться между -145 / -90 / -70 / -50 / -4 / 0 / +25 / +50 / +70 динамически. Длинный сигнал входа запускается, когда CCI опускается ниже соответствующего уровня.

Кроме того, для блокировки прибыли используется стоп-лосс, при котором уровень стоп-лосса поднимается вместе с ценой.

Анализ преимуществ

  • Ясный и надежный подход к использованию CCI для выявления перепроданных зон
  • Адаптивная конструкция начальных уровней позволяет стратегии автоматически адаптироваться к различным рыночным условиям
  • Отслеживание стоп-лосса помогает эффективно блокировать прибыль

По сравнению с фиксированными уровнями входа, такая динамическая конструкция позволяет оптимизировать сроки входа. Преследование более консервативных входов во время сильных нисходящих тенденций снижает риск, в то время как более низкие входы во время рынков с диапазоном позволяют захватывать больше возможностей. Это повышает адаптивность стратегии.

Сам по себе CCI является четким и надежным показателем для выявления уровня перекупленности/перепроданности. Логика суждения об изменении тренда на основе CCI доказана. В сочетании с динамическим дизайном входа общие преимущества этой стратегии значительны.

Анализ рисков

  • CCI не является совершенным и имеет некоторые отстающие атрибуты.
  • Динамическая корректировка уровней входа также не может идеально соответствовать изменениям на рынке.
  • Высокая волатильность на рынках сырьевых товаров.

Логика обнаружения точек переворота тренда имеет некоторые задержки. Время входа может быть неточным во время внезапных скачков цен или крахов. Кроме того, адаптивный механизм может не идеально соответствовать текущей рыночной среде, что приводит к неоптимальным входам.

Направления к улучшению

  • Оптимизировать параметры CCI и периоды сглаживания, эффективность испытаний различных длин CCI
  • Проверьте больше типов уровней входа, найдите лучшие значения по умолчанию или адаптивные конструкции
  • Проверка различных параметров стоп-лосса, надлежащее повышение диапазона стоп-лосса, чтобы соответствовать атрибутам высокой волатильности на товарных рынках

В основном, сам CCI, дизайн начального уровня и параметры стоп-лосса могут быть улучшены.

Резюме

Эта стратегия сочетает в себе логику использования CCI для выявления зон перекупленности/перепроданности и динамическое адаптивное проектирование уровня входа для улавливания отклонений тренда. По сравнению с фиксированными параметрами, динамические уровни входа значительно улучшают адаптивность. Эта модель улавливания отклонения входа с отставанием стоп-лосса может использовать возможности с сильным импульсом и сокращать потери вовремя. При правильно настроенных параметрах эта стратегия демонстрирует жизнеспособность и надежность. Дальнейшие улучшения могут быть достигнуты путем постоянной оптимизации параметров CCI и правил уровня входа для достижения более высокой стабильности и прибыльности.


/*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)")


Больше