
Стратегия представляет собой систему для отслеживания трендов в сочетании с MACD (движущаяся средняя тенденция) и параллельной SAR (стоп-стоп-реверс). Посредством органического сочетания динамического индикатора и трендового индикатора проводится количественный анализ интенсивности тренда, одновременно идентифицируя направление тенденции на рынке, что позволяет поймать лучшие возможности для торговли. Стратегия использует перекрестки с быстрой и медленной линиями MACD для подтверждения количества движения тренда, а также использует SAR-точки для подтверждения направления тренда и установки движущихся стоп-стопов.
Основная логика стратегии состоит из двух частей:
Правила участия:
Правила игры:
Добавить фильтр рыночной среды: Можно ввести индикаторы волатильности (например, ATR) для оценки состояния рынка, снизить частоту торговли или приостановить торговлю во время низкой волатильности.
Улучшить механизм стоп-лосса: Помимо остановки SAR, можно увеличить комбинированное использование фиксированной пропорциональной остановки и мобильной остановки, повышая стабильность управления рисками.
Выбор параметров оптимизации: Параметры MACD и SAR могут быть автоматически оптимизированы для различных рыночных циклов с помощью методов машинного обучения.
Добавление аналитики объема транзакций: Комбинированные переходные показатели подтверждают силу тренда и повышают надежность сигнала.
Эта стратегия, объединенная с MACD и параллельной SAR, создает более полную торговую систему для отслеживания тенденций. Стратегия обладает преимуществами, такими как четкость сигнала, управляемый риск и высокая адаптивность, но также имеет ограничения, такие как зависимость от тенденции и отставание от сигнала.
/*backtest
start: 2024-02-21 00:00:00
end: 2024-11-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MACD + Parabolic SAR Strategy", shorttitle="MACD+SAR", overlay=true)
//========== User Inputs ==========//
// MACD parameters
fastLength = input.int(12, "MACD Fast Length")
slowLength = input.int(26, "MACD Slow Length")
signalLength = input.int(9, "MACD Signal Length")
// SAR parameters (start, step, maximum)
afStart = input.float(0.02, "SAR Start")
afIncrement = input.float(0.02, "SAR Increment")
afMax = input.float(0.2, "SAR Max")
//========== MACD Calculation ==========//
[macdLine, signalLine, histLine] = ta.macd(close, fastLength, slowLength, signalLength)
//========== Parabolic SAR Calculation ==========//
sarValue = ta.sar(afStart, afIncrement, afMax)
//========== Entry Conditions ==========//
// Long: MACD > Signal + close > SAR
longCondition = (macdLine > signalLine) and (close > sarValue)
// Short: MACD < Signal + close < SAR
shortCondition = (macdLine < signalLine) and (close < sarValue)
//========== Enter Positions ==========//
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
//========== Exit Positions on Opposite Signal ==========//
if strategy.position_size > 0 and shortCondition
strategy.close("Long", comment="Exit Long")
if strategy.position_size < 0 and longCondition
strategy.close("Short", comment="Exit Short")