
Трендовые системы с перекрестным подтверждением многократных средних линий - это количественная торговая стратегия, основанная на комбинации движущихся средних (EMA) многопериодных индексов, в сочетании с относительно сильными показателями (RSI), движущимися средними трендовыми различиями (MACD) и средним реальным диапазоном (ATR) в качестве вспомогательных показателей. В основе этой стратегии лежит определение направления рыночной тенденции путем сравнения отношений средних линий в разные периоды времени, открытие позиций при определении тенденции и выравнивание позиций при ослаблении или обратном повороте тенденции.
Ключевым принципом стратегии является использование индикаторов с перемещающимися средними ((EMA) с несколькими различными циклами для определения рыночных тенденций и захвата торговых возможностей. В стратегии используются пять ЭМА: мгновенная средняя линия ((14 циклов), средняя средняя линия ((25 циклов), краткосрочная средняя линия ((50 циклов), среднесрочная средняя линия ((100 циклов) и долгосрочная средняя линия ((200 циклов)).
Основная логика этой стратегии состоит в следующем:
Механизм определения тенденций:
Сигнал входа:
Выходный сигнал:
Контроль риска:
Отслеживание местоположения:
Подтверждение множественной средней: Совместное подтверждение тенденции с помощью нескольких средних линий с разными циклами, уменьшение ложных прорывов и ошибочных сигналов, повышение качества сигнала.
Точная идентификация тенденций: По сравнению с однолинейной системой, многолинейная система позволяет более точно идентифицировать переломные моменты рыночных тенденций, особенно при изменении мгновенного положения средней линии относительно других средних линий.
Гибкое управление рисками: использование различных критериев входа и выхода для многоголовых и белых голов, что отражает дифференцированную обработку риска в разных направлениях рынка, а также дополнительную фильтрацию волатильности для белых голов.
Визуальные торговые сигналыСтратегия: с помощью графических знаков, четко отображающих покупку, продажу и закрытие позиций, для анализа обратной связи и мониторинга в режиме реального времени.
Визуализация фонового тренда: использование фонового цвета для различения тенденций роста и падения, визуальное отображение рыночной обстановки, что позволяет трейдерам быстро оценивать текущее состояние рынка.
Потенциальная масштабируемость: уже интегрированы расчеты по RSI и MACD, хотя в настоящее время они не используются в логике торговли, но обеспечивают основу для будущей оптимизации стратегии.
Настройка параметров: Все ключевые параметры могут быть скорректированы с помощью входного контроля, включая средний цикл, RSI, MACD и ATR, что позволяет оптимизировать их в зависимости от различных рыночных условий и типов торгов.
Среднелинейная отсталость: Все системы, основанные на равновесии, имеют определенную отсталость, и в условиях шокирующих рынков или быстрого обратного движения может возникнуть более сильный откат. Решение - это корректировка цикла равновесия или добавление дополнительных условий фильтрации шокирующих рынков.
Риски чрезмерной торговли: В волатильных рынках мгновенная средняя линия может часто пересекать краткосрочную среднюю линию, что приводит к чрезмерной торговле. Можно уменьшить количество недействительных сделок, увеличив минимальный срок хранения или добавив дополнительные фильтры.
Проблемы с адаптацией к различным рынкам: Среднелинейная стратегия с фиксированными параметрами отличается в различных рыночных условиях и торговых типах. Параметры следует оптимизировать для конкретных рынков или рассмотреть возможность использования адаптивных параметров.
Конфликт сигналов: Хотя в коде рассчитываются индикаторы RSI и MACD, они не интегрированы эффективно в логику торговли, что может привести к потенциальным конфликтам сигналов или упущенным возможностям оптимизации.
МногоглазыеВ текущей стратегии применяются различные критерии для многоголовых и пустых, многоголовые не имеют фильтрации на волатильность, а пустые должны удовлетворять минимальным условиям ATR, что может сделать стратегию более радикальной в растущем рынке, увеличивая рисковые пробелы.
Механизм фиксированного выходаСтратегия использует фиксированный пересечение технических показателей в качестве отправной точки, отсутствие механизма остановки и убытка, который может быть скорректирован в зависимости от динамики рынка, может не быть эффективным для блокирования прибыли или контроля риска.
Параметр ЧувствительностьСтратегия зависит от нескольких среднелинейных параметров цикла, незначительные изменения которых могут привести к значительным различиям в результатах торговли, увеличивая риск чрезмерного соответствия.
Интегрированные рассчитанные показателиСтратегия рассчитывает показатели RSI и MACD, но не использует их в полной мере. RSI может использоваться для фильтрации экстремальных рыночных условий, MACD - для подтверждения направления тенденции и улучшения качества сигнала. Например, можно требовать, чтобы RSI не находился в зоне перекупа при многооборотном входе, а RSI не находился в зоне перепродажи при пустом входе.
Динамическая система остановкиВнедрение динамического механизма остановки, основанного на ATR, который автоматически корректирует остановку в зависимости от волатильности рынка, повышая способность к управлению рисками. Это может быть достигнуто путем расчета входных точек плюс минус определенное количество ATR.
Классификация состояния рынкаПрименение различных торговых стратегий в различных рыночных состояниях. Например, можно оценить силу рыночных тенденций с помощью склонности долгосрочной средней линии или индикатора ADX.
Анализ многовременных рамокИнтеграция информации о тенденциях более высоких временных циклов, торги только в тех случаях, когда тенденции более высоких временных циклов совпадают, повышает шансы на победу.
Оптимизация среднелинейных параметров: текущая стратегия использует фиксированный среднелинейный цикл ((14, 25, 50, 100, 200), который может быть использован для поиска оптимальных параметров, наиболее подходящих для конкретного рынка, путем повторного измерения различных комбинаций параметров.
Добавить подтверждение транзакцииКомбинирование объемных показателей для подтверждения силы тренда, торговля только в том случае, если объем поддерживает тренд, уменьшение убытков от ложных прорывов.
Изменение условий доступа: оптимизировать логику входа для многоголовых и пустых голов, чтобы сделать их более симметричными, или сделать более тонкие коррективы для различных характеристик направления рынка. Например, можно рассмотреть возможность увеличения фильтрации волатильности при многоголовом входе или корректировать строгость признания тенденций.
Добавление фильтра времениВключение фильтра по времени торговли, чтобы избежать периодов повышенной волатильности или низкой ликвидности рынка, таких как публикация важных данных или закрытие рынка.
Система торговли с перекрестным подтверждением множественных средних линий - это количественная торговая стратегия, основанная на техническом анализе, которая определяет рыночные тенденции с помощью комбинации средних линий в течение нескольких различных периодов и открывает позиции при четком тренде и закрывает позиции при ослаблении тренда. Основное преимущество стратегии заключается в использовании перекрестного подтверждения множественных средних линий, уменьшении ошибочных сигналов и повышении качества торговли.
Эта стратегия хорошо работает на рынках с ясным трендом, но может быть подвержена риску переторгирования на рынках со сдвигом. Стабильность и адаптивность стратегии могут быть дополнительно повышены путем интеграции рассчитанных RSI и MACD-индикаторов, внедрения динамического стоп-механизма, оптимизации комбинации среднелинейных параметров и увеличения классификации состояния рынка.
Для практического применения рекомендуется провести полное отражение на различных рыночных условиях и типах сделок, скорректировать параметры в соответствии с конкретными особенностями рынка и контролировать риски отдельных сделок в сочетании с стратегией управления капиталом. Кроме того, можно рассмотреть возможность использования этой стратегии в качестве части портфеля в сочетании с другими взаимодополняющими стратегиями для дифференциации рисков сделок и повышения стабильности всего портфеля.
/*backtest
start: 2025-02-23 00:00:00
end: 2025-03-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("etude9", shorttitle="etude 9", overlay=true)
//on tente de comlbiner avec le RSi un stratégie pas si mauvaise sur les longs
// un d7 r rsi qui donne des indiciataions pas mal pour les short pour les long pas très concluant
// === Paramètres d'entrée ===
// Source de prix
// et merde rendement sur long est plus efficace sans condition sur ATR !!
// par contre j'ai l'imression que le rsi ça va être bien pour les shorts
// bon avec le RSi ça donne rien, et avec le macd, ç ce stade c'est foireux mmm
pricetype = input(close, title="Source de prix pour les moyennes mobiles")
// Périodes des moyennes mobiles
instant = input(14, title="Période de la moyenne instantanée (10)")
interm = input(25, title="Perdiode intermediaire (25)")
shortperiod = input(50, title="Période de la moyenne mobile courte (20)")
mediumperiod = input(100, title="Période de la moyenne mobile moyenne (50)")
longperiod = input(200, title="Période de la moyenne mobile longue (100)")
// Paramètres du RSI
rsi_length = input.int(14, title="Période RSI")
rsi_overbought = input.int(78, title="Niveau de surachat (RSI)")
rsi_oversold = input.int(30, title="Niveau de survente (RSI)")
// Paramètres pour le MACD
fast_length = input.int(12, title="Longueur Rapide MACD")
slow_length = input.int(26, title="Longueur Lente MACD")
signal_length = input.int(9, title="Longueur du Signal MACD")
// Paramètres de l'ATR
atr_length = input.int(14, title="Période ATR")
atr_multiplier = input.float(1.5, title="Multiplicateur ATR pour le Stop-Loss")
// Calcul de l'ATR
atr = ta.atr(atr_length)
// === Calcul des moyennes mobiles (EMA uniquement) ===
instant_ma = ta.ema(pricetype, instant) // Moyenne mobile instantanée
short_ma = ta.ema(pricetype, shortperiod) // Moyenne mobile courte (20)
medium_ma = ta.ema(pricetype, mediumperiod) // Moyenne mobile moyenne (50)
long_ma = ta.ema(pricetype, longperiod) // Moyenne mobile longue (100)
interm_ma = ta.ema(pricetype, interm)
// Calcul du RSI
rsi = ta.rsi(close, rsi_length)
// Calcul du MACD
[macd_line, signal_line, hist_line] = ta.macd(close, fast_length, slow_length, signal_length)
// Stocker les résultats de crossover et crossunder dans des variables globales
is_crossover = ta.crossover(macd_line, signal_line)
is_crossunder = ta.crossunder(macd_line, signal_line)
// Filtre ATR : on ne trade que si la volatilité est suffisante
min_atr = atr > ta.sma(atr, atr_length) // ATR supérieur à sa moyenne
// === Conditions de tendance ===
trending_up = instant_ma > short_ma and instant_ma > medium_ma and instant_ma > long_ma and short_ma > medium_ma // Tendance haussière
trending_down = instant_ma< short_ma and instant_ma<medium_ma and instant_ma<long_ma and short_ma<long_ma // Tendance baissière
// Filtre RSI
rsi_filter_buy = rsi < rsi_overbought // RSI n'est pas en surachat pour un achat
rsi_filter_sell = rsi > rsi_oversold // RSI n'est pas en survente pour une vente
// === Gestion des positions ===
var bool in_position = false // Variable pour suivre si une position est ouverte
var bool is_long = false // Variable pour suivre si la position est longue ou courte
// === Signaux d'ouverture et de fermeture ===
bool buy_signal = false // Signal d'ouverture d'une position longue
bool close_signal = false // Signal de fermeture d'une position longue
bool sell_signal = false // Signal d'ouverture d'une position courte
bool close_short_signal = false // Signal de fermeture d'une position courte
// Ouvrir une position longue
if (trending_up and not in_position)
strategy.entry("Long", strategy.long)
in_position := true
is_long := true
buy_signal := true // Signal d'ouverture
else
buy_signal := false
// Fermer la position longue si instant_ma < medium_ma
if (in_position and is_long and instant_ma < short_ma)
strategy.close("Long")
in_position := false
is_long := false
close_signal := true // Signal de fermeture
else
close_signal := false
// Ouvrir une position courte
if (trending_down and not in_position and min_atr)
strategy.entry("Short", strategy.short)
in_position := true
is_long := false
sell_signal := true // Signal d'ouverture
else
sell_signal := false
// Fermer la position courte si instant_ma > medium_ma
if (in_position and not is_long and instant_ma > medium_ma)
strategy.close("Short")
in_position := false
close_short_signal := true // Signal de fermeture
else
close_short_signal := false
// === Affichage des signaux sur le graphique ===
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", size=size.small)
plotshape(series=close_signal, title="Close Long Signal", location=location.abovebar, color=color.orange, style=shape.labeldown, text="Close Long", size=size.small)
plotshape(series=close_short_signal, title="Close Short Signal", location=location.belowbar, color=color.blue, style=shape.labelup, text="Close Short", size=size.small)
// === Affichage des moyennes mobiles sur le graphique ===
plot(short_ma, color=color.blue, title="Moyenne mobile courte (20)", linewidth=2)
plot(medium_ma, color=color.orange, title="Moyenne mobile moyenne (50)", linewidth=2)
plot(long_ma, color=color.red, title="Moyenne mobile longue (100)", linewidth=2)
plot(instant_ma, color=color.rgb(43, 14, 111), title="Moyenne mobile instantanée (10)", linewidth=2)
plot(interm_ma, color=color.rgb(26, 192, 34), title="Moyenne mobile instantanée (10)", linewidth=2)
// Coloration de fond pour les tendances
bgcolor(color=trending_up ? color.new(color.green, 90) : trending_down ? color.new(color.red, 90) : na, title="Coloration de fond")