Стратегия кроссовера скользящей средней является торговой стратегией, основанной на скользящих средних. Она использует кроссовер быстрой скользящей средней и медленной скользящей средней в качестве сигналов покупки и продажи. Когда быстрый MA пересекает над медленным MA снизу, генерируется сигнал покупки. Когда быстрый MA пересекает ниже медленного MA сверху, генерируется сигнал продажи.
Стратегия использует функцию sma для расчета простых скользящих средних за определенный период, таких как быстрый MA и медленный MA. Период быстрого MA по умолчанию составляет 18 дней, который можно корректировать с помощью параметров.
Когда быстрый MA пересекается над медленным MA снизу, функция crossunder обнаруживает перекрестный сигнал и генерирует сигнал покупки. Когда быстрый MA пересекается ниже медленного MA сверху, функция crossover обнаруживает перекрестный сигнал и генерирует сигнал продажи.
Стратегия реализует автоматизированную торговлю через сигналы отслеживания и сигналы выхода. Длинный вход запускается, когда быстрый 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)