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

Автор:Чао Чжан, Дата: 2023-11-23 13:38:02
Тэги:

img

Обзор

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

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

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

Когда быстрый MA пересекается над медленным MA снизу, функция crossunder обнаруживает перекрестный сигнал и генерирует сигнал покупки. Когда быстрый MA пересекается ниже медленного MA сверху, функция crossover обнаруживает перекрестный сигнал и генерирует сигнал продажи.

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

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

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

Риски и решения

  • Колебания цен могут вызывать множество ложных сигналов и высокую частоту торговли.
  • Оптимизация параметров имеет решающее значение и может значительно повлиять на производительность.
  • Существует риск отсутствия сигналов.Другие индикаторы могут быть объединены для фильтрации или дополнения торговых сигналов.
  • Стоп-лосс может контролировать однократные убытки.

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

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

Заключение

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


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 04:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

MASource   = input(defval = open, title = "MA Source")
MaLength   = input(defval = 18, title = "MA Period", minval = 1)

StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")
stopLoss = input(50, title = "Stop loss percentage(0.1%)") 

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

MA = sma(MASource,MaLength)

plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)

long = crossunder(MA, close)
short = crossover(MA, close)

if (long)
    strategy.entry("LongId", strategy.long, when = long)
    strategy.exit("ExitLong", from_entry = "LongId", when = short)

if (short)
    strategy.entry("ShortId", strategy.short, when = short)
    strategy.exit("ExitShort", from_entry = "ShortId", when = long)

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)


Больше