Стратегия отслеживания разворота на основе осциллятора полосы волатильности


Дата создания: 2023-11-23 13:42:03 Последнее изменение: 2023-11-23 13:42:03
Копировать: 0 Количество просмотров: 670
1
Подписаться
1617
Подписчики

Стратегия отслеживания разворота на основе осциллятора полосы волатильности

Обзор

Эта стратегия основана на индикаторе CCT Bollinger Band Oscillator, разработанном Стивом Карнишом, который позволяет совершать обратную торговлю, идентифицируя цены, которые нарушают среднюю линию, и в сочетании с механизмом отмены.

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

Стратегия использует высокие цены в качестве исходных данных, а затем вычисляет значения колебателей CCT-полосы. Значения колебателей колеблются от 200 до 200, 0 означает среднюю цену минус 2 стандартных разрыва, а 100 означает среднюю цену плюс 2 стандартных разрыва.

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

  • Использование индикатора CCT полосы колебаний с определенным рыночным влиянием может уменьшить ложные сигналы
  • Фильтрация сигналов в сочетании с средней и предельной условиями EMA, чтобы избежать чрезмерного количества недействительных сделок во время колебаний
  • Использование механизма погашения убытков, позволяющего своевременно прекратить убытки при чрезмерных убытках

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

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

Способы управления рисками:

  • Настройка среднелинейного цикла EMA с использованием более длинного цикла фильтрации
  • Надлежащая корректировка маржинальных значений для баланса рисков и доходов
  • Снижение пропорции позиций для контроля одиночных потерь
  • Сокращение объема и ускорение снятия убытков

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

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

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

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

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

Исходный код стратегии
/*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)