
Эта стратегия позволяет односторонне открывать позиции, рассчитывая различные типы скользящих средних, чтобы определить направление ценовой тенденции.
Эта стратегия позволяет выбрать 7 различных типов движущихся средних, включая простые движущиеся средние (SMA), индексные движущиеся средние (EMA), торгово-весовые средние (VWMA), двузначные движущиеся средние (DEMA), трехзначные движущиеся средние (TEMA), Кауфман адаптивные движущиеся средние (KAMA) и средние линии ценового канала.
Когда цена закрытия спускается вверх и пробивает передвижущуюся среднюю, считается, что она на подъеме, и открывается дополнительная позиция; когда цена закрытия спускается вверх и пробивает передвижущуюся среднюю, считается, что она на подъеме, и открывается открытая позиция. Таким образом, можно захватить переломный момент ценовой тенденции и открыть одностороннюю позицию.
Эта стратегия имеет следующие преимущества:
Можно выбрать несколько типов скользящих средних, гибко адаптирующихся к различным видам и периодам.
Одностороннее открытие позиции позволяет эффективно контролировать риски.
“Я не хочу, чтобы мои дети были в тюрьме.
Легко понять и реализовать.
Однако эта стратегия также несет в себе некоторые риски:
Когда цена колеблется вблизи скользящего среднего, возникают многочисленные ошибочные сигналы и обратные открытия позиций. Для управления риском можно установить соответствующий стоп-лосс.
Невозможно полностью избежать риска, связанного с быстрым ростом или падением цен. Можно объединить с другими показателями, чтобы определить сигнал тренда.
Аналитик должен выбрать подходящие параметры для скользящих средних, а неправильные параметры могут привести к задержке торговых сигналов.
Эта стратегия может быть оптимизирована в следующих аспектах:
В сочетании с другими техническими показателями, такими как MACD, RSI и т. д., формируется портфель сделок.
Добавить логику остановки. Переместить остановку или прикрепить одну остановку.
Тестирование и оптимизация параметров, выбор оптимального сочетания параметров. Например, циклы скользящих средних, тип скользящих средних и другие параметры.
Можно рассматривать стратегии входа типа “немедленно торгуй” и отслеживать движение тренда.
Стратегия основана на движущейся средней, которая определяет направление ценовой тенденции и позволяет односторонне открывать позиции. Ее использование простое, легко реализуемое и позволяет эффективно контролировать риски. Но также может возникать ошибочный сигнал и риск обратного открытия позиции.
/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
needlong = input(true, "long")
needshort = input(true, "short")
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")
anti = input(true, defval = true, title = "Antipila")
//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 = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
longCondition = trend == 1 and trend[1] == -1
if (longCondition)
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)