Эта стратегия разработана на основе принципов золотого креста и мертвого креста простой скользящей средней (SMA). Стратегия использует две SMA, а именно быструю 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)