Количественная торговая стратегия на основе стохастического цикла Элерса


Дата создания: 2024-01-17 16:03:30 Последнее изменение: 2024-01-17 16:03:30
Копировать: 0 Количество просмотров: 793
1
Подписаться
1617
Подписчики

Количественная торговая стратегия на основе стохастического цикла Элерса

Обзор

Стратегия случайных циклов Элерса - это количественная торговая стратегия, использующая случайные циклы Элерса для получения торговых сигналов. Эта стратегия объединяет преимущества случайных и циклических индикаторов, чтобы использовать периодические возможности на рынке.

Стратегический принцип

Эта стратегия сначала строит сглаженный циклический показатель, а затем на основе этого показателя строит случайный показатель. Производство торгового сигнала определяется скрещиванием движущихся средних этих случайных показателей.

В частности, метод расчета показателя сглаженного цикла:

smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6

src - это входные данные о ценах, например, цена закрытия. Этот индикатор объединяет текущую цену и цены за предыдущие 3 периоды времени, создавая гладкий циклический сигнал.

На основе сглаженного показателя можно вычислить цикл случайных показателей:

cycle := (1 - .5 * alpha) * (1 - .5 * alpha) * 
           (smooth - 2 * smooth[1] + smooth[2]) + 
           2 * (1 - alpha) * cycle[1] - 
           (1 - alpha) * (1 - alpha) * cycle[2]

В расчетной формуле содержится дифференциал второй степени для циклического сигнала после сглаживания, а также значения для двух предыдущих циклов… …

Наконец, на основе этого индикатора цикла рассчитывается случайная величина value1 ≠ 100 и построена сигнальная величина signal1 ≠ 10 на основе 10-дневного скользящего среднего значения value1.

Стратегические преимущества

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

Основные преимущества:

  1. Циклический индикатор может идентифицировать циклическую модель, случайный индикатор предоставляет время торговли xFB
  2. Двойной индикаторный дизайн, эффективно фильтрующий ложные сигналы
  3. Настраиваемые параметры, адаптированные к различным рыночным условиям

Стратегический риск

Основные риски этой стратегии:

  1. Неправильная настройка параметров может привести к частоте сделок, увеличению сделок и стоимости скольжения
  2. Неэффективное управление рынком с резкими колебаниями цен может привести к значительным потерям
  3. Периодические индикаторы сильно зависят от соответствия кривой, неправильное соответствие может привести к ошибочному сигналу

Риск можно контролировать путем оптимизации параметров, установки стоп-стоп и других методов в сочетании с другими показателями фильтрации.

Направление оптимизации стратегии

Эта стратегия также может быть оптимизирована в следующих направлениях:

  1. Фильтрация сигнала в сочетании с другими техническими показателями, такими как BRI, RSI и т. д., чтобы уменьшить ошибочный сигнал
  2. Присоединение к механизму адаптивного выхода с динамической корректировкой стоп-лосс в зависимости от степени волатильности рынка
  3. Автоматическая оптимизация параметров с использованием методов машинного обучения, позволяя динамично адаптироваться к рынку
  4. Оптимизация использования капитала, повышение эффективности использования капитала с помощью таких средств, как леверинг, рентабельность

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers Stochastic Cyber Cycle Strategy",overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, commission_type = strategy.commission.percent, commission_value = 0.1)
src = input(hl2, title = "Source") 
alpha = input(.07, title = "Alpha")
lag = input(9, title = "Lag")
smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6
len = input(8, title = "Stochastic len")
cycle = na
if na(cycle[7])
    cycle := (src - 2 * src[1] + src[2]) / 4
else
    cycle := (1 - .5 * alpha) * (1 - .5 * alpha) * (smooth - 2 * smooth[1] + smooth[2]) + 2 * (1 - alpha) * cycle[1] - (1 - alpha) * (1 - alpha) * cycle[2]

value1 = stoch(cycle, cycle, cycle, len) / 100
value2 = 2 * ((4 * value1 + 3 * value1[1] + 2 * value1[2] + value1[3]) / 10 - 0.5)

signal = value2
oppositeTrade = input(true)
barsSinceEntry = 0
barsSinceEntry := nz(barsSinceEntry[1]) + 1
if strategy.position_size == 0
    barsSinceEntry := 0
if (crossover(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossunder(signal, signal[1]))
    strategy.entry("Long", strategy.long)
    barsSinceEntry := 0
if (crossunder(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossover(signal, signal[1]))
    strategy.entry("Short", strategy.short)
    barsSinceEntry := 0
if strategy.openprofit < 0 and barsSinceEntry > 8
    strategy.close_all()
    barsSinceEntry := 0
    
    
plot(0, title="ZeroLine", color=gray) 
plotSrc = signal
cyclePlot = plot(plotSrc, title = "CyberCycle", color = blue)
triggerPlot = plot(plotSrc[1], title = "Trigger", color = green)
fill(cyclePlot, triggerPlot, color = plotSrc < plotSrc[1] ? red : lime, transp = 50)