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


Дата создания: 2024-02-23 14:54:34 Последнее изменение: 2024-02-23 14:54:34
Копировать: 1 Количество просмотров: 612
1
Подписаться
1617
Подписчики

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

Обзор

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

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

  1. Вычислите среднюю скоростную ЭМА 7 групп 3/6/9/12/15/18/21
  2. Расчет средней скорости EMA 24/27/30/…/200г 14 групп.
  3. Правило определения цвета скоростной ЕМА: на 6-й линии вверх - синий цвет, на 6-й линии вниз - оранжевый цвет.
  4. Настройка медленного EMA равномерный цвет правила суждения: на 24-й линии на 25-й линии обозначает повышение, установленное на зеленый цвет; снижение обозначает снижение, установленное на красный цвет.
  5. Когда группа скорой EMA-линии пересекает группу медленной EMA-линии снизу вверх, она создает сигнал покупки, который означает, что тренд переходит вверх.
  6. Когда группа скорой EMA-линии пересекает группу медленной EMA-линии вверх-вниз, то появляется сигнал продажи, означающий переход тренда вниз.

Комбинации медленно-быстро сверяемых линий позволяют эффективно идентифицировать изменения в тенденциях средне-длинных линий и отслеживать их.

Стратегические преимущества

  1. Быстрая и медленная средняя линия способны идентифицировать изменения трендов. Быстрая средняя линия может идентифицировать краткосрочные тенденции, медленная средняя линия фильтров скорректировать, комбинация может повысить точность идентификации.
  2. Несколько сочетаний средних линий позволяют более четко и надежно оценить сигнал и избежать ложных сигналов.
  3. Использование различных параметров цикла EMA, способность распознавать средние и длинные тренды на разных уровнях, гибкий цикл работы.
  4. Стратегия отслеживания длинных позиций соответствует модели, в которой большинство частных фондов работают по средне-длинным линиям.

Стратегический риск

  1. Продолжительность отслеживания позиций может привести к упущению возможности для краткосрочной торговли.
  2. EMA не подходит для захвата краткосрочных колебаний цен. При расчёте в диапазоне с большим количеством колебаний цен может возникнуть ненужный торговый сигнал.
  3. Неправильная настройка параметров может привести к тому, что торговые сигналы станут слишком часто встречаться или консервативными. Рекомендуется тестирование параметров и их проверка в реальном времени.

Советы по оптимизации стратегии

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

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

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

Исходный код стратегии
/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("CM Super Guppy ala WY", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=99, overlay=true)


///////////////////////////////////////////////
//* Backtesting Period Selector | Component *//
///////////////////////////////////////////////

//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//

testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(3, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

///////////////////////////////////////////////

src = close, 
len1 = input(3, minval=1, title="Fast EMA 1")
len2 = input(6, minval=1, title="Fast EMA 2")
len3 = input(9, minval=1, title="Fast EMA 3")
len4 = input(12, minval=1, title="Fast EMA 4")
len5 = input(15, minval=1, title="Fast EMA 5")
len6 = input(18, minval=1, title="Fast EMA 6")
len7 = input(21, minval=1, title="Fast EMA 7")
//Slow EMA
len8 = input(24, minval=1, title="Slow EMA 8")
len9 = input(27, minval=1, title="Slow EMA 9")
len10 = input(30, minval=1, title="Slow EMA 10")
len11 = input(33, minval=1, title="Slow EMA 11")
len12 = input(36, minval=1, title="Slow EMA 12")
len13 = input(39, minval=1, title="Slow EMA 13")
len14 = input(42, minval=1, title="Slow EMA 14")
len15 = input(45, minval=1, title="Slow EMA 15")
len16 = input(48, minval=1, title="Slow EMA 16")
len17 = input(51, minval=1, title="Slow EMA 17")
len18 = input(54, minval=1, title="Slow EMA 18")
len19 = input(57, minval=1, title="Slow EMA 19")
len20 = input(60, minval=1, title="Slow EMA 20")
len21 = input(63, minval=1, title="Slow EMA 21")
len22 = input(66, minval=1, title="Slow EMA 22")
len23 = input(200, minval=1, title="EMA 200")

//Fast EMA
ema1 = ema(src, len1)
ema2 = ema(src, len2)
ema3 = ema(src, len3)
ema4 = ema(src, len4)
ema5 = ema(src, len5)
ema6 = ema(src, len6)
ema7 = ema(src, len7)

//Slow EMA
ema8 = ema(src, len8)
ema9 = ema(src, len9)
ema10 = ema(src, len10)
ema11 = ema(src, len11)
ema12 = ema(src, len12)
ema13 = ema(src, len13)
ema14 = ema(src, len14)
ema15 = ema(src, len15)
ema16 = ema(src, len16)
ema17 = ema(src, len17)
ema18 = ema(src, len18)
ema19 = ema(src, len19)
ema20 = ema(src, len20)
ema21 = ema(src, len21)
ema22 = ema(src, len22)

//EMA 200
ema23 = ema(src, len23)

//Fast EMA Color Rules
colfastL = (ema1 > ema2 and ema2 > ema3 and ema3 > ema4 and ema4 > ema5 and ema5 > ema6 and ema6 > ema7)
colfastS = (ema1 < ema2 and ema2 < ema3 and ema3 < ema4 and ema4 < ema5 and ema5 < ema6 and ema6 < ema7)
//Slow EMA Color Rules
colslowL = ema8 > ema9 and ema9 > ema10 and ema10 > ema11 and ema11 > ema12 and ema12 > ema13 and ema13 > ema14 and ema14 > ema15 and ema15 > ema16 and ema16 > ema17 and ema17 > ema18 and ema18 > ema19 and ema19 > ema20 and ema20 > ema21 and ema21 > ema22
colslowS = ema8 < ema9 and ema9 < ema10 and ema10 < ema11 and ema11 < ema12 and ema12 < ema13 and ema13 < ema14 and ema14 < ema15 and ema15 < ema16 and ema16 < ema17 and ema17 < ema18 and ema18 < ema19 and ema19 < ema20 and ema20 < ema21 and ema21 < ema22 
//Fast EMA Final Color Rules
colFinal = colfastL and colslowL? aqua : colfastS and colslowS? orange : gray
//Slow EMA Final Color Rules
colFinal2 = colslowL  ? lime : colslowS ? red : gray
//Fast EMA Plots
p1=plot(ema1, title="Fast EMA 1", style=line, linewidth=2, color=colFinal)
plot(ema2, title="Fast EMA 2", style=line, linewidth=1, color=colFinal)
plot(ema3, title="Fast EMA 3", style=line, linewidth=1, color=colFinal)
plot(ema4, title="Fast EMA 4", style=line, linewidth=1, color=colFinal)
plot(ema5, title="Fast EMA 5", style=line, linewidth=1, color=colFinal)
plot(ema6, title="Fast EMA 6", style=line, linewidth=1, color=colFinal)
p2=plot(ema7, title="Fast EMA 7", style=line, linewidth=2, color=colFinal)

//Slow EMA Plots
p3=plot(ema8, title="Slow EMA 8", style=line, linewidth=1, color=colFinal2)
plot(ema9, title="Slow EMA 9", style=line, linewidth=1, color=colFinal2)
plot(ema10, title="Slow EMA 10", style=line, linewidth=1, color=colFinal2)
plot(ema11, title="Slow EMA 11", style=line, linewidth=1, color=colFinal2)
plot(ema12, title="Slow EMA 12", style=line, linewidth=1, color=colFinal2)
plot(ema13, title="Slow EMA 13", style=line, linewidth=1, color=colFinal2)
plot(ema14, title="Slow EMA 14", style=line, linewidth=1, color=colFinal2)
plot(ema15, title="Slow EMA 15", style=line, linewidth=1, color=colFinal2)
plot(ema16, title="Slow EMA 16", style=line, linewidth=1, color=colFinal2)
plot(ema17, title="Slow EMA 17", style=line, linewidth=1, color=colFinal2)
plot(ema18, title="Slow EMA 18", style=line, linewidth=1, color=colFinal2)
plot(ema19, title="Slow EMA 19", style=line, linewidth=1, color=colFinal2)
plot(ema20, title="Slow EMA 20", style=line, linewidth=1, color=colFinal2)
plot(ema21, title="Slow EMA 21", style=line, linewidth=1, color=colFinal2)
plot(ema22, title="Slow EMA 22", style=line, linewidth=2, color=colFinal2)
p4=plot(ema23, title="EMA 200", style=line, linewidth=2)


// Strategy Center
enterLong = colfastL and colslowL
exitLong = not colfastL

if testPeriod()
    strategy.entry("WY Long", strategy.long, when=enterLong, comment="WY Long")
else
    strategy.cancel(id="WY Long")

if testPeriod()
    strategy.close("WY Long", when=exitLong)