Многофакторная количественная стратегия торговли

Автор:Чао Чжан, Дата: 2023-09-13 14:46:59
Тэги:

Многофакторная количественная стратегия торговли, которая объединяет в себе скользящие средние факторы и колеблющиеся показатели для контроля рисков и повышения стабильности.

Логика стратегии

Стратегия состоит из трех основных модулей:

  1. Движущиеся средние показатели

С помощью 5 EMA с различными периодами (8, 13, 21, 34, 55) для создания фильтра тренда. MAs расположены от короткого до длинного. Только когда более быстрая EMA пересекает более медленную EMA, генерируется сигнал тренда.

  1. Оциллирующие показатели

Комбинировать RSI и стохастические осцилляторы для проверки сигналов прорыва, избегая чрезмерных ложных перерывов на рынках диапазонов.

RSI (14) генерирует длинный сигнал, когда он находится в диапазоне 40-70 и короткий сигнал, когда он находится в диапазоне 30-60.

Стохастический (14,3,3) дает длинный сигнал, когда линия K находится между 20-80 и короткий сигнал, когда линия K находится между 5-95.

  1. Логика входа и выхода

Сигнал входа запускается только при выравнивании обоих факторов. Сигнал выхода генерируется, когда один из факторов больше не действителен.

Строгий многофакторный фильтр обеспечивает высокий показатель победы и надежные сигналы.

Преимущества

  • Многофакторный дизайн эффективно фильтрует рыночный шум и предотвращает чрезмерную торговлю.
  • Сочетает в себе последовательность трендов и изменение среднего значения, сбалансируя динамическую торговлю и локальную торговлю.
  • Захватывает точки обратного движения в рамках тенденций с использованием MA и осцилляторов.
  • Большое пространство оптимизации для получения лучшей производительности.

Риски

  • Относительно низкая частота сигнала, может упустить некоторые возможности.
  • Отставание MA следует проверять с помощью более быстрых осцилляторов.
  • Осилляторы, склонные к ложным сигналам, должны использоваться в качестве вспомогательных факторов.
  • Параметры требуют периодической оптимизации для адаптации к изменяющимся условиям рынка.

Заключение

Эта стратегия успешно сочетает в себе сильные стороны стратегий следования тренду и обратной торговли. Многофакторная модель контроля риска обеспечивает стабильную альфу. Это очень практичная количественная стратегия торговли, которая заслуживает глубоких исследований и применения сообществом ИИ.


/*backtest
start: 2022-09-12 00:00:00
end: 2022-11-15 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Combined Strategy", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value = .0020, pyramiding = 0, slippage = 3, overlay = true)

//----------//
// MOMENTUM //
//----------//
ema8 = ema(close, 8)
ema13 = ema(close, 13)
ema21 = ema(close, 21)
ema34 = ema(close, 34)
ema55 = ema(close, 55)

plot(ema8, color=red, style=line, title="8", linewidth=1)
plot(ema13, color=orange, style=line, title="13", linewidth=1)
plot(ema21, color=yellow, style=line, title="21", linewidth=1)
plot(ema34, color=aqua, style=line, title="34", linewidth=1)
plot(ema55, color=lime, style=line, title="55", linewidth=1)

longEmaCondition = ema8 > ema13 and ema13 > ema21 and ema21 > ema34 and ema34 > ema55
exitLongEmaCondition = ema13 < ema55

shortEmaCondition = ema8 < ema13 and ema13 < ema21 and ema21 < ema34 and ema34 < ema55
exitShortEmaCondition = ema13 > ema55

// ----------  //
// OSCILLATORS //
// ----------- //
rsi = rsi(close, 14)
longRsiCondition = rsi < 70 and rsi > 40
exitLongRsiCondition = rsi > 70

shortRsiCondition = rsi > 30 and rsi < 60
exitShortRsiCondition = rsi < 30

// Stochastic
length = 14, smoothK = 3, smoothD = 3
kFast = stoch(close, high, low, 14)
dSlow = sma(kFast, smoothD)

longStochasticCondition = kFast < 80
exitLongStochasticCondition = kFast > 95

shortStochasticCondition = kFast > 20
exitShortStochasticCondition = kFast < 5

//----------//
// STRATEGY //
//----------//

longCondition = longEmaCondition and longRsiCondition and longStochasticCondition and strategy.position_size == 0
exitLongCondition = (exitLongEmaCondition or exitLongRsiCondition or exitLongStochasticCondition) and strategy.position_size > 0

if (longCondition)
    strategy.entry("LONG", strategy.long)
if (exitLongCondition)
    strategy.close("LONG")
    
shortCondition = shortEmaCondition and shortRsiCondition and shortStochasticCondition and strategy.position_size == 0
exitShortCondition = (exitShortEmaCondition or exitShortRsiCondition or exitShortStochasticCondition) and strategy.position_size < 0

if (shortCondition)
    strategy.entry("SHORT", strategy.short)
if (exitShortCondition)
    strategy.close("SHORT")

Больше