
Стрельба по пересеченным средним является наиболее распространенной количественной стратегией торговли. Стрельба производится путем вычисления пересеченных средних за разные периоды и создания торговых сигналов в зависимости от их пересечения. В частности, вычисляется показательная пересеченная средняя за 4 цикла, 8 циклов и 20 циклов (ЕМА), которая увеличивается при прохождении долгосрочной ЭМА на краткосрочной ЭМА, а уменьшается при прохождении долгосрочной ЭМА.
Основная логика этой стратегии заключается в следующем:
С помощью этого метода мы используем перекрёстки между различными циклическими средними линиями для оценки сигналов рынка, а также используем направление самой длинной циклической средней линии для фильтрации ошибочных сигналов и построения стабильной торговой стратегии.
Основные преимущества этой стратегии:
Однако эта стратегия также несет в себе некоторые риски:
Основные решения:
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация цикла: определение оптимального сочетания циклов MA для разных сортов
Интеграция моделей: интеграция с глубокими моделями обучения, такими как LSTM, RNN, для извлечения большего количества Альфы
Оптимизация портфеля: создание портфеля стратегий с другими показателями
В целом, пересекающаяся средняя стратегия является более классической и часто используемой количественной торговой стратегией. Логика этой стратегии проста, легко понятна и реализуема, имеет определенную стабильность. Но есть также некоторые проблемы, такие как создание ложных сигналов, неспособность адаптироваться к изменениям рынка и т. Д. Эти проблемы могут быть улучшены методами оптимизации параметров, оптимизации сдерживания потерь и интеграции моделей.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2.05)
//stock strategy
strategy(title = "stub", overlay = true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true, commission_type=strategy.commission.percent,commission_value=.0,default_qty_value=10000)
testStartYear = input(1900, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testPeriod() => true
ema1 = ema(close,4)
ema2 = ema(close,8)
ema3 = ema(close,20)
go_long = ema1[0] > ema2[0] and ema3[0] > ema3[1]
exit_long = ema1[0] < ema2[0] or ema3[0] < ema3[1]
go_short = ema1[0] < ema2[0] and ema3[0] < ema3[1]
exit_short = ema1[0] > ema2[0] or ema3[0] > ema3[1]
if testPeriod()
strategy.entry("simpleBuy", strategy.long, when=go_long)
strategy.exit("simpleBuy", "simpleSell",when=exit_long)
strategy.entry("simpleSell", strategy.short,when=go_short)
strategy.exit("simpleSell", "simpleSell",when=exit_short)