
Эта стратегия основана на принципе гибкой форки простого скользящего среднего ((SMA)). Стратегия использует два SMA, то есть быстрый SMA и медленный SMA, когда быстрый SMA прорывает медленный SMA снизу, создает сигнал покупать; когда быстрый SMA падает вниз, когда медленный SMA сверху, создает сигнал продажи.
Эта стратегия основывается на двух линиях индикатора SMA. Среди них, более короткие настройки в период быстрых SMA позволяют быстрее улавливать изменения цен; более длинные настройки в период медленных SMA позволяют отфильтровывать часть шума. Когда быстрые SMA пересекают медленные SMA снизу, это означает, что краткосрочные цены растут быстрее, что создает сигнал к покупке.
Параметры стратегии могут быть скорректированы в зависимости от рыночных условий путем настройки различных параметров цикла SMA. При этом стратегия также позволяет настроить диапазон времени отсчета, что облегчает тестирование параметров стратегии на исторических данных.
Для борьбы с указанными рисками можно использовать следующие меры:
Эта стратегия является типичной стратегией отслеживания тенденций. Используя простой принцип двойного равномерного пересечения, можно получить лучший эффект отслеживания при условии, что параметры настроены соответствующим образом. Однако сама SMA имеет определенную отсталость, не позволяющую оценить силу тенденции. Поэтому в практическом применении необходимо ввести другие вспомогательные инструменты, чтобы сформировать портфель показателей, а также дополнить автоматизированными средствами оптимизации параметров и контроля риска, чтобы стратегия была стабильно прибыльной.
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//strategy(title="MA Cross Entry & Exit w/Date Range", overlay=true, initial_capital=10000, currency='USD')
strategy(title="SMA Cross Entry & Exit Strategy", overlay=true)
// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/
// === GENERAL INPUTS ===
// short ma
maFastSource = input(defval = open, title = "Fast MA Source")
maFastLength = input(defval = 36, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource = input(defval = open , title = "Slow MA Source")
maSlowLength = input(defval = 46, title = "Slow MA Period", minval = 1)
// === SERIES SETUP ===
// a couple of ma's..
maFast = sma(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)
// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// === LOGIC ===
//enterLong = crossover(maFast, maSlow)
//exitLong = crossover(maSlow, maFast)
enterLong = crossover(maSlow, maFast)
exitLong = crossover(maFast, maSlow)
// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)
// === FILL ====
fill(fast, slow, color = maFast > maSlow ? green : red)