Chiến lược này là một hệ thống giao dịch tiên tiến kết hợp Mô hình hài hòa với chỉ số Williams Percent Range (WPR). Nó xác định các hình thành hài hòa (như mô hình Gartley, Bat, Crab và Butterfly) trên thị trường và sử dụng mức mua quá mức / bán quá mức WPR để xác định các điểm nhập và xuất thương. Chiến lược sử dụng nhiều cơ chế xác nhận, sử dụng sự phối hợp của các chỉ số kỹ thuật để tăng độ chính xác và độ tin cậy giao dịch.
Logic cốt lõi bao gồm một số thành phần chính: 1. Nhận dạng mẫu hài hòa: Sử dụng các điểm pivot giá để xác định các hình thành hài hòa tiềm năng bằng cách phân tích mối quan hệ giữa mức cao và thấp. 2. Williams % R tính toán: Sử dụng một giai đoạn tùy chỉnh để tính toán WPR, phân tích mối quan hệ giữa giá cao, thấp và đóng cửa để xác định điều kiện thị trường. Điều kiện nhập cảnh: - Long Entry: Khi một mô hình hài hòa tăng xuất hiện và WPR ở vùng bán quá mức - Short Entry: Khi một mô hình hài hòa giảm xuất hiện và WPR ở vùng mua quá mức 4. Quản lý rủi ro: Thực hiện dừng lỗ năng động dựa trên mức thấp / cao gần đây và thiết lập mức lợi nhuận bằng cách sử dụng tỷ lệ rủi ro-lợi nhuận.
Chiến lược này xây dựng một hệ thống giao dịch toàn diện bằng cách kết hợp các mô hình hài hòa với chỉ số Williams % R. Sức mạnh của nó nằm trong cách tiếp cận phân tích đa chiều và cơ chế kiểm soát rủi ro mạnh mẽ, mặc dù phải chú ý đến tối ưu hóa tham số và thích nghi với môi trường thị trường. Thông qua các hướng tối ưu hóa được đề xuất, tính ổn định và độ tin cậy của chiến lược có thể được tăng thêm.
/*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")