이 전략은 하모닉 패턴과 윌리엄스 퍼센트 레인지 (WPR) 인디케이터를 결합한 고급 거래 시스템이다. 시장에서 하모닉 포메이션 (가트리, 박쥐, 크래브 및 버터플라이 패턴과 같은) 을 식별하고 거래 진입 및 출구 지점을 결정하기 위해 WPR
핵심 논리는 몇 가지 핵심 요소를 포함합니다. 1. 하모닉 패턴 인식: 상승과 하락 사이의 관계를 분석하여 잠재적 인 하모닉 형성을 식별하기 위해 가격 회전 지점을 사용합니다. 2. 윌리엄스 %R 계산: WPR를 계산하기 위해 사용자 정의 기간을 사용하여 시장 조건을 결정하기 위해 높은 가격, 낮은 가격 및 폐쇄 가격 사이의 관계를 분석합니다. 3. 입국 조건: - 긴 진입: 상승 하모닉 패턴이 나타나고 WPR가 과판 영역에 있을 때 - 단기 진입: 하락 하모닉 패턴이 나타나고 WPR가 과잉 매입 영역에있을 때 4. 리스크 관리: 최근 최저/최고치를 기반으로 동적 스톱 로스를 구현하고 리스크-어워드 비율을 사용하여 수익을 취하는 수준을 설정합니다.
이 전략은 윌리엄스 %R 지표와 조화 패턴을 결합하여 포괄적인 거래 시스템을 구축합니다. 이 전략의 강점은 다차원 분석 접근법과 강력한 위험 관리 메커니즘에 있습니다. 그러나 매개 변수 최적화 및 시장 환경 적응에주의를 기울여야합니다. 제안된 최적화 방향을 통해 전략의 안정성과 신뢰성을 더욱 향상시킬 수 있습니다.
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Harmonic Pattern with WPR Backtest", overlay=true) // === Inputs === patternLength = input.int(5, title="Pattern Length") wprLength = input.int(14, title="WPR Length") wprOverbought = input.float(-20, title="WPR Overbought Level") wprOversold = input.float(-80, title="WPR Oversold Level") riskRewardMultiplier = input.float(0.618, title="Take-Profit Risk/Reward Multiplier") stopLossBuffer = input.float(0.005, title="Stop-Loss Buffer (%)") // === Manual Calculation of William Percent Range (WPR) === highestHigh = ta.highest(high, wprLength) lowestLow = ta.lowest(low, wprLength) wpr = ((highestHigh - close) / (highestHigh - lowestLow)) * -100 // === Harmonic Pattern Detection (Simplified Approximation) === // Calculate price pivots pivotHigh = ta.pivothigh(high, patternLength, patternLength) pivotLow = ta.pivotlow(low, patternLength, patternLength) // Detect Bullish and Bearish Harmonic Patterns bullishPattern = pivotLow and close > ta.lowest(close, patternLength) // Simplified detection for bullish patterns bearishPattern = pivotHigh and close < ta.highest(close, patternLength) // Simplified detection for bearish patterns // === Entry Conditions === longCondition = bullishPattern and wpr < wprOversold shortCondition = bearishPattern and wpr > wprOverbought // === Stop-Loss and Take-Profit Levels === longEntryPrice = close longSL = ta.valuewhen(longCondition, low, 0) * (1 - stopLossBuffer) // Stop-loss for long trades longTP = longEntryPrice * (1 + riskRewardMultiplier) // Take-profit for long trades shortEntryPrice = close shortSL = ta.valuewhen(shortCondition, high, 0) * (1 + stopLossBuffer) // Stop-loss for short trades shortTP = shortEntryPrice * (1 - riskRewardMultiplier) // Take-profit for short trades // === Backtesting Logic === // Long Trade if longCondition strategy.entry("Long", strategy.long) strategy.exit("Long Exit", "Long", stop=longSL, limit=longTP) // Short Trade if shortCondition strategy.entry("Short", strategy.short) strategy.exit("Short Exit", "Short", stop=shortSL, limit=shortTP) // === Visualization === bgcolor(longCondition ? color.new(color.green, 90) : na, title="Long Entry Signal") bgcolor(shortCondition ? color.new(color.red, 90) : na, title="Short Entry Signal")