Стратегия двойного скользящего среднего кроссовера скальпинга

Автор:Чао Чжан, Дата: 2023-10-30 11:19:48
Тэги:

img

Обзор

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

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

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

Стратегия сначала определяет переменную length для определения периода более длинной линии MA как 50. Затем определяет price как цену закрытия и вычисляет значение MA длины 50 и сохраняет его в переменной ma. Далее определяет bcond для проверки, превышает ли цена значение ma. Если да, bcount увеличивается на 1, в противном случае сброса на 0. Когда bcond запускает confirmBars несколько раз подряд (по умолчанию 2), генерируется сигнал покупки. Сигналы продажи генерируются аналогично, когда цена падает ниже ma.

Для фильтрации некоторых недействительных сигналов добавляются дополнительные фильтры, такие как clc, clc0 и clc1, которые проверяют ценовую зависимость между текущими и предыдущими панелями.

Наконец, существующие позиции закрываются, когда цена пересекает линии MA в обратном направлении.

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

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

Риски

  • Склонны к сбоям на различных рынках, что приводит к дополнительным затратам.
  • Фиксированные параметры, такие как периоды MA, могут не соответствовать всем рыночным условиям.
  • Фиксированная стоп-лосс может выйти рано в сильных движениях тренда за пределами уровня стоп-лосса.

Риски могут быть смягчены с помощью динамических периодов MA, основанных на волатильности, остановках или процентных остановках и т.д.

Усовершенствования

Стратегия может быть улучшена несколькими способами:

  1. Оптимизировать параметры MA на основе волатильности.

  2. Добавьте дополнительные фильтры, такие как увеличение громкости, чтобы улучшить качество сигнала.

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

  4. Комбинируйте с другими индикаторами, такими как MACD, RSI для многоусловной проверки.

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

  6. Используйте машинное обучение для более точной модели генерации сигнала.

Заключение

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


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MovingAvg Cross", overlay=true)
length = input(50)
confirmBars = input(2)
price = close

ma = sma(price, length)

bcond = price > ma

bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0

clc=close[0]>close[1]
clc0=close[0]>open[0]
clc1=close[1]>open[1]

if clc and clc0 and clc1 and (bcount == confirmBars)
    strategy.entry("buy", strategy.long)


scond = price < ma
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0

csc=close[0]<close[1]
csc0=close[0]<open[0]
csc1=close[1]<open[1]

if csc and csc0 and csc1 and (scount == confirmBars)
    strategy.entry("sell", strategy.short)

strategy.close("buy", when=scond)
strategy.close("sell",when=bcond)
    
plot(ma, color=color.red)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Больше