Эта стратегия использует комбинацию быстрого и медленного движущихся средних для определения направления тренда, когда быстрая линия прорывает медленную линию, создавая торговый сигнал, относящийся к двойной системе движущихся средних.
Стратегия использует быстрые скользящие средние с меньшей длиной и медленные скользящие средние с большей длиной.
Медленный MA используется для определения направления основной тенденции. Когда цена находится выше MA, она определяется как тенденция к росту; когда цена находится ниже MA, она определяется как тенденция к снижению.
В восходящем тренде, если быстрый MA на верхнем проходит медленный MA, то это создает сигнал к покупке; в нисходящем тренде, если быстрый MA на нижнем проходит медленный MA, то это создает сигнал к продаже.
После появления торгового сигнала можно выбрать, установить ли стоп-стоп, чтобы продолжить отслеживание стоп-лосса.
Постепенно комбинация MA позволяет эффективно распознавать тенденции.
Быстрый МА может создавать более чувствительные торговые сигналы.
Постепенное удаление шума на рынке, чтобы предотвратить ложный прорыв.
Можно выбрать несколько алгоритмов MA, таких как EMA, DEMA и т. д.
Можно включить стратегию Stop Loss и отслеживать Stop Loss.
Существуют проблемы с задержкой MA, которые могут привести к задержке сигнала.
Точка остановки может быть слишком близка, что может привести к потере. Следует оставить пространство для колебаний.
Существует риск манипулирования ценами без учета объемов сделок.
Подтверждение может быть сделано на основе других факторов.
Трудность оптимизации параметров. Можно использовать пошаговую оптимизацию или генетические алгоритмы для поиска оптимальных параметров.
Тестирование параметров различных алгоритмов MA для поиска оптимальных.
Исследование адаптации подвижных средних для повышения чувствительности.
Добавление других показателей или факторов для оптимизации фильтрации сигнала.
Разработать механизм динамического прекращения убытков, чтобы сделать их более гибкими.
Оптимизация стратегий управления капиталом, например, корректировка позиций в соответствии с динамикой ATR.
Эта стратегия использует двойной MA для создания торгового сигнала и ограничения риска. Логика торговли проста и понятна, но есть проблемы с выбором параметров.
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.7", shorttitle = "Trend MAs str 1.7", 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, %")
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")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")
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 and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[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
min = min(open, close)
max = max(open, close)
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")
//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)