Стратегия отслеживания изменения CCTBBO

Автор:Чао Чжан, Дата: 2023-11-23 13:42:03
Тэги:

img

Обзор

Эта стратегия основана на индикаторе CCT Bollinger Band Oscillator (CCTBO), разработанном Стивом Карнишем.

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

Стратегия использует высокую цену в качестве исходных данных для расчета стоимости CCTBBO. Осциллятор колеблется между -200 и 200, где 0 представляет собой среднюю цену минус 2 стандартных отклонения, а 100 - среднюю цену плюс 2 стандартных отклонения. Торговые сигналы генерируются, когда осциллятор пересекает или падает ниже своей линии EMA. В частности, когда осциллятор пересекает линию EMA и расстояние между ними больше установленного значения маржи, открывается длинная позиция. Когда осциллятор падает ниже своей линии EMA и расстояние меньше отрицательного установленного значения, открывается короткая позиция. Размер маржи позиции рассчитывается в соответствии с установленным процентом. Кроме того, стратегия использует стоп-лосс, основанный на процентном изменении цены или количестве движений тика, чтобы выйти из позиций.

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

  • Использует влиятельный индикатор CCT Bollinger Band Oscillator для снижения ложных сигналов
  • Сочетание линий EMA и условий маржи фильтрует сигналы, чтобы избежать чрезмерных недействительных сделок во время колебаний
  • Применяет механизм остановки потерь для своевременной остановки потерь при слишком больших потерях

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

  • Сам осциллятор CCT имеет некоторое отставание, поэтому не имеет оптимального времени для перемены цен.
  • Чрезмерная стоимость маржи и слишком короткие параметры периода EMA увеличивают частоту торговли и риск
  • Слишком свободный режим остановки потерь увеличивает риск потери

Управление рисками:

  • Корректировать период линии EMA, использовать более длительный период для фильтрации
  • Соответственно корректировать стоимость маржи для сбалансирования риска и доходности
  • Уменьшить процент позиций для контроля единого убытка
  • Разумно уменьшить диапазон потерь при остановке на заднем пути для более быстрой остановки

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих аспектах:

  1. Заменить на другие индикаторы волатильности, такие как полосы Боллинджера, каналы Келтнера и т. д., для определения входов и выходов
  2. Добавить другие индикаторы фильтрации, такие как MACD, RSI для обеспечения надежности сигнала
  3. Используйте алгоритмы машинного обучения для автоматической оптимизации параметров, таких как период EMA, значения маржи и т. Д.
  4. Добавьте механизмы размещения позиций, такие как фиксированная фракционная, Мартингейл для контроля торгового риска
  5. Оптимизировать механизмы остановки потерь с использованием волатильности или остановок ATR

Резюме

В общем, это количественная торговая стратегия для выявления перемены цен с использованием индикатора CCT Bollinger Band. У нее есть определенные преимущества, но также есть возможность для улучшения. Оптимизируя параметры, добавляя фильтры, используя инженерию функций, внедряя машинное обучение и т. Д., Стабильность и рентабельность этой стратегии могут быть дополнительно повышены.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 11:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// This strategy is based on the CCT Bollinger Band Oscillator (CCTBO) 
// developed by Steve Karnish of Cedar Creek Trading and coded by LazyBear.
// Indicator is available here https://www.tradingview.com/v/iA4XGCJW/

strategy("Strategy CCTBBO v2 | Fadior", shorttitle="Strategy CCTBBO v2", pyramiding=0, precision=2, calc_on_order_fills=false, initial_capital=1000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100, overlay=false)

length_stddev=input(title="Stddev loopback period",defval=20)
length_ema=input(title="EMA period", defval=2)
margin=input(title="Margin", defval=0, type=float, step=0.1)
price = input(title="Source", defval=high)
digits= input(title="Number of digits",defval=2,step=1,minval=2,maxval=6)
offset = input(title="Trailing offset (0.01 = 1%) :", defval=0.013, type=float, step=0.01)
pips= input(title="Offset in ticks ?",defval=false,type=bool)

src=request.security(syminfo.tickerid, "1440", price)

cctbbo=100 * ( src + 2*stdev( src, length_stddev) - sma( src, length_stddev ) ) / ( 4 * stdev( src, length_stddev ) )

ul=hline(150, color=gray, editable=true)
ll=hline(-50, color=gray)
hline(50, color=gray)
fill(ul,ll, color=green, transp=90)
plot(style=line, series=cctbbo, color=blue, linewidth=2)
plot(ema(cctbbo, length_ema), color=red)

d = digits == 2 ? 100 : digits == 3 ? 1000 : digits == 4 ? 10000 : digits == 5 ? 100000 : digits == 6 ? 1000000 : na

TS = 1
TO = pips ? offset : close*offset*d
CQ = 100
TSP = TS
TOP = (TO > 0) ? TO : na

longCondition = crossover(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) > margin
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Close Long", "Long", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)


shortCondition = crossunder(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) < -margin
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Close Short", "Short", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)
    
    

Больше