Торговая стратегия MACD на основе EVWMA

Автор:Чао Чжан, Дата: 2024-01-22 10:50:25
Тэги:

img

Обзор

Эта стратегия является торговой стратегией MACD, основанной на эластичной весовой скользящей средней (EVWMA).

Принципы

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

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

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

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

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

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

Руководство по оптимизации

К основным аспектам оптимизации этой стратегии относятся:

  1. Использование адаптивных методов установки параметров для автоматической корректировки параметров EVWMA в соответствии с рыночными условиями для обеспечения ясности сигнала.

  2. Увеличить механизмы остановки потерь для эффективного контроля одиночных потерь.

  3. Включите другие индикаторы для фильтрации ложных сигналов. Например, объедините их с объемом, чтобы запустить сигналы только при значительных изменениях цен.

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

Заключение

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


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

//@version=4
strategy("QuantNomad - EVWMA MACD Strategy", shorttitle = "EVWMA MACD", overlay = false)

// Inputs
fast_sum_length = input(10, title = "Fast Sum Length",  type = input.integer)
slow_sum_length = input(20, title = "Slow Sum Length",  type = input.integer)
signal_length   = input(9,  title = "Signal Smoothing", type = input.integer, minval = 1, maxval = 50)

// Calculate Volume Period
fast_vol_period = sum(volume, fast_sum_length)
slow_vol_period = sum(volume, slow_sum_length)

// Calculate EVWMA
fast_evwma = 0.0
fast_evwma := ((fast_vol_period - volume) * nz(fast_evwma[1], close) + volume * close) / (fast_vol_period)

// Calculate EVWMA
slow_evwma = 0.0
slow_evwma := ((slow_vol_period - volume) * nz(slow_evwma[1], close) + volume * close) / (slow_vol_period)

// Calculate MACD
macd   = fast_evwma - slow_evwma
signal = ema(macd, signal_length)
hist   = macd - signal

// Plot 
plot(hist,   title = "Histogram", style = plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #EF5350) ), transp=0 )
plot(macd,   title = "MACD",      color = #0094ff, transp=0)
plot(signal, title = "Signal",    color = #ff6a00, transp=0)

// Strategy
strategy.entry("Long",   true, when = crossover(fast_evwma, slow_evwma))
strategy.entry("Short", false, when = crossunder(fast_evwma, slow_evwma))

Больше