Основано на простой стратегии торговли с пересечением двух скользящих средних


Дата создания: 2023-12-25 16:03:48 Последнее изменение: 2023-12-25 16:03:48
Копировать: 0 Количество просмотров: 643
1
Подписаться
1623
Подписчики

Основано на простой стратегии торговли с пересечением двух скользящих средних

Обзор

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