Торговые стратегии, сочетающие многопериодный технический анализ с рыночными настроениями

SMA MACD RSI
Дата создания: 2024-11-12 15:52:16 Последнее изменение: 2024-11-12 15:52:16
Копировать: 1 Количество просмотров: 479
1
Подписаться
1617
Подписчики

Торговые стратегии, сочетающие многопериодный технический анализ с рыночными настроениями

Обзор

Стратегия представляет собой комплексную торговую систему, которая объединяет в себе несколько технических показателей и рыночные настроения. В основе стратегии используются перекрестные сигналы краткосрочных и долгосрочных движущихся средних (SMA), а также MACD-индикатор для подтверждения направления тенденции. Кроме того, стратегия также включает в себя индикатор рыночных настроений RSI, а также систему распознавания графических форм, включая распознавание форм двойного верха / двойного дна и верха.

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

Стратегия основана на нескольких ключевых компонентах:

  1. Многоциклическая система скользящих средних: для определения трендов используются 10-циклические и 30-циклические SMA
  2. Индикатор MACD: использует стандартные параметры ((12,26,9)) для установки тренда
  3. Наблюдение за настроениями рынка: использование RSI для определения перекупа
  4. Графическое распознавание форм: система автоматического распознавания форм с двойной вершиной/двойной основой и вершиной головы и плеча
  5. Фильтрация по времени: возможности, ориентированные на конкретные торговые периоды
  6. Идентификация точек сопротивления: используется 20-циклическая ретроспективность для определения основных точек сопротивления

Требования к покупке: находиться в целевом торговом периоде, носить долгосрочный SMA на краткосрочном SMA, и индикатор MACD показывает многоголовый сигнал. Условия продажи должны быть выполнены: цена достигла основного уровня сопротивления, и индикатор MACD показывает пустой сигнал.

Стратегические преимущества

  1. Многомерное подтверждение сигналов: в сочетании с техническими показателями и графическими формами, повышает надежность торговых сигналов
  2. Управление рисками: ранний выход на основе RSI
  3. Интеграция настроений: используйте RSI, чтобы оценить настроения рынка и избежать чрезмерного отслеживания падения
  4. Автоматизированное распознавание форм: снижение отклонений в субъективных суждениях
  5. Временная фильтрация: фокусировка на периоды наибольшей активности рынка, повышение эффективности торговли

Стратегический риск

  1. Чувствительность параметров: параметры для нескольких технических показателей могут повлиять на эффективность стратегии
  2. Риск отставания: движущиеся средние и MACD имеют определенную отсталость
  3. Достоверность формы: автоматическая система распознавания может ошибиться
  4. Зависимость от рыночной конъюнктуры: возможные часто возникающие ложные сигналы в условиях колебаний рынка
  5. Временная ограниченность: возможности, которые могут быть упущены при торговле только в определенное время

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

  1. Самостоятельное адаптация параметров: внедрение механизма самостоятельной адаптации параметров, автоматически корректирующего параметры показателя в соответствии с волатильностью рынка
  2. Сигнальная система весов: создание системы весов для сигналов различных показателей, повышение точности принятия решений
  3. Оптимизация сдерживания убытков: увеличение динамического механизма сдерживания убытков, повышение способности к контролю риска
  4. Улучшение распознавания форм: внедрение алгоритмов машинного обучения для повышения точности распознавания форм графиков
  5. Расширение циклов обратной проверки: проводится обратная проверка в разных рыночных циклах для проверки стабильности стратегии

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("XAUUSD SMA with MACD & Market Sentiment + Chart Patterns", overlay=true)

// Input parameters for moving averages
shortSMA_length = input.int(10, title="Short SMA Length", minval=1)
longSMA_length = input.int(30, title="Long SMA Length", minval=1)

// MACD settings
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)

// Lookback period for identifying major resistance (swing highs)
resistance_lookback = input.int(20, title="Resistance Lookback Period", tooltip="Lookback period for identifying major resistance")

// Calculate significant resistance (local swing highs over the lookback period)
major_resistance = ta.highest(close, resistance_lookback)

// Calculate SMAs
shortSMA = ta.sma(close, shortSMA_length)
longSMA = ta.sma(close, longSMA_length)

// RSI for market sentiment
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)
rsi = ta.rsi(close, rsiLength)

// Time filtering: only trade during New York session (12:00 PM - 9:00 PM UTC)
isNewYorkSession = true

// Define buy condition based on SMA, MACD, and New York session
buyCondition = isNewYorkSession and ta.crossover(shortSMA, longSMA) and macdLine > signalLine

// Define sell condition: only sell if price is at or above the identified major resistance during New York session
sellCondition = isNewYorkSession and close >= major_resistance and macdLine < signalLine

// Define sentiment-based exit conditions
closeEarlyCondition = strategy.position_size < 0 and rsi > rsiOverbought  // Close losing trade early if RSI is overbought
holdWinningCondition = strategy.position_size > 0 and rsi < rsiOversold   // Hold winning trade if RSI is oversold

// ------ Chart Patterns ------ //

// Double Top/Bottom Pattern Detection
doubleTop = ta.highest(close, 50) == close[25] and ta.highest(close, 50) == close[0] // Approximate double top: two peaks
doubleBottom = ta.lowest(close, 50) == close[25] and ta.lowest(close, 50) == close[0] // Approximate double bottom: two troughs

// Head and Shoulders Pattern Detection
shoulder1 = ta.highest(close, 20)[40]
head = ta.highest(close, 20)[20]
shoulder2 = ta.highest(close, 20)[0]
isHeadAndShoulders = shoulder1 < head and shoulder2 < head and shoulder1 == shoulder2

// Pattern-based signals
patternBuyCondition = isNewYorkSession and doubleBottom and rsi < rsiOversold  // Buy at double bottom in oversold conditions
patternSellCondition = isNewYorkSession and (doubleTop or isHeadAndShoulders) and rsi > rsiOverbought // Sell at double top or head & shoulders in overbought conditions

// Execute strategy: Enter long position when buy conditions are met
if (buyCondition or patternBuyCondition)
    strategy.entry("Buy", strategy.long)

// Close the position when the sell condition is met (price at resistance or pattern sell)
if (sellCondition or patternSellCondition and not holdWinningCondition)
    strategy.close("Buy")

// Close losing trades early if sentiment is against us
if (closeEarlyCondition)
    strategy.close("Buy")

// Visual cues for buy and sell signals
plotshape(series=buyCondition or patternBuyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellCondition or patternSellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// ------ Alerts for Patterns ------ //

// Add alert for pattern-based buy condition
alertcondition(patternBuyCondition, title="Pattern Buy Signal Activated", message="Double Bottom or Pattern Buy signal activated: Conditions met.")

// Add alert for pattern-based sell condition
alertcondition(patternSellCondition, title="Pattern Sell Signal Activated", message="Double Top or Head & Shoulders detected. Sell signal triggered.")

// Existing alerts for SMA/MACD-based conditions
alertcondition(buyCondition, title="Buy Signal Activated", message="Buy signal activated: Short SMA has crossed above Long SMA and MACD is bullish.")
alertcondition(sellCondition, title="Sell at Major Resistance", message="Sell triggered at major resistance level.")
alertcondition(closeEarlyCondition, title="Close Losing Trade Early", message="Sentiment is against your position, close trade.")
alertcondition(holdWinningCondition, title="Hold Winning Trade", message="RSI indicates oversold conditions, holding winning trade.")