Strategi ini adalah sistem perdagangan canggih yang menggabungkan corak harmonik dengan penunjuk Julat Peratusan Williams (WPR). Ia mengenal pasti formasi harmonik (seperti corak Gartley, Bat, Crab, dan Butterfly) di pasaran dan menggunakan tahap overbought / oversold WPR
Logik teras merangkumi beberapa komponen utama: 1. Pengiktirafan corak harmonik: Menggunakan titik pusingan harga untuk mengenal pasti pembentukan harmonik yang berpotensi dengan menganalisis hubungan antara tinggi dan rendah. 2. Pengiraan Williams %R: Menggunakan tempoh khusus untuk mengira WPR, menganalisis hubungan antara harga tinggi, rendah, dan penutupan untuk menentukan keadaan pasaran. Syarat kemasukan: - Long Entry: Apabila corak harmonik bullish muncul dan WPR berada di wilayah oversold - Entry Pendek: Apabila corak harmonik menurun muncul dan WPR berada di wilayah overbought 4. Pengurusan Risiko: Melaksanakan stop-loss dinamik berdasarkan paras terendah/tinggi baru-baru ini dan menetapkan tahap mengambil keuntungan menggunakan nisbah risiko-balasan.
Strategi ini membina sistem perdagangan yang komprehensif dengan menggabungkan corak harmonik dengan penunjuk Williams % R. Kekuatannya terletak pada pendekatan analisis berbilang dimensi dan mekanisme kawalan risiko yang kukuh, walaupun perhatian mesti diberikan kepada pengoptimuman parameter dan penyesuaian dengan persekitaran pasaran. Melalui arah pengoptimuman yang dicadangkan, kestabilan dan kebolehpercayaan strategi dapat ditingkatkan lagi.
/*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")