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


Дата создания: 2023-11-06 09:48:33 Последнее изменение: 2023-11-06 09:48:33
Копировать: 0 Количество просмотров: 661
1
Подписаться
1617
Подписчики

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

Обзор

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

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

Сначала стратегия рассчитывает краткосрочные скользящие средние ((7 дней по умолчанию), среднесрочные скользящие средние ((25 дней по умолчанию) и долгосрочные скользящие средние ((99 дней по умолчанию), а затем генерирует торговый сигнал в соответствии со следующими правилами:

  1. Сигнал покупки возникает, когда краткосрочная скользящая средняя пересекает среднесрочную скользящую среднюю.

  2. Сигнал продажи возникает, когда краткосрочная скользящая средняя пересекает промежуточную скользящую среднюю ниже.

  3. Когда краткосрочная скользящая средняя пересекает долгосрочную скользящую среднюю, генерируется быстрый сигнал покупки.

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

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

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

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

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

  • В этом случае движущаяся средняя будет отставать и может пропустить обратную точку.
  • На рынках с большим количеством участников, ложные сигналы на коротких линиях могут быть слишком большими.
  • На рынке, находящемся в пустом месте, может быть слишком много ложных сигналов, которые проходят через длинные линии под короткими линиями.
  • Быстрые сигналы покупки и продажи могут быть слишком чувствительными, увеличивая количество сделок и комиссионные.

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

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

  • Добавление условий фильтрации, например, появление сигнала только при превышении определенного объема или процента изменения цены.
  • В сочетании с фильтрацией других индикаторов, таких как MACD, KDJ и т. д., избегайте ошибочных сделок при отсутствии четкой тенденции.
  • Оптимизация комбинации циклов движущихся средних, снижение ложных сигналов.
  • Различает многоголовые и пустые рынки, оптимизирует параметры покупки и продажи.
  • Учитывать стоимость сделки, регулировать параметры быстрой сделки, контролировать частоту сделки.

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

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dadashkadir

//@version=4
strategy("Üç Hareketli Ortalama Str.", overlay=true, initial_capital=10000, commission_value=0.047, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, calc_on_order_fills=true)

kisa = input(title = "Kısa Vade - Gün", defval = 7,  minval = 1)
orta = input(title = "Orta Vade - Gün", defval = 25, minval = 1)
uzun = input(title = "Uzun Vade - Gün", defval = 99, minval = 1)

sma7  = sma(close, kisa)
sma25 = sma(close, orta)
sma99  = sma(close, uzun)

alTrend  = plot (sma7, color=#2323F1, linewidth=2, title="Har.Ort. Kısa Vade", transp=0)
satTrend = plot (sma25, color=#FF0C00, linewidth=3, title="Har.Ort. Orta Vade", transp=0)
ort99    = plot (sma99, color=#DFB001, linewidth=3, title="Har.Ort. Uzun Vade", transp=0)

zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")

al  = crossover (sma7, sma25) and zamanaralik <= year
sat = crossover (sma25, sma7) and zamanaralik <= year

hizlial = crossover (sma7, sma99) and zamanaralik <= year
hizlisat = crossover (sma99, sma7) and zamanaralik <= year

alkosul  = sma7 >= sma25
satkosul = sma25 >= sma7

hizlialkosul  = sma7 >= sma99
hizlisatkosul = sma99 >= sma7

plotshape(al,  title = "Buy",  text = 'Al',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Sell", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

plotshape(hizlial,  title = "Hızlı Al",  text = 'Hızlı Al',  style = shape.labelup,   location = location.belowbar, color= color.blue, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(hizlisat, title = "Hızlı Sat", text = 'Hızlı Sat', style = shape.labeldown, location = location.abovebar, color= #6106D6 , textcolor = color.white, transp = 0, size = size.tiny)

fill (alTrend, satTrend, color = sma7 >= sma25? #4DFF00 : #FF0C00, transp=80, title="Al-Sat Aralığı")
//fill (ort99, satTrend, color = sma7 >= sma25? #6106D6 : color.blue, transp=80, title="Hızlı Al-Sat Aralığı")

if (al)
    strategy.entry("LONG", strategy.long)
if (sat)
    strategy.entry("SHORT", strategy.short)
//if (hizlial)
//    strategy.entry("My Short Entry Id", strategy.long)
//if (hizlisat)
//    strategy.entry("My Short Entry Id", strategy.short)