Tài nguyên đang được tải lên... tải...

Chiến lược giao dịch định lượng dựa trên trung bình di chuyển Hull sửa đổi và Ichimoku Kinko Hyo

Tác giả:ChaoZhang, Ngày: 2024-04-28 13:39:00
Tags:HMAIKHSWMA

img

Tổng quan

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.

Nguyên tắc chiến lược

  1. Tính toán đường trung bình động của thân tàu sửa đổi (HMA)
    • Tính toán Đường trung bình động cân (WMA) và áp dụng làm mịn đôi để có được HMA sửa đổi
  2. Tính toán các chỉ số của Ichimoku Kinko Hyo
    • Tính toán Tenkan Sen (đường chuyển đổi), Kijun Sen (đường cơ bản), Senkou Span A (đường dẫn A) và Senkou Span B (đường dẫn B)
  3. Tạo tín hiệu giao dịch
    • Khi HMA vượt qua trên Kijun Sen và giá đóng là trên Kumo, tạo ra một tín hiệu dài
    • Khi HMA vượt qua dưới Kijun Sen và giá đóng cửa dưới Kumo, tạo ra một tín hiệu ngắn
  4. Thực hiện giao dịch
    • Thực hiện các giao dịch tương ứng dựa trên tín hiệu dài hoặc ngắn
  5. Giao dịch thoát
    • Khi HMA vượt qua Kijun Sen theo hướng ngược lại, ra khỏi vị trí hiện tại

Ưu điểm chiến lược

  1. Kết hợp hai chỉ số theo xu hướng hiệu quả, HMA và IKHS để nắm bắt tốt hơn xu hướng thị trường
  2. Sử dụng Kumo của IKHS như một điều kiện lọc để giảm hiệu quả các tín hiệu sai và cải thiện tỷ lệ chiến thắng của các giao dịch
  3. HMA đã được sửa đổi có tốc độ phản hồi nhanh hơn và chậm hơn so với trung bình động truyền thống, cho phép phản ánh kịp thời những thay đổi trên thị trường
  4. Chiến lược logic là rõ ràng, dễ hiểu, và thực hiện, phù hợp với các thị trường và khung thời gian khác nhau

Rủi ro chiến lược

  1. Trong thời gian biến động thị trường hoặc xu hướng không rõ ràng, chiến lược có thể tạo ra nhiều tín hiệu sai, dẫn đến giao dịch thường xuyên và mất vốn
  2. Các thiết lập tham số của chiến lược có tác động đáng kể đến kết quả giao dịch và các kết hợp tham số khác nhau có thể dẫn đến hiệu suất khác nhau.
  3. Chiến lược không xem xét các trường hợp khẩn cấp trên thị trường và hành vi phi lý, và có thể phải đối mặt với rủi ro lớn hơn trong điều kiện thị trường cực đoan

Hướng dẫn tối ưu hóa chiến lược

  1. Đưa ra các chỉ số kỹ thuật hoặc các chỉ số tâm lý thị trường khác để cải thiện độ tin cậy và ổn định của tín hiệu
  2. Tối ưu hóa các thông số chiến lược, chẳng hạn như sử dụng máy học hoặc thuật toán di truyền để tìm kết hợp thông số tối ưu
  3. Xem xét thêm một mô-đun quản lý rủi ro, chẳng hạn như thiết lập mức dừng lỗ và lấy lợi nhuận, kích thước vị trí, vv để kiểm soát rủi ro của chiến lược
  4. Dựa trên các đặc điểm của các thị trường khác nhau và khung thời gian, thực hiện điều chỉnh và tối ưu hóa mục tiêu cho chiến lược

Tóm lại

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")


Có liên quan

Thêm nữa