Количественная стратегия двойного пути, превосходящая рыночный индекс


Дата создания: 2023-12-12 12:13:25 Последнее изменение: 2023-12-12 12:13:25
Копировать: 0 Количество просмотров: 854
1
Подписаться
1237
Подписчики

Количественная стратегия двойного пути, превосходящая рыночный индекс

Обзор

Эта стратегия основана на использовании EMA и MACD для определения изменений в типографии рынка. Основная идея заключается в том, чтобы делать больше, когда краткосрочная линия EMA прорывает длинную линию EMA снизу, а MACD одновременно пересекает 0-угол вверх. Когда краткосрочная линия EMA пересекает длинную EMA сверху, а MACD одновременно пересекает 0-угол вниз, делайте пробел.

Принципы

Стратегия включает в себя комбинированные показатели движущихся средних и MACD.

Во-первых, он использует два индикатора EMA с различными длинами циклов, один из которых представляет собой 25-циклическую линию EMA, а другой - 50-циклическую линию EMA. 25-циклическая линия EMA может отражать краткосрочную тенденцию, а 50-циклическая линия EMA может отражать среднесрочную тенденцию.

Во-вторых, стратегия одновременно сочетает MACD-индикаторный сигнал. MACD-индикатор включает в себя DIF-линию и DEA-линию, представляющие собой разницу между краткосрочными и долгосрочными скользящими средними значениями индекса, рассчитанную с помощью двойной EMA.

Комбинируя эти два показателя, при появлении 25-й EMA золотой форки 50-й EMA, одновременно с прохождением MACD по линии DIF по линии DEA, генерируется сигнал покупать, делать больше; при появлении 25-й EMA мертвой форки 50-й EMA, одновременно с прохождением MACD по линии DIF по линии DEA, генерируется сигнал продавать, делать пустое.

Анализ преимуществ

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

  1. Использование двойной EMA-одинаковой линии позволяет избежать явления whipsaws и ложных прорывов, создавая более надежный торговый сигнал.

  2. Интеграция показателей MACD позволяет дополнительно проверять торговые сигналы, избежать риска ложных сигналов EMA и повысить эффективность стратегии на поле боя.

  3. Используя 25 и 50 дн. в качестве быстрых и медленных линий, параметры выбора более точны, и можно улавливать заметные изменения тенденции в средних и коротких линиях.

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

  5. Логика стратегии проста и понятна, легко понятна и реализуема, и подходит для использования новичками в количественном анализе.

  6. Оптимизируйте параметры с осторожностью, чтобы стратегия лучше адаптировалась к различным видам и условиям.

Анализ рисков

Однако есть и другие риски, о которых следует помнить:

  1. В случае экстремальных ситуаций, по-прежнему существует вероятность появления фалшивого сигнала в средней линии EMA.

  2. Параметры индикатора MACD должны постоянно оптимизироваться и корректироваться, иначе могут возникнуть ошибочные сигналы или задержка сигнала.

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

  4. Необходимо следить за изменениями в деловой и политической среде, чтобы избежать системных рисков, которые приводят к большим убыткам.

  5. Необходимо контролировать размеры позиций и уровень леверинга, чтобы предотвратить односторонние взрывы на рынке.

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

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

  1. Для более точного и эффективного тестирования в реальном бою используются такие комбинации параметров, как 20-дневная и 60-дневная средняя линия EMA в качестве торговой линии, DIF - 10-дневная EMA и 20-дневная разница EMA и т. д.

  2. Увеличение подтверждения показателей объема поставок, чтобы избежать ложных прорывов в низких объемах.

  3. В сочетании с показателями волатильности, такими как ATR, определяется более научный способ остановки убытков.

  4. Используйте алгоритмы машинного обучения для автоматической оптимизации параметров, чтобы динамично адаптировать параметры стратегии к изменению рыночной среды.

  5. Добавление модуля управления позициями, позволяющего изменять размер позиции в зависимости от эффективности торговли и динамики показателей.

  6. Сигналы стратегии могут быть отображены на графике с более длительным периодом, что помогает принятию решений в более длинном направлении.

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

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

Исходный код стратегии
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="EMA+MACD", shorttitle="EMA+MACD", overlay=true)
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)


signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Oscillator MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"])
sma_signal = input(title="Signal Line MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"])

fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
len1 = input(title="Len Ema 1 ",type=input.integer,defval=25)
len2 = input(title="Len Ema 2 ",type=input.integer,defval=50)
ema1 = ema(src,len1)
ema2 = ema(src,len2)

bull = crossover(ema1,ema2) and macd > 0
bear = crossover(ema2,ema1) and macd < 0
l1 = bull ? label.new(x=bar_index,y=low,yloc=yloc.belowbar,text="BUY",color=color.green,textcolor=color.white,style=label.style_triangleup) : na
l2 = bear ? label.new(x=bar_index,y=high,yloc=yloc.abovebar,text="SELL",color=color.red,textcolor=color.white,style=label.style_triangledown) : na


strategy.entry("LONG",strategy.long,when=bull)
strategy.entry("SHORT",strategy.short,when=bear)