Стратегия генерирует торговые сигналы путем вычисления двух скользящих средних различных периодов и вычисления их точек пересечения. Она становится длинной, когда краткосрочная скользящая средняя пересекает длинную скользящую среднюю, и становится короткой, когда краткосрочная скользящая средняя пересекает длинную скользящую среднюю.
Стратегия основана на преимуществах скользящих средних - они устраняют случайность в последовательности цен и извлекают основную тенденцию.
Когда краткосрочная скользящая средняя пересекает длинную скользящую среднюю, это сигнализирует о том, что цены вступают в восходящий тренд. Когда она пересекает ниже, это сигнализирует о том, что цены входят в нисходящий тренд. Согласно этой логике, мы идем длинным или коротким соответственно.
В частности, стратегия рассчитывает 7-дневную простую скользящую среднюю (SMA) и 20-дневную простую скользящую среднюю. Когда две средние пересекаются, она определяет обратный тренд и запускает торговый сигнал. Чтобы различить между типами кроссоверов, мы определяем краткосрочную линию, находящуюся выше долгосрочной линии, как восходящую ценовую тенденцию, и наоборот для нисходящей тенденции. Когда краткосрочная линия пересекает выше долгосрочной линии, то есть начало восходящей тенденции, вводится длинная позиция. Когда краткосрочная линия пересекается ниже, то есть начало нисходящей тенденции, вводится короткая позиция.
(1) Логика стратегии проста и легко понятна и реализована.
(2) Движущиеся средние в качестве индикаторов отслеживания тренда могут эффективно фильтровать некоторое количество шума в ценах.
(3) Гибкие конфигурации параметров для удовлетворения различных рыночных условий и требований торговли.
(4) Использование двух часто используемых скользящих средних периодов позволяет легко определить четкие торговые сигналы.
(5) Мощная визуализация для интуитивного определения тренда, ключевых уровней и т.д.
(6) Параметры могут быть оптимизированы с помощью обратного тестирования для улучшения доходности стратегии.
(1) Стратегия достаточно чувствительна к колебаниям рынка.
(2) Кроссоверы могут не точно определить уровни обратного тренда и могут вызвать неправильные сигналы.
3) Строгие правила не могут адаптироваться к резким событиям, влияющим на рынки, что может привести к огромным потерям.
(4) Неправильные параметры также могут привести к неточным сигналам и пропущенным сделкам.
Для смягчения этих рисков параметры могут быть соответствующим образом скорректированы. Другие показатели могут быть добавлены для подтверждения. Стратегии стоп-лосса могут контролировать потери. Параметры или стратегии могут быть скорректированы в соответствии с рыночными режимами.
(1) Включение других технических индикаторов для формирования комбинированной стратегии может повысить точность сигнала.
(2) Добавление стратегий стоп-лосса для эффективного контроля потери на одной сделке.
(3) Тестирование и оптимизация периодов скользящих средних. Испытание различных быстрых и медленных комбинаций для поиска лучших параметров. Другие скользящие средние, такие как EMA, WMA, также могут быть проверены.
(4) Настройка параметров на основе различных продуктов и рыночных условий.
Стратегия пересечения скользящих средних - это очень типичная и основная стратегия, следующая за трендом. Вычисляя две скользящие средние различных периодов и наблюдая за их пересечениями, он оценивает изменения в ценовой тенденции. Торговые сигналы генерируются, когда более короткий период пересекает скользящий средний выше или ниже более длинного. Эта простая логика легко реализуется и гибко регулируется, что делает ее вводной количественной стратегией.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Ma stratégie", overlay=true) // Multi-timeframe and price input pricetype = input(close, title="Price Source For The Moving Averages") useCurrentRes = input(true, title="Use Current Timeframe As Resolution?") resCustom = input(title="Use Different Timeframe? Then Uncheck The Box Above", defval="W") res = useCurrentRes ? timeframe.period : resCustom price = request.security(syminfo.tickerid, res, pricetype) // MA period input shortperiod = input(7, title="Short Period Moving Average") longperiod = input(20, title="Long Period Moving Average") short = ema(price, shortperiod) long = ema(price, longperiod) // MA trend direction color shortcolor = short > short[1] ? lime : short < short[1] ? red : blue longcolor = long > long[1] ? lime : long < long[1] ? red : blue // MA output MA1 = plot(short, title="Short Period Moving Average", style=linebr, linewidth=2, color=shortcolor) MA2 = plot(long, title="Long Period Moving Average", style=linebr, linewidth=4, color=longcolor) fill(MA1, MA2, color=silver, transp=50) // MA trend bar color TrendingUp() => short > long TrendingDown() => short < long barcolor(TrendingUp() ? green : TrendingDown() ? red : blue) // MA cross alert MAcrossing = cross(short, long) ? short : na plot(MAcrossing, style = cross, linewidth = 4,color=black) // MA cross background color alert Uptrend() => TrendingUp() and TrendingDown()[1] Downtrend() => TrendingDown() and TrendingUp()[1] bgcolor(Uptrend() ? green : Downtrend() ? red : na,transp=50) // Buy and sell alert Buy = Uptrend() and close > close[1] Sell = Downtrend() and close < close[1] plotshape(Buy, color=black, style=shape.arrowup, text="Buy", location=location.bottom) plotshape(Sell, color=black, style=shape.arrowdown, text="Sell", location=location.top) if (Buy) strategy.entry("My Long Entry Id", strategy.long) if (Sell) strategy.entry("My Short Entry Id", strategy.short)