Стратегия двойной скользящей средней и комбинации MACD является количественной торговой стратегией, которая использует как скользящие средние, так и индикаторы импульса для генерации и проверки торговых сигналов. Объединяя способность скользящих средних следовать за трендом и характеристику импульса MACD, эта стратегия может эффективно отслеживать контур рыночных тенденций посредством строгого установления критериев входа и выхода, избегая при этом риска сужения диапазона прибыли или колебаний рынка, которые могут привести к снижению прибыли или даже потере.
Эта стратегия использует комбинацию 20-периодного простого скользящего среднего (SMA) и 5-периодного экспоненциального скользящего среднего (EMA). 20-периодный SMA может эффективно сглаживать колебания рынка и определять средне- и долгосрочные ценовые тенденции, в то время как 5-периодный EMA присваивает более высокие веса последним ценам и чувствительно реагирует на краткосрочные изменения цен. Сигналы покупки генерируются, когда цена пересекает линию 5-периодного значения выше 20-периодного значения, а сигналы продажи генерируются, когда цена пересекает линию 5-периодного значения ниже 20-периодного значения. Такая комбинация двойных скользящих средних обеспечивает, чтобы торговые сигналы следовали основным тенденциям, улучшая при этом чувствительность и срочность сигналов за счет внедрения краткосрочных скользящих средних.
После создания торговых сигналов, индикатор MACD вводится для проверки тренда. В частности, при запуске сигналов покупки, линия MACD DIFF должна видеть
Наконец, для длинных и коротких позиций устанавливаются разумные уровни стоп-лосса. Длинная линия стоп-лосса устанавливается ниже самой низкой точки с момента входа, в то время как короткая линия стоп-лосса устанавливается выше самой высокой точки с момента входа. Уровни стоп-лосса динамически обновляются с колебаниями цен. Такой метод стоп-лосса максимально блокирует прибыль и предотвращает неприемлемые потери в случае серьезных рыночных переворотов.
Параметры MACD могут быть скорректированы для лучшего сотрудничества. Кроме того, параметры скользящей средней периодичности нуждаются в оптимизации по характеристикам продукта. Наконец, диапазон стоп-лосса может быть разумно ослаблен, чтобы обеспечить полное высвобождение прибыли для основных направленных движений.
Дальнейшие оптимизации этой стратегии могут быть осуществлены в следующих направлениях:
Внедрение адаптивных алгоритмов скользящих средних.
Включить модели машинного обучения. Алгоритмы, такие как глубокое обучение, могут автоматически идентифицировать рыночные характеристики различных продуктов и выводить оптимальные параметры в режиме реального времени.
В дополнение к текущим сигналам могут быть введены другие технические показатели в качестве вспомогательных стандартов оценки, такие как интеграция факторов объема.
Оптимизировать стратегии стоп-лосса. Следует исследовать более интеллектуальные методы стоп-лосса, такие как прорыв стоп-лосса и отслеживание стоп-лосса, чтобы получить большую прибыль при контроле риска.
Стратегия двойной скользящей средней и комбинации MACD всесторонне рассматривает такие аспекты, как тенденция, импульс, контроль рисков за пределами ограничений отдельных технических индикаторов, и может эффективно улучшить стабильность количественной торговли.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Band Strategy with Early Signal (v5)", overlay=true) // Inputs length = 20 mult = 1.5 src = close riskRewardRatio = input(3.0, title="Risk-Reward Ratio") // Calculating Bollinger Bands basis = ta.ema(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plotting Bollinger Bands plot(upper, "Upper Band", color=color.red) plot(lower, "Lower Band", color=color.green) // Tracking Two Candles Ago Crossing Bollinger Bands var float twoCandlesAgoUpperCrossLow = na var float twoCandlesAgoLowerCrossHigh = na if (close[2] > upper[2]) twoCandlesAgoUpperCrossLow := low[2] if (close[2] < lower[2]) twoCandlesAgoLowerCrossHigh := high[2] // Entry Conditions longCondition = (not na(twoCandlesAgoLowerCrossHigh)) and (high > twoCandlesAgoLowerCrossHigh) shortCondition = (not na(twoCandlesAgoUpperCrossLow)) and (low < twoCandlesAgoUpperCrossLow) // Plotting Entry Points plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Strategy Execution if (longCondition) stopLoss = low - (high - low) * 0.05 takeProfit = close + (close - stopLoss) * riskRewardRatio strategy.entry("Buy", strategy.long) strategy.exit("Exit Buy", "Buy", stop=stopLoss, limit=takeProfit) if (shortCondition) stopLoss = high + (high - low) * 0.05 takeProfit = close - (stopLoss - close) * riskRewardRatio strategy.entry("Sell", strategy.short) strategy.exit("Exit Sell", "Sell", stop=stopLoss, limit=takeProfit)