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

Автор:Чао Чжан, Дата: 2024-02-04 10:31:45
Тэги:

img

Обзор

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

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

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

Ключ заключается в выборе быстрых и медленных скользящих средних. Эта стратегия использует экспоненциальные скользящие средние периода 50&100 в качестве быстрой и медленной линии соответственно. Эффект стратегии может быть оптимизирован путем корректировки параметров MA.

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

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

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

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

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

  • Неправильный выбор параметров MA приводит к ложным сигналам.Слишком короткие или слишком длинные длины MA будут неправильно оценивать рынок, поэтому требуется правильная корректировка в соответствии с характеристиками инструмента.

  • Слишком длинный или слишком короткий период удержания не может максимизировать прибыль или должным образом контролировать риск.

  • Необоснованное установление позиции стоп-лосса приведет к слишком широкому или слишком узкому стоп-лоссу, поэтому должен быть определен соответствующий стоп-лосс на основе волатильности инструмента.

Руководство по оптимизации

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

  • Проверьте больше комбинаций параметров MA для поиска оптимальных параметров

  • Определить динамическую позицию стоп-лосса на основе колебаний цен или ATR за последние N дней

  • Комбинируйте больше индикаторов, таких как MACD, KD и т. д., чтобы определить сроки входа

  • Добавление правил фильтрации трендов для предотвращения рыночного диапазона

  • Рассмотреть возможность применения стратегии к большему количеству инструментов или улучшить ее до межинструментальной стратегии

Резюме

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


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ashishchauhan
strategy(title="MA CO Strategy Test", overlay=true, pyramiding=0, initial_capital=100000)

fastEMALen = input(title="Fast EMA Length", type=input.integer, defval=50)
slowEMALen = input(title="Slow EMA Length", type=input.integer, defval=100)

fastEMA = ema(close, fastEMALen)
slowEMA = ema(close, slowEMALen)

enterLong = crossover(fastEMA, slowEMA)
enterShort = crossunder(fastEMA, slowEMA)

longStop = 0.0
longStop := enterShort ? close : longStop[1]

shortStop = 0.0
shortStop := enterLong ? close : shortStop[1]

plot(series=fastEMA, color=color.orange, title="Fast EMA")
plot(series=slowEMA, color=color.teal, linewidth=3, title="Slow EMA")

if enterLong
    strategy.entry(id="GoLong", long=true)

if enterShort
    strategy.entry(id="GoShort", long=false)

if strategy.position_size > 0
    strategy.exit(id="ExLong", from_entry="GoLong", stop=longStop)

if strategy.position_size < 0
    strategy.exit(id="ExShort", from_entry="GoShort", stop=shortStop)

strategy.close_all()


Больше