В процессе загрузки ресурсов... загрузка...

Стратегия EMA по фильтрации трендов

Автор:Чао Чжан, Дата: 2024-06-14 15:51:05
Тэги:ЕМАstdevТенденция

img

Обзор

Эта стратегия использует три экспоненциальные скользящие средние (EMAs) с различными периодами для определения рыночных тенденций и генерации сигналов покупки / продажи. Кросс-оверы между быстрой EMA, медленной EMA и EMA фильтра тренда, наряду с ценовой позицией относительно EMA фильтра тренда, формируют основную логику этой стратегии. Кроме того, индикатор тренда Фукуиза вводится в качестве вспомогательного суждения, который вызывает закрытие позиции при определенных условиях.

Принцип стратегии

  1. Вычислить три EMA с различными периодами: быстрая EMA (9 периодов по умолчанию), медленная EMA (21 период по умолчанию) и EMA с фильтром тренда (200 периодов по умолчанию).
  2. Вычислить 20-периодное стандартное отклонение цены для измерения волатильности рынка.
  3. Введите индикатор тренда Фукуиза (предполагаемая 14-периодическая EMA) и определите его цвет на основе его отношения к предыдущему периоду (зеленый для повышения, красный для снижения).
  4. Сгенерировать сигнал покупки, когда быстрая EMA пересекает более медленную EMA, быстрая EMA выше медленной EMA, а цена выше EMA фильтра тренда.
  5. Сгенерировать сигнал продажи, когда быстрая EMA пересекается ниже медленной EMA, быстрая EMA ниже медленной EMA, а цена ниже EMA фильтра тренда.
  6. При удержании длинной позиции, если индикатор тренда Фукуиза становится красным, закрыть длинную позицию.
  7. При проведении короткой позиции, если индикатор тренда Фукуиза становится зеленым, закрыть короткую позицию.

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

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

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

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

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

  1. Оптимизировать параметры периода каждой EMA, чтобы найти наиболее подходящую комбинацию для текущего рынка.
  2. Ввести другие вспомогательные индикаторы, такие как RSI и MACD, чтобы обеспечить больше баз входа и выхода.
  3. Оптимизировать логику стоп-лосса индикатора тренда Фукуиза, например, добавить буферную зону, чтобы избежать преждевременных стоп-лосков.
  4. Рассмотреть возможность включения модулей управления позициями и контроля рисков для повышения стабильности и устойчивости к рискам стратегии.

Резюме

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


/*backtest
start: 2023-06-08 00:00:00
end: 2024-06-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EvilRed Trading Indicator Trend Filter", overlay=true)

// Parameters Definition
fastLength = input(9, title="Fast EMA Length")
slowLength = input(21, title="Slow EMA Length")
trendFilterLength = input(200, title="Trend Filter EMA Length")

// Moving Averages Calculation
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
trendEMA = ta.ema(close, trendFilterLength)

// Volatility Calculation
volatility = ta.stdev(close, 20)

// Add Fukuiz Trend Indicator
fukuizTrend = ta.ema(close, 14)
fukuizColor = fukuizTrend > fukuizTrend[1] ? color.green : color.red
plot(fukuizTrend, color=fukuizColor, title="Fukuiz Trend")

// Plotting Moving Averages
plot(fastEMA, color=color.blue, title="Fast EMA")
plot(slowEMA, color=color.red, title="Slow EMA")
plot(trendEMA, color=color.orange, title="Trend Filter")

// Plotting Buy and Sell Signals
buySignal = ta.crossover(fastEMA, slowEMA) and fastEMA > slowEMA and close > trendEMA
sellSignal = ta.crossunder(fastEMA, slowEMA) and fastEMA < slowEMA and close < trendEMA

// Entry and Exit Conditions
if (strategy.position_size > 0 and fukuizColor == color.red)
    strategy.close("Long", comment="Fukuiz Trend is Red")

if (strategy.position_size < 0 and fukuizColor == color.green)
    strategy.close("Short", comment="Fukuiz Trend is Green")

if (buySignal)
    strategy.entry("Long", strategy.long)
    
if (sellSignal)
    strategy.entry("Short", strategy.short)




plotshape(buySignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")


Связанные

Больше