Стратегия покупки CCI+двойной скользящей средней с пересечением коррекции

CCI MA
Дата создания: 2024-05-24 17:45:49 Последнее изменение: 2024-05-24 17:45:49
Копировать: 3 Количество просмотров: 324
1
Подписаться
1166
Подписчики

Стратегия покупки CCI+двойной скользящей средней с пересечением коррекции

Обзор

Стратегия CCI+ - это количественная торговая стратегия, которая использует обобщённый сигнал перехода (CCI) и перехода (CCI). Стратегия используется для того, чтобы ожидать, пока цена не вернется в сторону быстрой линии, и купить, когда показатель CCI будет перепродан, и продать, когда показатель CCI будет перепродан, и купить, когда цена вернется в сторону быстрой линии, и продать, когда показатель CCI будет перепродан.

Стратегический принцип

  1. Вычисление показателя CCI, рассчитывающего текущее значение CCI в соответствии с параметрами CCI, установленными пользователем (источники данных, циклы, типы скользящих средних, перекуп и перепродажа).
  2. Для определения перекупки и перепродажи CCI используется красный цвет, если CCI больше, чем перекупленный порог, и зеленый цвет, если CCI меньше, чем перепроданный порог.
  3. Вычислить ускоренную среднюю линию, рассчитывая текущую ускоренную среднюю линию в зависимости от настроенных пользователем параметров ускоренной средней линии (источник данных, период, тип движущейся средней).
  4. При определении золотой форки, при прохождении медленной линии на скоростной линии формируется многоголовый сигнал, при прохождении медленной линии под скоростной линией формируется мертвый форк - пустой сигнал.
  5. Принятие решений по сделкам:
    • Многоголовый вход: открытие позиции, когда быстрая линия находится над медленной линией, а предыдущая K-линия закрывается ниже быстрой линии, текущая K-линия является конъюнктурной, при этом CCI меньше, чем превышает порог продажи
    • Пустой вход: открытая позиция продается, когда быстрая линия находится ниже медленной линии, а предыдущая K-линия закрывается выше быстрой линии, текущая K-линия является отрицательной линией, а CCI превышает порог покупки

Стратегические преимущества

  1. Следить за трендами: с помощью двух равнолинейных перекрестных сигналов можно определить направление тренда, чтобы лучше соответствовать тенденциям рынка.
  2. Противоположное вхождение: после установления тренда, ожидая, что цена вернется назад, купить или продать, можно получить относительно более выгодную цену входа, повысить риск-прибыль.
  3. Снижение ложного сигнала: объединение показателя CCI с среднелинейным перекрестным сигналом позволяет эффективно снизить ложный сигнал, создаваемый одним показателем.
  4. Гибкость параметров: пользователь может гибко настроить CCI и средний параметр в соответствии с его предпочтениями для оптимизации эффективности стратегии.

Стратегический риск

  1. Риск всплеска рынка: Всплеск рынка, частое появление всплеска может привести к увеличению количества убыточных сделок в стратегии.
  2. Параметрическая опасность: неправильная настройка параметров может привести к неэффективной стратегии, требующей полной обратной связи и анализа оптимальных комбинаций параметров в различных рыночных условиях.
  3. Трендный риск: когда рыночная тенденция переворачивается, стратегия может задержать вывод и подвергнуть себя большему риску вывода.

Направление оптимизации стратегии

  1. Внедрение управления позициями, динамическое изменение позиций для каждой сделки в зависимости от силы и волатильности текущих рыночных тенденций для лучшего контроля риска.
  2. Оптимизация условий входа, например, добавление показателей объема торгов или других вспомогательных показателей суждения, повышение надежности входных сигналов.
  3. Оптимизация условий выхода, например, установка мобильного или временного стоп-порога, чтобы снизить максимальные потери в одной сделке.
  4. Оптимизация параметров для различных рынков и сортов, повышение адаптивности и устойчивости стратегий.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradedots

