Chiến lược này kết hợp hai chỉ số kỹ thuật: Hull Moving Average (HMA) được sửa đổi và Ichimoku Kinko Hyo (IKHS), nhằm mục đích nắm bắt xu hướng thị trường trung hạn đến dài hạn. Ý tưởng chính là sử dụng các tín hiệu chéo giữa HMA và Kijun Sen (đường cơ sở) của IKHS, trong khi sử dụng Kumo (đám mây) của IKHS làm điều kiện lọc để xác định hướng xu hướng và đưa ra quyết định giao dịch.
Bằng cách kết hợp Hull Moving Average được sửa đổi và Ichimoku Kinko Hyo, chiến lược này xây dựng một hệ thống giao dịch theo xu hướng tương đối ổn định. Logic chiến lược rõ ràng và dễ thực hiện, đồng thời cũng có một số ưu điểm nhất định. Tuy nhiên, hiệu suất của chiến lược vẫn bị ảnh hưởng bởi điều kiện thị trường và cài đặt tham số, đòi hỏi tối ưu hóa và cải thiện hơn nữa. Trong các ứng dụng thực tế, cần phải thực hiện điều chỉnh và quản lý thích hợp dựa trên các đặc điểm thị trường cụ thể và sở thích rủi ro để đạt được kết quả giao dịch tốt hơn.
/*backtest start: 2024-04-20 00:00:00 end: 2024-04-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Hull MA_X + Ichimoku Kinko Hyo Strategy", shorttitle="HMX+IKHS", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0) // Hull Moving Average Parameters keh = input(12, title="Double HullMA") n2ma = 2 * wma(close, round(keh/2)) - wma(close, keh) sqn = round(sqrt(keh)) hullMA = wma(n2ma, sqn) // Ichimoku Kinko Hyo Parameters tenkanSenPeriods = input(9, title="Tenkan Sen Periods") kijunSenPeriods = input(26, title="Kijun Sen Periods") senkouSpanBPeriods = input(52, title="Senkou Span B Periods") displacement = input(26, title="Displacement") // Ichimoku Calculations highestHigh = highest(high, max(tenkanSenPeriods, kijunSenPeriods)) lowestLow = lowest(low, max(tenkanSenPeriods, kijunSenPeriods)) tenkanSen = (highest(high, tenkanSenPeriods) + lowest(low, tenkanSenPeriods)) / 2 kijunSen = (highestHigh + lowestLow) / 2 senkouSpanA = ((tenkanSen + kijunSen) / 2) senkouSpanB = (highest(high, senkouSpanBPeriods) + lowest(low, senkouSpanBPeriods)) / 2 // Plot Ichimoku p1 = plot(tenkanSen, color=color.blue, title="Tenkan Sen") p2 = plot(kijunSen, color=color.red, title="Kijun Sen") p3 = plot(senkouSpanA, color=color.green, title="Senkou Span A", offset=displacement) p4 = plot(senkouSpanB, color=color.orange, title="Senkou Span B", offset=displacement) fill(p3, p4, color=color.gray, title="Kumo Shadow") // Trading Logic longCondition = crossover(hullMA, kijunSen) and close > senkouSpanA[displacement] and close > senkouSpanB[displacement] shortCondition = crossunder(hullMA, kijunSen) and close < senkouSpanA[displacement] and close < senkouSpanB[displacement] // Strategy Execution if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Exit Logic - Exit if HullMA crosses KijunSen in the opposite direction exitLongCondition = crossunder(hullMA, kijunSen) exitShortCondition = crossover(hullMA, kijunSen) if (exitLongCondition) strategy.close("Long") if (exitShortCondition) strategy.close("Short")