Стратегия Multi-EMA Crossover Trend Following сочетает в себе несколько линий 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")