この戦略は,ハーモニック・パターンをウィリアムズ・パーセンテント・レンジ (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")