Sử dụng chiến lược giao dịch định lượng MACD


Ngày tạo: 2023-12-19 15:11:57 sửa đổi lần cuối: 2023-12-19 15:11:57
sao chép: 1 Số nhấp chuột: 794
1
tập trung vào
1621
Người theo dõi

Sử dụng chiến lược giao dịch định lượng MACD

Tổng quan

Chiến lược này sử dụng chỉ số MACD để xây dựng tín hiệu giao dịch đường dài, làm nhiều hơn khi chỉ số MACD thấp hơn một mức nhất định và tận dụng cơ hội giao dịch đảo ngược.

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

Khi đường chỉ số MACD thấp hơn đường tín hiệu SIGNAL và giá trị tuyệt đối của MACD thấp hơn -0.00025, sẽ tạo ra tín hiệu nhiều. Sau khi làm nhiều, nếu đường MACD đi qua đường tín hiệu một lần nữa, thì sẽ hòa vốn.

Chiến lược này sử dụng chỉ số MACD để phát hiện khoảng bán tháo, theo lý thuyết đường trung bình, giá cổ phiếu có xác suất đảo ngược trong thời gian ngắn, và dựa trên xác suất này, thiết lập tín hiệu đa.

Lợi thế chiến lược

  1. Sử dụng chỉ số MACD để đánh giá phạm vi bán quá mức, có một số độ tin cậy.
  2. Các tín hiệu và quy tắc giao dịch đơn giản, dễ thực hiện.
  3. Giữ cổ phiếu dài hạn, giao dịch ít hơn, giảm chi phí giao dịch và mất điểm trượt.

Rủi ro chiến lược

  1. Rủi ro thất bại của việc đảo ngược. Nếu không đảo ngược, bạn sẽ thua lỗ.
  2. Các tham số không chính xác sẽ dẫn đến lỗi. Các tham số MACD được đặt không chính xác sẽ dẫn đến tín hiệu sai.

Bạn có thể giảm thiểu rủi ro này bằng cách tối ưu hóa các tham số.

Tối ưu hóa chiến lược

  1. Tối ưu hóa các tham số MACD để tìm ra sự kết hợp tham số tối ưu.
  2. Kiểm tra thời gian giữ vị trí khác nhau để tìm chu kỳ giữ vị trí tối ưu.
  3. Tăng hệ thống ngăn chặn thiệt hại.

Tóm tắt

Chiến lược này sử dụng chỉ số MACD để xác định xác suất đảo ngược trong phạm vi bán tháo, tạo ra nhiều tín hiệu và kiếm lợi nhuận bằng cách giữ vị trí dài. Các tham số MACD được tối ưu hóa và cơ chế dừng lỗ được tăng độ tin cậy. Nhìn chung, sử dụng các chỉ số và quy tắc đơn giản hơn để xây dựng một chiến lược định lượng dễ hiểu và thực hiện.

Mã nguồn chiến lược
//@version=3
strategy(title="MACD - EURUSD", shorttitle="MACD EURUSD")

// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)

longCond = crossover(macd, signal) and macd < -0.00025
exitLong = crossover(macd, hist)


strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)