Стратегия Dual Moving Average Trend Tracking - это стратегия, которая использует комбинацию быстрых и медленных скользящих средних для определения тенденции рынка и генерирует торговые сигналы при изменении направления тренда.
Стратегия Dual Moving Average Trend Tracking использует две скользящие средние - быструю скользящую среднюю (5 периодов) и медленную скользящую среднюю (21 период). Быстрый MA используется для генерации торговых сигналов, в то время как медленный MA используется для определения направления тренда рынка. Когда быстрый MA пересекает более медленного MA, генерируется сигнал покупки. Когда быстрый MA пересекает ниже медленного MA, генерируется сигнал продажи.
Стратегия также использует индикатор ценового канала, чтобы помочь определить тенденцию. Ценовой канал определяется скользящими средними наивысшей и самой низкой цены. Когда цены проходят через канал, это указывает на изменение тренда. Эта стратегия использует два ценовых канала с периодами 21 и 5 соответственно, соответствующие периодам MA.
При определении сигналов покупки и продажи стратегия требует, чтобы последовательные красно-зеленые свечи появились (устройство пользователя) в качестве дополнительного фильтра.
В целом логика определения тенденции в этой стратегии заключается в следующем:
Осуждая тенденции в разные периоды времени, можно эффективно отфильтровать шум рынка и подтвердить направление тренда.
Стратегия двойного отслеживания тренда скользящих средних имеет следующие преимущества:
В заключение, эта стратегия имеет относительно хорошую общую стабильность и хорошо работает на сильно развивающихся рынках.
Стратегия двойного отслеживания тренда скользящих средних также сопряжена с некоторыми рисками, в основном:
К соответствующим мерам по снижению рисков относятся:
Существует возможность дальнейшей оптимизации стратегии, в основном в таких направлениях, как:
Эти направления оптимизации могут еще больше улучшить стабильность, адаптивность и уровень интеллекта стратегии.
В заключение, стратегия Dual Moving Average Trend Tracking - это относительно надежная стратегия, следующая за трендом. Она сочетает в себе движущиеся средние и ценовые каналы для определения направления и силы тренда, генерируя торговые сигналы с быстрым MA. Дополнительные фильтры свечей также помогают избежать неправильных сигналов. Регулируемые параметры позволяют адаптироваться к различным рыночным условиям.
/*backtest start: 2023-12-24 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's Trend MAs Strategy v1.8", shorttitle = "Trend MAs str 1.8", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, "long") needshort = input(true, "short") needstops = input(false, "stops") stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %") useohlc4 = input(false, defval = false, title = "Use OHLC4") usefastsma = input(true, "Use fast MA Filter") fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period") slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period") bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q") needbg = input(false, defval = false, title = "Need trend Background?") needarr = input(false, defval = false, title = "Need entry arrows?") src = useohlc4 == true ? ohlc4 : close fastsma = ema(src, 5) //PriceChannel 1 lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 //PriceChannel 2 lasthigh2 = highest(src, fastlen) lastlow2 = lowest(src, fastlen) center2 = (lasthigh2 + lastlow2) / 2 //Trend //ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0 //trend = low > ma and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -1 : trend[1] trend1 = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend1[1] trend2 = low > center2 and low[1] > center2[1] ? 1 : high < center2 and high[1] < center2[1] ? -1 : trend1[1] trend = trend1 == 1 and trend2 == 1 ? 1 : trend2 == -1 and trend2 == -1 ? -1 : trend[1] //Bars bar = close > open ? 1 : close < open ? -1 : 0 redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0 greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0 //Signals up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0 dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0 //Lines colorfastsma = usefastsma == true ? red : na plot(fastsma, color = colorfastsma, title = "Fast MA") plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA") plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2") //Arrows plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0) plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0) //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 90) //Alerts alertcondition(up == 1, title='buy', message='Uptrend') alertcondition(dn == 1, title='sell', message='Downtrend') //Trading stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1] stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1] longCondition = up == 1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) strategy.exit("Stop Long", "Long", stop = stoplong) shortCondition = dn == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na) strategy.exit("Stop Short", "Short", stop = stopshort)