Chiến lược giao dịch lượng tử dựa trên đám mây Ichimoku

Tác giả:ChaoZhang, Ngày: 2024-01-12 14:20:43
Tags:

img

Tổng quan

Chiến lược này thiết kế một hệ thống giao dịch định lượng dựa trên chỉ số Ichimoku Cloud, chủ yếu cho các tài sản có xu hướng tốt. Chiến lược tích hợp các chức năng như dừng lỗ, lấy lợi nhuận và dừng lỗ để đạt được lợi nhuận ổn định.

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

Các tín hiệu giao dịch của chiến lược này đến từ mối quan hệ giữa giá và biểu đồ đám mây. Cụ thể, một tín hiệu mua được tạo ra khi giá vượt quá phạm vi dẫn đầu 1; Một tín hiệu bán được tạo ra khi giá vượt qua dưới phạm vi dẫn đầu 1. Ngoài ra, phạm vi dẫn đầu 2 cũng phục vụ như một chỉ số phán đoán phụ.

Chiến lược này cũng thiết lập stop loss và take profit dựa trên chỉ số ATR. Chỉ số ATR có thể nắm bắt hiệu quả mức độ biến động của thị trường. Stop loss được thiết lập là 2 lần ATR, và take profit được thiết lập là 4 lần ATR. Điều này có thể kiểm soát hiệu quả lỗ đơn và khóa một số lợi nhuận.

Cuối cùng, chiến lược này áp dụng cơ chế dừng lỗ sau. Cụ thể, đối với các vị trí dài, nó sẽ sử dụng 2 lần ATR như chiều rộng gọi lại để điều chỉnh đường dừng lỗ trong thời gian thực để khóa lợi nhuận; cho các vị trí ngắn, nó sẽ sử dụng 2 lần ATR như chiều rộng gọi lại để điều chỉnh đường dừng lỗ trong thời gian thực để khóa lợi nhuận.

Phân tích lợi thế

  1. Dựa trên chỉ số biểu đồ mây Ichimoku, nó có thể nắm bắt hiệu quả xu hướng
  2. Với ATR dựa trên dừng lỗ và lấy lợi nhuận, nó có thể kiểm soát rủi ro
  3. Sử dụng cơ chế dừng lỗ để khóa lợi nhuận tốt
  4. Chiến lược logic là đơn giản và rõ ràng, dễ hiểu và xác minh
  5. parametrization có sẵn, các thông số có thể được điều chỉnh theo các thị trường khác nhau

Phân tích rủi ro

  1. Bản đồ đám mây Ichimoku rất nhạy cảm với các thiết lập tham số, cài đặt không đúng có thể bỏ lỡ cơ hội giao dịch hoặc tạo ra tín hiệu sai
  2. Nếu kích thước stop loss sau được đặt quá lớn, stop loss có thể xảy ra sớm
  3. Các cổ phiếu mạnh có thể vượt qua đường dừng lỗ hoặc đường dừng lỗ sau được cung cấp bởi chỉ số ATR
  4. Chi phí giao dịch cũng sẽ có một số tác động đến lợi nhuận

Giải pháp cho các rủi ro tương ứng:

  1. Tối ưu hóa các tham số của bản đồ đám mây Ichimoku để tìm các thiết lập phù hợp nhất
  2. Đánh giá kích thước dừng lỗ kéo dài hợp lý, không quá lớn cũng không quá nhỏ
  3. Đối với các cổ phiếu mạnh, nới lỏng phù hợp phạm vi dừng lỗ
  4. Chọn các nhà môi giới với phí hoa hồng thấp

Hướng dẫn tối ưu hóa

  1. Kết hợp các chỉ số kỹ thuật khác để lọc tín hiệu để giảm các giao dịch sai
  2. Tối ưu hóa các tham số dựa trên dữ liệu lịch sử / kiểm tra hậu quả
  3. Các thông số cho các giống khác nhau có thể được tối ưu hóa riêng biệt
  4. Xem xét điều chỉnh năng động kích thước dừng mất mát
  5. Kết hợp các thuật toán để thực hiện kỹ thuật tính năng để xây dựng các tín hiệu giao dịch đáng tin cậy hơn

Tóm lại

Nói chung, chiến lược này là một chiến lược theo dõi xu hướng ổn định. Đánh giá hướng xu hướng dựa trên chỉ số đám mây Ichimoku; đặt dừng lỗ và lấy lợi nhuận bằng cách sử dụng chỉ số ATR; sử dụng dừng lỗ để khóa lợi nhuận. Ưu điểm là logic đơn giản, dễ hiểu; lỗ đơn có thể được kiểm soát; xu hướng có thể được theo dõi hiệu quả. Nhưng cũng có một số rủi ro về độ nhạy của tham số và dừng lỗ bị phá vỡ. Bằng cách liên tục tối ưu hóa các tham số và chính chiến lược, có thể đạt được hiệu suất tốt hơn.


/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud Strategy with SL, TP, and Trailing Stop", overlay=true)

conversionPeriods = input(9, "Conversion Line Length")
basePeriods = input(26, "Base Line Length")
laggingSpan2Periods = input(52, "Leading Span B Length")
displacement = input(26, "Lagging Span")
atrLength = input(14, title="ATR Length")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

// Plot the Ichimoku Cloud components
plot(conversionLine, color=color.blue, title="Conversion Line")
plot(baseLine, color=color.red, title="Base Line")
plot(leadLine1, color=color.green, title="Leading Span A")
plot(leadLine2, color=color.orange, title="Leading Span B")
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, color=color.green, title="Kumo Cloud Upper Line")
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, color=color.red, title="Kumo Cloud Lower Line")

// ATR for stop loss and take profit
atrValue = ta.atr(atrLength)
stopLoss = atrValue * 2
takeProfit = atrValue * 4

// Strategy entry and exit conditions
longCondition = ta.crossover(close, leadLine1) and close > leadLine2
shortCondition = ta.crossunder(close, leadLine1) and close < leadLine2

// Plot buy and sell signals
plotshape(series=longCondition ? leadLine1 : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition ? leadLine1 : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Execute strategy orders with stop loss and take profit
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition) // Close buy position when sell condition is met
strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition) // Close sell position when buy condition is met

// Trailing stop
strategy.cancel("Trailing Stop")
var float trailingStopPrice = na
if (longCondition)
    trailingStopPrice := math.max(trailingStopPrice, close - atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Buy", trail_offset=atrValue * 2, trail_price=trailingStopPrice)
else if (shortCondition)
    trailingStopPrice := math.min(trailingStopPrice, close + atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Sell", trail_offset=atrValue * 2, trail_price=trailingStopPrice)


Thêm nữa