이 전략은 동적 스톱-로스 및 영업 메커니즘을 통합하는 MACD 지표에 기반한 자동화 거래 시스템이다. 핵심 전략은 위험 관리에 대한 비율 기반 스톱-로스, 이익 목표 및 트레이링 스톱을 통합하는 동시에 MACD 라인 및 신호 라인 크로스오버를 통해 거래 신호를 결정합니다. 전략은 빠른 및 느린 이동 평균의 차이를 사용하여 MACD 지표를 계산하고 신호 라인 크로스오버를 통해 시장 트렌드 반전 지점을 식별하여 대응하는 거래 결정을 내립니다.
핵심 논리는 몇 가지 핵심 요소를 포함합니다.
이 전략은 MACD 크로스오버 신호와 포괄적 인 리스크 관리를 통해 강력한 자동 거래 시스템을 구축합니다. 최적화에 대한 여지가 있지만 기본 프레임워크는 이미 잘 개발되어 있습니다. 지속적인 최적화 및 개선으로 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 수 있습니다. 라이브 거래 구현을 위해 철저한 백테스팅을 수행하고 특정 시장 특성에 따라 매개 변수를 조정하는 것이 좋습니다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-11-01 00:00:00 period: 12h basePeriod: 12h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © traderhub //@version=5 strategy("MACD Strategy with Settings", overlay=true) // Параметры MACD в контрольной панели fastLength = input.int(12, title="Fast Length", minval=1, maxval=50) slowLength = input.int(26, title="Slow Length", minval=1, maxval=50) signalSmoothing = input.int(9, title="Signal Smoothing", minval=1, maxval=50) // Параметры риска stopLossPerc = input.float(1, title="Stop Loss (%)", step=0.1) // Стоп-лосс в процентах takeProfitPerc = input.float(2, title="Take Profit (%)", step=0.1) // Тейк-профит в процентах trailStopPerc = input.float(1.5, title="Trailing Stop (%)", step=0.1) // Трейлинг-стоп в процентах // Вычисляем MACD [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) // Показываем MACD и сигнальную линию на графике plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.red, title="Signal Line") hline(0, "Zero Line", color=color.gray) // Условия для покупки и продажи longCondition = ta.crossover(macdLine, signalLine) // Покупка при пересечении MACD вверх сигнальной линии shortCondition = ta.crossunder(macdLine, signalLine) // Продажа при пересечении MACD вниз сигнальной линии // Расчет стоп-лосса и тейк-профита var float longStopLevel = na var float longTakeProfitLevel = na if (longCondition) longStopLevel := strategy.position_avg_price * (1 - stopLossPerc / 100) longTakeProfitLevel := strategy.position_avg_price * (1 + takeProfitPerc / 100) strategy.entry("Long", strategy.long) if (strategy.position_size > 0) // Установка стоп-лосса и тейк-профита strategy.exit("Take Profit/Stop Loss", "Long", stop=longStopLevel, limit=longTakeProfitLevel, trail_offset=trailStopPerc) // Закрытие позиции при медвежьем сигнале if (shortCondition) strategy.close("Long") strategy.entry("Short", strategy.short)