Эта стратегия формирует сигналы покупки и продажи, рассчитывая движущиеся средние за два различных периода и формируя их в зависимости от их золотых и мертвых точек.
Эта стратегия сначала позволяет пользователям выбирать тип и длину движущейся средней. Типы включают SMA, EMA, VWMA и т. д., а длина определяет период средней.
Затем, по выбору пользователя, вычисляются две скользящие средние. Если быстрая линия сверху проходит медленную линию, образуя золотую вилку, то создается сигнал покупки. Если быстрая линия сверху снизу проходит медленную линию, образуя мертвую вилку, то создается сигнал продажи.
Таким образом, когда средняя цена краткосрочного периода выше средней цены долгосрочного периода, это считается рыночной тенденцией к росту, и следует покупать. Когда средняя цена краткосрочного периода ниже средней цены долгосрочного периода, это считается рыночной тенденцией к снижению, и следует продавать.
Риск можно контролировать путем соответствующего оптимизации параметров, комбинации других показателей, генерирования сигналов, установки стоп-стоп и т. д.
Общая концепция стратегии проста и понятна, формирование торговых сигналов путем расчета двойной равновесной линии, гибкая корректировка параметров в зависимости от рыночной обстановки и оптимизация других комбинаций стратегий, но необходимо обратить внимание на предотвращение рисков шокирующего рынка и рациональное управление средствами. В целом, это вариант, который стоит рассмотреть.
/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's MAs Tests", shorttitle = "MAs tests", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")
//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
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
plot(ma, color = blue, linewidth = 3, transp = 0)
trend = low > ma ? 1 : high < ma ? -1 : trend[1]
longCondition = trend == 1 and trend[1] == -1
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
strategy.entry("Short", strategy.short)