Эта стратегия является торговой стратегией MACD, основанной на эластичной весовой скользящей средней (EVWMA).
Индикатор EVWMA включает информацию о объеме в расчет скользящих средних, что позволяет скользящим средним более точно отражать изменения цен. Расчеты быстрой линии и медленной линии в этой стратегии основаны на EVWMA. Настройки параметров быстрой линии более чувствительны для улавливания краткосрочных колебаний цен; настройки параметров медленной линии более надежны для фильтрации некоторого шума. MACD, сформированный двумя EVWMA, запускает длинные и короткие сигналы на перекрестке, а гистограмма обеспечивает визуально улучшенные торговые запросы.
Наибольшее преимущество этой стратегии заключается в том, что, используя мощь индикатора EVWMA, параметры настройки стратегии MACD становятся более стабильными, а торговые сигналы становятся более ясными. По сравнению с простыми скользящими средними, EVWMA может лучше улавливать изменения тренда рынка. Это делает стратегию более адаптивной для стабильной работы в различных рыночных условиях.
Основной риск этой стратегии заключается в том, что сам MACD имеет определенное отставание и не может оперативно улавливать перевороты цен. Кроме того, параметры настройки EVWMA также влияют на эффективность стратегии. Если параметры быстрой и медленной линии не установлены должным образом, торговые сигналы будут хаотичными, что повлияет на прибыльность.
Для смягчения рисков параметры должны быть корректированы соответствующим образом, чтобы иметь умеренную разницу между быстрыми и медленными линиями. Хистограмма может помочь в оценке необходимости корректировки параметров. Кроме того, стратегии стоп-лосса также могут быть разработаны, чтобы избежать чрезмерно больших одиночных потерь.
К основным аспектам оптимизации этой стратегии относятся:
Использование адаптивных методов установки параметров для автоматической корректировки параметров EVWMA в соответствии с рыночными условиями для обеспечения ясности сигнала.
Увеличить механизмы остановки потерь для эффективного контроля одиночных потерь.
Включите другие индикаторы для фильтрации ложных сигналов. Например, объедините их с объемом, чтобы запустить сигналы только при значительных изменениях цен.
Оптимизировать выбор входных точек. В настоящее время стратегия открывает позиции на перекрестках нулевой линии 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))