В процессе загрузки ресурсов... загрузка...

Динамическая стратегия отслеживания движущейся средней тенденции канала

Автор:Чао Чжан, Дата: 2024-02-22 15:51:48
Тэги:

img

Обзор

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

Принцип

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

  1. Вычислить динамический ценовой канал. Средняя линия канала рассчитывается от самой высокой цены и самой низкой цены. Верхняя рельса - средняя линия + волатильность цены MA, а нижняя рельса - средняя линия - волатильность цены MA.

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

  3. Фильтр шума. Использовать волатильность цены MA определенного периода, чтобы отфильтровать шум от случайных колебаний цен.

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

Преимущества

Преимущества этой стратегии:

  1. Динамический канал может зафиксировать тренд цены в режиме реального времени.
  2. MA фильтр может уменьшить ложные сигналы.
  3. Сочетание направления тренда и направления K-линии для создания торговых сигналов позволяет избежать ловушки.

Риски

Риски этой стратегии:

  1. Неправильный отбор парама может привести к переподготовке.
  2. Во время боковой волатильности легко генерировать неправильные сигналы.
  3. Он не может предсказать экстремальные колебания цен.

Решения:

  1. Строгий отбор и тестирование парамов.
  2. Добавьте условия фильтрации для выявления боковых направлений.
  3. Установите стоп-лосс/прибыль для контроля рисков.

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

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

  1. Испытательная стабильность различных периодов парамов.
  2. Добавьте индикаторы VOLUME или volatility для оценки импульса.
  3. Объедините полосы, каналы и т.д. для определения входа и выхода.

Резюме

Эта стратегия объединяет идеи динамического канала и оценки тренда MA и хорошо работает при определении направлений тренда в среднесрочной и краткосрочной перспективе.


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


//@version=2
strategy("Noro's Bands Strategy v1.0", shorttitle = "NoroBands str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Color")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//up =  and trend == 1 ? 1 : 0
//dn =  and trend == -1 ? 1 : 0 

up = close < hd and trend == 1 and (close < open or color == false) ? 1 : 0
dn = close > ld and trend == -1 and (close > open or color == false) ? 1 : 0 

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Больше