Тенденция перекрестного использования различных EMA в соответствии со стратегией

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

img

Обзор

Стратегия Multi-EMA Crossover Trend Following сочетает в себе несколько линий EMA с различными параметрами для определения направлений тренда на основе сигналов кроссовера, направленных на отслеживание тенденций на рынке.

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

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

Эта стратегия одновременно отслеживает 7 групп перекресток EMA, включая периоды 12&26, 12&50, 12&100, 12&200, 12&89 и 12&144. Например, когда 12-дневная EMA пересекает 26-дневную EMA, стратегия откроет длинную позицию. Она закрыт длинную позицию, когда произойдет перекресток смерти. Такая же логика применяется к другим парам EMA.

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

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

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

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

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

Направления к улучшению

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

Заключение

Стратегия Multi-EMA Crossover Trend Following идентифицирует направления тренда путем сравнения ситуаций перекрестного перехода между несколькими 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")

Больше