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


Дата создания: 2023-10-20 17:02:52 Последнее изменение: 2023-10-20 17:03:32
Копировать: 2 Количество просмотров: 614
1
Подписаться
1617
Подписчики

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

Обзор

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

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

Эта стратегия основана на следующих принципах:

  1. Используйте простую скользящую среднюю с длительностью 200 дней для определения направления ценовых тенденций.
  2. Когда цена закрытия близко к прохождению медленной МА, считается, что рынок начинает расти, поэтому делать больше.
  3. Когда цена закрытия ближе к медленной МА, считается, что рынок начинает падать, поэтому делается пустота.
  4. Записывается время последней переработки и доработки с помощью переменных last_long и last_short.
  5. Используйте функцию кроссовера, чтобы определить, когда last_long и last_short пересекаются, чтобы создать торговый сигнал.
  6. В течение отслеживаемого периода времени при получении многосигнала long_signal делается много, при получении пустого сигнала short_signal делается пустое.

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

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

Эта стратегия имеет следующие преимущества:

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

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

Однако эта стратегия также несет в себе некоторые риски:

  1. Долгопериодическая средняя линия не чувствительна к краткосрочным корректировкам и может упустить возможность короткой линии.
  2. Большие циклические тенденции слабо идентифицируются и могут быть легко обращены вспять.
  3. “Я не могу сказать, что это было бы хорошо, если бы не было такого, но я не могу сказать, что это было бы плохо”.
  4. Параметры фиксированы, а адаптация к различным видам и рыночным условиям слаба.
  5. При тестировании стратегии только на основе исторических данных может возникнуть риск перенастройки.

В зависимости от риска, можно оптимизировать и улучшать в следующих аспектах:

  1. В сочетании с краткосрочной средней линией, с учетом долгосрочных тенденций.
  2. Увеличение количественных и ценовых условий портфеля, чтобы избежать ложных прорывов
  3. Добавление фильтров на трендовые индикаторы, повышает способность распознавать перемены тренда.
  4. Добавление механизмов динамического остановки убытков для контроля одиночных убытков
  5. Использование методов оптимизации параметров для повышения адаптивности параметров.
  6. Проведение репликационных тестов в различных рыночных условиях для проверки устойчивости стратегии.

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

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

  1. Оптимизировать циклические параметры для скользящих средних, искать оптимальные комбинации параметров. Можно использовать такие методы оптимизации параметров, как Walk Forward Analysis.

  2. Добавление краткосрочных скользящих средних, формирование многомерной стратегии, одновременно с отслеживанием длительных краткосрочных тенденций.

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

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

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

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

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

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

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

//@version=4
strategy("MA X 200 BF", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2012, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

///////////// MA 200 /////////////
slowMA = sma(close, input(200))

/////////////// Strategy ///////////////
long = close > slowMA
short = close < slowMA

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long Entry",  strategy.long, when=long_signal)
    strategy.entry("Short Entry", strategy.short, when=short_signal)
    strategy.exit("Long Ex", "Long Entry")
    strategy.exit("Short Ex", "Short Entry")

/////////////// Plotting /////////////// 
plot(slowMA, color = long ? color.lime : color.red, linewidth=2)
bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)