Xu hướng MACD theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-12-11 14:57:00
Tags:

img

Tổng quan

Chiến lược theo xu hướng MACD là một chiến lược giao dịch định lượng dựa trên chỉ số MACD. Chiến lược này xác định các tín hiệu chéo vàng và chéo chết của MACD để xác định xu hướng thị trường và theo dõi xu hướng giá.

Chiến lược logic

Logic cốt lõi của Chiến lược theo xu hướng MACD là:

  1. Tính toán đường MACD và đường tín hiệu.
  2. Khi đường MACD vượt qua trên 0 từ dưới lên, ghi điểm cao nhất sau đó, và chờ tín hiệu chéo chết.
  3. Khi đường MACD vượt qua dưới 0 từ trên xuống, ghi điểm thấp nhất sau đó, và chờ tín hiệu chéo vàng.
  4. Khi đường chéo vàng xảy ra, ghi lại giá đóng cửa hiện tại như điểm vào dài, đặt điểm dừng lỗ, mở vị trí dài.
  5. Khi chết chéo xảy ra, ghi lại giá đóng cửa hiện tại như điểm vào ngắn, đặt điểm dừng lỗ, mở vị trí ngắn.
  6. Khi giữ vị trí dài, nếu tỷ lệ lợi nhuận đạt mục tiêu đã đặt trước hoặc rút tiền đạt điểm dừng lỗ, đóng vị trí để thực hiện lợi nhuận.
  7. Khi giữ vị trí ngắn, nếu tỷ lệ lợi nhuận đạt mục tiêu đã đặt trước hoặc rút tiền đạt điểm dừng lỗ, đóng vị trí để thực hiện lợi nhuận.

Thông qua cơ chế theo xu hướng này, chiến lược có thể nắm bắt kịp thời các xu hướng thị trường và kiếm lợi nhuận.

Phân tích lợi thế

Chiến lược theo xu hướng MACD có những lợi thế sau:

  1. Nguồn tín hiệu chiến lược là duy nhất và rõ ràng, được tạo trực tiếp bởi chỉ số MACD, tránh can thiệp tín hiệu.
  2. Sử dụng các đặc điểm chéo vàng và chéo chết của chỉ số MACD để xác định hướng xu hướng thị trường, với các phán đoán chính xác.
  3. Theo dõi kịp thời các xu hướng, với khả năng theo dõi lợi nhuận mạnh mẽ.
  4. Kiểm soát rủi ro thích hợp, với cơ chế dừng lỗ.

Phân tích rủi ro

Chiến lược theo xu hướng MACD cũng có những rủi ro sau:

  1. Chỉ số MACD có xu hướng tạo ra các tín hiệu sai, có thể dẫn đến lỗ trong các giao dịch cực ngắn hạn.
  2. Các thiết lập điểm dừng lỗ không chính xác có thể làm tăng lỗ đơn.
  3. Khó cân bằng giữa tỷ lệ theo dõi lợi nhuận và điểm dừng lỗ, với nguy cơ theo dõi quá mức dẫn đến lỗ.

Để giải quyết các rủi ro trên, các biện pháp tối ưu hóa sau đây có thể được áp dụng:

  1. Kết hợp với các chỉ số khác để lọc các tín hiệu sai.
  2. Điều chỉnh động các điểm dừng lỗ.
  3. Tối ưu hóa các tham số tỷ lệ theo dõi lợi nhuận và điểm dừng lỗ.

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

Chiến lược theo xu hướng MACD có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa các thông số chỉ số MACD để giảm tỷ lệ tín hiệu sai. Các thông số chu kỳ khác nhau của MACD có thể được thử nghiệm.

  2. Thêm các chỉ số khác như khối lượng giao dịch để lọc tín hiệu.

  3. Thiết lập cơ chế dừng lỗ theo dõi năng động. Các điểm dừng lỗ có thể được điều chỉnh năng động dựa trên biến động.

  4. Tối ưu hóa logic xác định tín hiệu để mở các vị trí.

  5. Kết hợp các mô hình học máy để lọc tín hiệu. Các mô hình có thể được đào tạo để đánh giá độ tin cậy của tín hiệu.

Kết luận

Nói chung, chiến lược theo xu hướng MACD là một chiến lược định lượng tương đối trưởng thành. Nó sử dụng chỉ số MACD để xác định hướng xu hướng thị trường và kiểm soát rủi ro bằng cơ chế dừng lỗ, có thể theo dõi hiệu quả xu hướng giá. Nhưng chỉ số MACD cũng có một số lỗ hổng, dễ tạo ra tín hiệu sai. Vì vậy, có không gian để tối ưu hóa thêm chiến lược này, chủ yếu về các khía cạnh như tham số chỉ số, cơ chế dừng lỗ, lọc tín hiệu v.v.


/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MACD Cross Strategy", overlay=true)

// Get MACD values
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
var float entryLongPrice = na
var float entryShortPrice = na

var float highestLongProfit = 0
var float highestShortProfit = 0

var float highestMACD = 0
var float lowestMACD = 0
var bool haveOpenedLong = false
var bool haveOpenedShort = false

var float stoploss = 0.04 // To be adjust for different investment
var float minProfit = 0.05 // To be adjust for different investment

if macdLine > 0
    lowestMACD := 0
    highestMACD := math.max(highestMACD, macdLine)
    haveOpenedShort := false
else
    highestMACD := 0
    lowestMACD := math.min(lowestMACD, macdLine)
    haveOpenedLong := false

// Enter long position when MACD line crosses above the signal line
if ta.crossover(macdLine, signalLine) and macdLine < highestMACD and macdLine > 0 and haveOpenedLong == false
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", from_entry = "Long", stop=close*(1 - stoploss))
    entryLongPrice := close
    haveOpenedLong := true

if ta.crossunder(macdLine, signalLine) and macdLine > lowestMACD and macdLine < 0 and haveOpenedShort == false
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", from_entry = "Short", stop=close*(1 + stoploss))
    entryShortPrice := close
    haveOpenedShort := true

// log.info("entryLongPrice:{0}", entryLongPrice)
if strategy.position_size > 0
    profit = close - entryLongPrice
    log.info("profit:{0}", profit)
    if profit > 0
        highestLongProfit := math.max(highestLongProfit, profit)
        if profit / entryLongPrice > minProfit and highestLongProfit * 0.8 > profit
            strategy.close("Long")
            highestLongProfit := 0

if strategy.position_size < 0
    profit = entryShortPrice - close
    if profit > 0
        highestShortProfit := math.max(highestShortProfit, profit)
        log.info("highestShortProfit={0}, profit={1}", highestShortProfit, profit)
        if profit / entryShortPrice > minProfit and highestShortProfit * 0.8 > profit
            strategy.close("Short")
            highestShortProfit := 0

Thêm nữa