Chiến lược giao dịch định lượng MACD kép

Tác giả:ChaoZhang, Ngày: 2023-11-13 18:04:07
Tags:

img

Tổng quan

Chiến lược này sử dụng sự kết hợp của hai hệ thống EMA và chỉ số RSI để xác định xu hướng thị trường trong khi tạo tín hiệu giao dịch. Nó thuộc về các chiến lược theo xu hướng. Chiến lược đơn giản và dễ sử dụng này áp dụng cho các chỉ số và tiền điện tử lớn khác nhau. Nó đã đạt được hơn 500% lợi nhuận tích lũy trong các bài kiểm tra sau từ năm 2013 đến nay.

Chiến lược logic

Chiến lược này sử dụng hai MACD với các thiết lập tham số khác nhau làm chỉ số giao dịch chính. MACD đầu tiên áp dụng EMA ngắn 10 giai đoạn, EMA dài 22 giai đoạn và đường tín hiệu 9 giai đoạn. MACD thứ hai sử dụng EMA ngắn 21 giai đoạn, EMA dài 45 giai đoạn và đường tín hiệu 20 giai đoạn.

Các tín hiệu từ MACD thứ hai hoạt động để xác nhận những tín hiệu từ MACD đầu tiên.

Ngoài ra, chiến lược sử dụng công thức động lực giá để xác định xu hướng. Khóa gần nhất + cao chia cho khóa trước + cao trên 1 cho thấy xu hướng tăng và tạo ra tín hiệu mua, và ngược lại cho tín hiệu bán.

Cuối cùng, đường K RSI Stoch trên 20 giúp xác nhận tín hiệu bán.

Phân tích lợi thế

Cơ chế EMA kép trong chiến lược này có thể lọc hiệu quả các đột phá sai. Công thức động lực bổ sung cũng tránh các tín hiệu sai do biến động. Việc kết hợp Stoch RSI tránh đuổi theo đỉnh bằng cách phát ra các tín hiệu bán xung quanh các khu vực mua quá mức.

Chiến lược này chỉ sử dụng các kết hợp đơn giản của một số chỉ số chung mà không có mối quan hệ logic quá phức tạp, điều này làm cho nó rất dễ hiểu và sửa đổi.

Theo kết quả backtest, chiến lược này đã đạt được lợi nhuận tích lũy tốt và kiểm soát giảm tối đa trên các sản phẩm khác nhau như chỉ số chứng khoán và tiền điện tử.

Phân tích rủi ro

Rủi ro chính của chiến lược này nằm ở việc sử dụng các đường trung bình động để xác định, có thể dễ dàng gây ra sự biến động và thua lỗ khi giá dao động mạnh mẽ.

Hiệu quả của Stoch RSI trong việc phát hiện mức mua quá mức / bán quá mức không phải là lý tưởng. Nó có thể thường xuyên bỏ lỡ các tín hiệu đảo ngược.

Nếu giá giảm mạnh nhưng MACD chưa hình thành một thập tự tử, chiến lược này sẽ giữ lại các vị trí thua lỗ và tiếp tục chịu tổn thất.

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

Xem xét việc thêm stop loss để kiểm soát lỗ vị trí đơn, ví dụ như stop loss ATR hoặc stop loss dựa trên đường trung bình động thấp hơn.

Thêm các chỉ số khác để xác nhận, chẳng hạn như kết hợp KD hoặc Bollinger Bands với Stoch RSI để phát hiện quá mua / quá bán đáng tin cậy hơn.

Bao gồm phân tích khối lượng, như tăng stop loss khi khối lượng bán hàng đáng kể xuất hiện, hoặc tránh các vị trí mới khi khối lượng yếu.

Kiểm tra các kết hợp tham số khác nhau và tối ưu hóa các khoảng thời gian MACD. Cũng kiểm tra thêm MACD của các khung thời gian khác để xác nhận nhiều lần.

Kết luận

Chiến lược giao dịch định lượng MACD song phương có logic đơn giản và rõ ràng, sử dụng hai đường chéo EMA để xác định xu hướng, được bổ sung bằng các chỉ số động lực để tránh các tín hiệu sai. Nó có thể lọc ra các cơ hội giao dịch có khả năng cao. Cài đặt tham số phổ quát và hiệu suất vững chắc làm cho nó trở thành một chiến lược nền tảng tốt để xây dựng.


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

//@version=2
strategy("Multiple MACD RSI simple strategy", overlay=true, initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=80, pyramiding=0, calc_on_order_fills=true)

fastLength = input(10)
slowlength = input(22)
MACDLength = input(9)

MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = sma(MACD, MACDLength)
delta = MACD - aMACD

fastLength2 = input(21)
slowlength2 = input(45)
MACDLength2 = input(20)

MACD2 = ema(open, fastLength2) - ema(open, slowlength2)
aMACD2 = sma(MACD2, MACDLength2)
delta2 = MACD2 - aMACD2


uptrend = (close + high)/(close[1] + high[1])
downtrend = (close + low)/(close[1] + low[1])

smoothK = input(2, minval=1, title="K smoothing Stoch RSI")
smoothD = input(3, minval=1, title= "D smoothing for Stoch RSI")
lengthRSI = input(7, minval=1, title="RSI Length")
lengthStoch = input(8, minval=1, title="Stochastic Length")
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
h0 = hline(80)
h1 = hline(20)

yearin = input(2018, title="Year to start backtesting from")

if (delta > 0) and (year>=yearin) and (delta2 > 0) and (uptrend > 1)
    strategy.entry("buy", strategy.long, comment="buy")

if (delta < 0) and (year>=yearin) and (delta2 < 0) and (downtrend < 1) and (d > 20)
    strategy.entry("sell", strategy.short, comment="sell")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Thêm nữa