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


Дата создания: 2024-02-22 15:51:48 Последнее изменение: 2024-02-22 15:51:48
Копировать: 0 Количество просмотров: 577
1
Подписаться
1617
Подписчики

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

Обзор

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

Принципы

Эта стратегия основана на следующих принципах:

  1. Расчет динамического ценового канала. Средняя линия канала рассчитывается с помощью максимальной и минимальной цены, верхняя линия канала - средняя линия + средняя линия ценовой дисперсии, нижняя линия - средняя линия ценовой дисперсии.

  2. Определение направления тренда. Определяется как bullish, когда цена выходит на траекторию; как bearish, когда цена выходит из траектории.

  3. Шум от случайных колебаний цены на фибровых волнах с использованием средней степени дисперсии цены за определенный период времени.

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

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

Эта стратегия имеет следующие преимущества:

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

Риск

Также существуют следующие риски:

  1. Неправильный выбор параметров может привести к чрезмерной оптимизации.
  2. Например, в некоторых странах, например, в Китае, в Китае, в Китае, в Китае, в Китае.
  3. “Нельзя предсказывать резкие колебания цен.

Решение проблемы:

  1. Строгое отбор и тестирование Params;
  2. Добавить фильтрующие условия, чтобы идентифицировать и отсортировать колебания;
  3. Настройка стоп-стоп, управление рисками.

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

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

  1. Тестирование стабильности различных циклических параметров;
  2. Повышение оценки VOLUME или волатильности;
  3. Включение полосы, каналов и т.д. для определения входа и выхода.

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

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

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