Стратегия отслеживания тенденции двойной скользящей средней

Автор:Чао Чжан, Дата: 2024-02-04 15:57:12
Тэги:

img

Обзор

Стратегия Dual Moving Average Trend Tracking использует комбинацию быстрых и медленных средних движений для определения направления тренда, а также цвет тела свечи в качестве сигналов входа.

Принцип

Стратегия использует 20-периодный медленный скользящий средний для определения общей тенденции. Вверх перекресток предполагает восходящий тренд, в то время как вниз перекресток предполагает нисходящий тренд. 5-периодный быстрый MA служит фильтром входа. Торги запускаются только тогда, когда цена нарушает быстрый MA. Кроме того, проверяются последние цвета тела свечи N. Длинные сигналы запускаются, когда цвет тела становится красным в восходящем тренде. Короткие сигналы запускаются, когда цвет тела становится зеленым в нисходящем тренде. Это помогает избежать ложных прорывов.

Стратегия рассматривает ценовое движение с использованием трех измерений - тренд, краткосрочный MA и тело свечи, улучшая надежность сигнала.

Преимущества

  1. Сочетает в себе тенденцию и среднее изменение, адаптируемое в различных рыночных условиях.

  2. Многофакторный обзор предварительных сигналов улучшает процент победы, избегая ложных сигналов.

  3. Оптимизируется с использованием длин MA, цветов свечей проверяются и т.д.

  4. Ясная, лаконичная логика, удобная для начинающих.

Риски

  1. Убытки на рынках с диапазоном могут привести к убыткам / убыткам.

  2. Попробуйте изменить количество проверенных свечей или отключить среднее обратное движение.

  3. Для проверки параметров и производительности необходима обширная обратная проверка.

Улучшение

  1. Исследуйте другие типы МО, например, EMA, KAMA и т.д.

  2. Добавить правила размещения позиций, например, на основе фиксированного количества или процента собственного капитала.

  3. Подумайте о выходе из длинных позиций, если цена закрывается ниже медленного MA.

  4. Испытание на различных приборах для проверки стабильности.

Заключение

Стратегия Dual MA получает прибыль от трендовых сделок при извлечении среднего реверсионного альфа в более короткие временные рамки. Производительность и потенциал прибыли могут быть улучшены за счет оптимизации. Несмотря на свою простоту, она позволяет новичкам понять ключевые концепции, связанные с сочетанием тренда и среднего реверсия.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs 1.5", shorttitle = "Trend MAs 1.5", 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")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")

fastsma = ema(src, fastlen)

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 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 ? 1 : high < ma ? -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 < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(ma, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

//Trading
longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Больше