이 전략은 두 가지 고전적인 촛불 패턴: 해머와 헝깅맨을 기반으로 한 양적 거래 시스템이다. 이 반전 패턴을 식별함으로써 잠재적 인 시장 전환점을 예측한다. 시스템은 촛불 몸과 그림자, 트렌드 방향 및 기타 요소 사이의 관계를 포함하여 신호 유효성을 확인하기 위해 여러 기술적 지표를 결합하여 시장 반전 지점을 정확하게 파악합니다.
전략의 핵심 논리는 두 가지 핵심 촛불 패턴을 프로그래밍 방식으로 식별하는 것입니다. 1. 해머: 하향 추세에서 나타나고, 잠재적인 상향 반전을 암시한다. 작은 몸, 긴 아래 그림자 (신장 길이의 최소 두 배), 최소한의 상상 그림자 또는 상상의 그림자가 없는 것이 특징이다. 2. 헝깅맨: 상승 추세에서 나타나고, 잠재적인 하향 반전을 시사한다. 해머와 유사한 특성이지만 반대 함의를 가진 다른 위치에서 나타난다.
전략은 엄격한 매개 변수를 통해 이러한 패턴을 수치화합니다. - 최소 촛불 몸의 길이를 곱하기 - 촛불 높이에 낮은 그림자 비율 - 보관 기간
이 전략은 고전적인 기술 분석 이론을 정량화로 체계적으로 구현하여 강력한 실용적 가치를 입증합니다. 매개 변수 최적화 및 위험 제어 메커니즘 정리를 통해 전략은 다른 시장 환경에서 안정적인 성능을 유지할 수 있습니다. 모듈형 설계는 후속 최적화에 대한 견고한 기초를 제공합니다.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-08 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("Hammer and Hanging Man Strategy", overlay=true) // Input parameters length = input.int(5, title="Minimum Candle Body Length (Multiplier)", minval=1) shadowRatio = input.float(1, title="Lower Shadow to Candle Height Ratio", minval=1.0) holdPeriods = input.int(26, title="Hold Periods (Bars)", minval=1) // Holding period in bars // Function to calculate the absolute value absValue(x) => x >= 0 ? x : -x // Function to check if it is a Hammer isHammer() => bodyLength = absValue(close - open) candleHeight = high - low lowerShadow = math.min(open, close) - low upperShadow = high - math.max(open, close) smallBody = bodyLength <= candleHeight / length longLowerShadow = lowerShadow >= bodyLength * shadowRatio shortUpperShadow = upperShadow <= bodyLength smallBody and longLowerShadow and shortUpperShadow and close > open // Function to check if it is a Hanging Man isHangingMan() => bodyLength = absValue(close - open) candleHeight = high - low lowerShadow = math.min(open, close) - low upperShadow = high - math.max(open, close) smallBody = bodyLength <= candleHeight / length longLowerShadow = lowerShadow >= bodyLength * shadowRatio shortUpperShadow = upperShadow <= bodyLength smallBody and longLowerShadow and shortUpperShadow and close < open // Detect the candles hammer = isHammer() hangingMan = isHangingMan() // Trading logic: Long on Hammer, Short on Hanging Man if hammer strategy.entry("Long", strategy.long) // Long entry on Hammer if hangingMan strategy.entry("Short", strategy.short) // Short entry on Hanging Man // Exit after X bars if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods strategy.close("Long") if strategy.position_size < 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods strategy.close("Short") // Visualization of signals plotshape(hammer, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer") plotshape(hangingMan, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging Man")