
이 전략은 MACD (Moving Average Trend Indicator) 와 PARALINE SAR (Stop Loss Reversal Indicator) 을 결합한 트렌드 추적 거래 시스템이다. 동력 지표와 트렌드 지표의 유기적 결합을 통해 시장의 트렌드 방향을 식별하는 동시에 트렌드 강도를 정량적으로 분석하여 더 좋은 기회를 잡는다. 이 전략은 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")