Стратегия следования за трендом с несколькими перекрёстными EMA


Дата создания: 2024-01-04 16:22:07 Последнее изменение: 2024-01-04 16:22:07
Копировать: 6 Количество просмотров: 588
1
Подписаться
1617
Подписчики

Стратегия следования за трендом с несколькими перекрёстными EMA

Обзор

Стратегия по слежению за трендом с использованием множества средних линий EMA с различными параметрами в сочетании, с использованием средних линий EMA с различными параметрами, с увеличением при формировании золотых форков на более коротких периодах EMA, с образованием пустых форков при формировании мертвых форков. Эта стратегия одновременно использует 7 групп средних линий EMA, включая 12, 26, 50, 100, 200, 89 и 144 циклы, чтобы определить направление тренда, сравнивая пересечения этих EMA.

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

Центральная логика этой стратегии основана на принципе пересечения средней линии EMA. В средней линии EMA более короткие циклы EMA более чувствительны к изменениям цен и могут отражать недавние тенденции цен; в то время как более длинные циклы EMA менее чувствительны к изменениям цен и могут отражать долгосрочные тенденции. Когда короткие циклы EMA проходят длинную циклическую EMA снизу, образуются так называемые золотые форки, которые означают, что краткосрочная тенденция становится бычьей, и можно настроить дополнительные заказы.

Стратегия использует 7 групп средних линий EMA, включая 12&26, 12&50, 12&100, 12&200, 12&89 и 12&144. Стратегия одновременно сравнивает пересечения этих 7 групп EMA. Например, когда 12-я EMA пересекает 26-ю EMA для образования золотой форки, открывается позиция; когда происходит мертвый форк, она выровняет эту позицию.

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

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

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

Основной риск этой стратегии заключается в том, что при использовании множественных комбинаций средних линий EMA может возникать слишком частое перекрестное сигнализирование. Например, количество перекрестных сигналов между 12-дневной и 26-дневной EMA более часто, чем между 12-дневной и 200-дневной EMA. Невозможность контролировать частоту открытия позиций и свободных позиций увеличивает затраты на торговлю и потери скольжения. Кроме того, сама средняя линия EMA является отсталой от изменения цены и может привести к несвоевременному появлению сигнала.

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("EMA Trades", overlay=true, pyramiding=4)

src = input(close, title="Source")

shortestLine = input(12, minval=1, title="Shortest Line")
shorterLine = input(26, minval=1, title="Shorter Line")
shortLine = input(50, minval=1, title="Short Line")
middleLine = input(100, minval=1, title="Middle Line")
longLine = input(200, minval=1, title="Long Line")
longerLine = input(89, minval=1, title="Longer Line")
longestLine = input(144, minval=1, title="Longest Line")

shortestLineOutput = ema(src, shortestLine)
shorterLineOutput = ema(src, shorterLine)
shortLineOutput = ema(src, shortLine)
middleLineOutput = ema(src, middleLine)
longLineOutput = ema(src, longLine)
longerLineOutput = ema(src, longerLine)
longestLineOutput = ema(src, longestLine)

//plot(shortestLineOutput, title="Shortest EMA", color=#ffffff)
//plot(shorterLineOutput, title="Shorter EMA", color=#e54fe6)
//plot(shortLineOutput, title="Short EMA", color=#4e6bc3)
//plot(middleLineOutput, title="Middle EMA", color=#1dd6d8)
//plot(longLineOutput, title="Long EMA", color=#d0de10)
//plot(longerLineOutput, title="Longer EMA", color=#ef6a1a)
//plot(longestLineOutput, title="Longest EMA", color=#ff0e0e)

longEnrtyCondition_1 = crossover(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput > shorterLineOutput
longEntryCondition_2 = crossover(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput > shortLineOutput
longEnrtyCondition_3 = crossover(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput > middleLineOutput
longEntryCondition_4 = crossover(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput > longLineOutput

shortEnrtyCondition_1 = crossunder(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput < shorterLineOutput
shortEntryCondition_2 = crossunder(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput < shortLineOutput
shortEnrtyCondition_3 = crossunder(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput < middleLineOutput
shortEntryCondition_4 = crossunder(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput < longLineOutput

if (longEnrtyCondition_1)
    strategy.entry("Buy1", strategy.long)
    strategy.exit("Sell1")

if (longEntryCondition_2)
    strategy.entry("Buy2", strategy.long)
    strategy.exit("Sell2")

if (longEnrtyCondition_3)
    strategy.entry("Buy3", strategy.long)
    strategy.exit("Sell3")

if (longEntryCondition_4)
    strategy.entry("Buy4", strategy.long)
    strategy.exit("Sell4")

if (shortEnrtyCondition_1)
    strategy.entry("Sell1", strategy.short)
    strategy.exit("Buy1")

if (shortEntryCondition_2)
    strategy.entry("Sell2", strategy.short)
    strategy.exit("Buy2")

if (shortEnrtyCondition_3)
    strategy.entry("Sell3", strategy.short)
    strategy.exit("Buy3")

if (shortEntryCondition_4)
    strategy.entry("Sell4", strategy.short)
    strategy.exit("Buy4")