Cette stratégie est un système de négociation avancé qui combine les modèles harmoniques avec l'indicateur Williams Percent Range (WPR). Il identifie les formations harmoniques (comme les modèles Gartley, Bat, Crab et Butterfly) sur le marché et utilise les niveaux de surachat / survente de WPR pour déterminer les points d'entrée et de sortie du commerce. La stratégie utilise plusieurs mécanismes de confirmation, utilisant la synergie des indicateurs techniques pour améliorer la précision et la fiabilité du trading.
La logique de base comprend plusieurs composantes clés: 1. Reconnaissance des modèles harmoniques: utilise les points pivots des prix pour identifier les formations harmoniques potentielles en analysant les relations entre les hauts et les bas. 2. calcul Williams %R: utilise une période personnalisée pour calculer le WPR, en analysant les relations entre les prix élevés, bas et de clôture pour déterminer les conditions du marché. 3. Conditions d'entrée: - Longue entrée: Quand une tendance haussière harmonieuse apparaît et que le WPR est en territoire survendu - Entrée courte: Quand une tendance harmonieuse baissière apparaît et que le WPR est sur le territoire des surachats 4. Gestion des risques: met en œuvre un stop-loss dynamique basé sur des bas/hauts récents et fixe des niveaux de prise de profit en utilisant des ratios risque-rendement.
Cette stratégie construit un système de négociation complet en combinant des modèles harmoniques avec l'indicateur Williams %R. Ses forces résident dans son approche d'analyse multidimensionnelle et ses mécanismes de contrôle des risques robustes, bien que l'attention soit portée à l'optimisation des paramètres et à l'adaptation à l'environnement du marché.
/*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")