Стратегия прорыва ценового канала

Автор:Чао Чжан, Дата: 2024-01-16 14:22:57
Тэги:

img

Эта стратегия называется "Стратегия прорыва ценового канала". Ее основная идея состоит в том, чтобы использовать ценовой канал для определения тенденции и направления рынка и установления позиций, когда цена выходит из канала. Он сначала нарисует диапазон ценового канала, а затем судит, есть ли две последовательные красные или зеленые линии K. Если последняя линия K проходит через половину ширины канала и закрывается за пределами канала, она генерирует сигналы купли или продажи.

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

Стратегия рассчитывает самый высокий и самый низкий минимум за определенный период в прошлом с использованием функций highest() и lowest() для определения верхних и нижних рельсов ценового канала. Средняя точка канала определяется как среднее значение верхних и нижних рельсов. Затем она рассчитывает размер корпуса K-линии и сглаживает его с помощью SMA, чтобы определить, является ли последнее тело K-линии больше половины среднего тела. Она также оценивает, являются ли последние две K-линии в одном направлении (два последовательных красных или зеленых). Когда эти условия выполняются, она генерирует сигналы покупки / продажи и закрывает позиции, когда цена возвращается в направление канала.

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

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

  1. Использование ценового канала для определения общего направления тренда может эффективно фильтровать рыночный шум.

  2. Две последовательные K-линии, пробивающиеся через канал в одном направлении, указывают на более сильный импульс и более высокий уровень успеха прорыва.

  3. Судя по K-линии тела больше половины среднего тела можно избежать заблуждения ложным прорывом.

  4. Логика стратегии проста и легко внедряется.

  5. Настраиваемые параметры, такие как период канала, продукты торговли, часы торговли и т. Д., делают его очень адаптивным.

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

Стратегия также сопряжена с некоторыми потенциальными рисками:

  1. Есть вероятность неудачного прорыва, который может привести к потерям.

  2. Ценный канал может потерпеть неудачу, когда рынок сильно колеблется.

  3. Отсутствие механизма стоп-лосса не позволяет эффективно контролировать потери.

  4. Простые правила торговли сопряжены с рисками избыточной адаптации.

  5. Не в состоянии адаптироваться к более сложной рыночной среде.

Соответствующие решения:

  1. Оптимизируйте параметры для улучшения успешности прорыва.

  2. Добавьте индекс волатильности, чтобы избежать рыночных колебаний.

  3. Добавьте мобильную стоп-лосс.

  4. Провести тест сложности для проверки перенастройки.

  5. Увеличить модели машинного обучения для улучшения адаптивности.

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

Основными направлениями оптимизации являются:

  1. Добавьте механизм остановки потери для лучшего контроля рисков.

  2. Оптимизируйте такие параметры, как период канала, порог прорыва и т. Д. Найдите оптимальные параметры с помощью генетического алгоритма, сетевого поиска и т. Д.

  3. Добавьте условия фильтрации для повышения уверенности в прорыве, например, объедините объем торговли для подтверждения прорыва.

  4. Добавьте модели машинного обучения, такие как LSTM, чтобы улучшить способность прогнозировать и адаптироваться, используя больше данных.

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

Заключение

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


/*backtest
start: 2023-12-16 00:00:00
end: 2024-01-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.0", shorttitle = "Price Channel str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel")
showcl = input(true, defval = true, title = "Show center-line")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
src = close

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
col = showcl ? blue : na
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Signals
body = abs(close - open)
abody = sma(body, 10)
up = rbars and close > center and body > abody / 2
dn = gbars and close < center and body > abody / 2
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()

Больше