//@version=5
strategy("CCI + MA Crossover Pullback Buy Strategy [TradeDots]", overlay=true)


ma(source, length, type) =>
  type == "SMA" ? ta.sma(source[1], length) :
  type == "EMA" ? ta.ema(source[1], length) :
  type == "SMMA (RMA)" ? ta.rma(source[1], length) :
  type == "WMA" ? ta.wma(source[1], length) :
  type == "VWMA" ? ta.vwma(source[1], length) :
  na

//CCI settings
cci_coloring  = input.bool(true, "CCI Background Color", group = "Commodity channel index")
cci_length    = input.int(20,"CCI Length", group = "Commodity channel index")
cci_ma_type   = input.string("EMA","CCI MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group = "Commodity channel index")
cci_soruce    = input(hlc3, "CCI Source", group = "Commodity channel index")
cci_threshold = input.int(100, "CCI Threshold", group = "Commodity channel index")
cci_ma = ma(cci_soruce, cci_length, cci_ma_type)
cci = (cci_soruce - cci_ma) / (0.015 * ta.dev(cci_soruce, cci_length))

bgcolor(cci > cci_threshold and cci_coloring ? color.new(#f9396a, 80) : cci < -cci_threshold and cci_coloring? color.new(#9cff87, 80) : na, title = "CCI Overbought / Oversold")

//ma crossover settings
input_crossover_labels = input.bool(true, "Show Crossover Labels", group="Moving average")

fastma_type   = input.string("EMA","", inline="fastma", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Moving average")
fastma_source = input(close, "", inline="fastma", group="Moving average")
fastma_length = input.int(10, "", inline="fastma", minval=1,group="Moving average")
fastma_color  = input(#e2fdff, "", inline="fastma",group="Moving average")
fastma = ma(fastma_source, fastma_length, fastma_type)
fastmaPlot = plot(fastma, color = #b7e4c7, linewidth = 2, title = "Fast MA")

slowma_type   = input.string("EMA","", inline="slowma", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Moving average")
slowma_source = input(close, "", inline="slowma", group="Moving average")
slowma_length = input.int(30, "", inline="slowma", minval=1,group="Moving average")
slowma_color  = input(#e2fdff, "", inline="slowma",group="Moving average")
slowma = ma(slowma_source, slowma_length, slowma_type)
slowmaPlot = plot(slowma, color = #2d6a4f, linewidth = 2, title = "Slow MA")

bullish_crossover = ta.crossover(fastma, slowma)
bearish_crossover = ta.crossunder(fastma, slowma)

// // strategy
// if bullish_crossover and input_crossover_labels
//     line.new(bar_index, close, bar_index, close * 1.01, extend = extend.both, color = color.new(#9cff87, 30), style = line.style_dotted, width = 3)
//     label.new(bar_index,low, "Bullish Crossover", style = label.style_label_up, color = #9cff87)

// else if bearish_crossover and input_crossover_labels
//     line.new(bar_index, close, bar_index, close * 1.01, extend = extend.both, color = color.new(#f9396a, 30), style = line.style_dotted, width = 3)
//     label.new(bar_index, high, "Bearish Crossover", style = label.style_label_down, color = #f9396a, textcolor = color.white)

if fastma > slowma and close[1] < fastma and close > open and cci < -cci_threshold
    strategy.entry("Long", strategy.long)
    // if strategy.opentrades == 0 or strategy.opentrades.size(strategy.opentrades -1) < 0
    //     label.new(bar_index,low, "🟢 Long", style = label.style_label_up, color = #9cff87)

if fastma < slowma and close[1] > fastma and close < open and cci > cci_threshold
    strategy.entry("Short", strategy.short)
    // if strategy.opentrades == 0 or strategy.opentrades.size(strategy.opentrades -1) > 0
    //     label.new(bar_index, high, "🔴 Short", style = label.style_label_down, color = #f9396a, textcolor = color.white)