Стратегия перекрестного трейдинга SMA

Автор:Чао Чжан, Дата: 2023-12-25 16:03:48
Тэги:

img

Обзор

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

Больше