Chiến lược giao dịch MACD dựa trên EVWMA

Tác giả:ChaoZhang, Ngày: 2024-01-22 10:50:25
Tags:

img

Tổng quan

Chiến lược này là một chiến lược giao dịch MACD dựa trên Elastic Volume Weighted Moving Average (EVWMA).

Nguyên tắc

Chỉ số EVWMA kết hợp thông tin khối lượng vào tính toán các đường trung bình động, cho phép đường trung bình động phản ánh chính xác hơn những thay đổi giá. Các tính toán của đường nhanh và đường chậm trong chiến lược này đều dựa trên EVWMA. Các thiết lập tham số của đường nhanh nhạy cảm hơn để nắm bắt biến động giá ngắn hạn; các thiết lập tham số của đường chậm mạnh mẽ hơn để lọc một số tiếng ồn. MACD được hình thành bởi hai EVWMA kích hoạt các tín hiệu dài và ngắn trên giao thoa, và biểu đồ cung cấp các lời nhắc giao dịch được nâng cao trực quan.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là bằng cách tận dụng sức mạnh của chỉ số EVWMA, các thiết lập tham số của chiến lược MACD trở nên ổn định hơn và tín hiệu giao dịch trở nên rõ ràng hơn. So với các đường trung bình động đơn giản, EVWMA có thể nắm bắt tốt hơn những thay đổi xu hướng thị trường. Điều này làm cho chiến lược thích nghi hơn để hoạt động ổn định trên các môi trường thị trường khác nhau.

Phân tích rủi ro

Rủi ro chính của chiến lược này là MACD tự nó có một độ trễ nhất định và không thể nhanh chóng nắm bắt sự đảo ngược giá. Ngoài ra, cài đặt tham số của EVWMA cũng ảnh hưởng đến hiệu suất chiến lược. Nếu các tham số đường nhanh và chậm không được đặt đúng cách, các tín hiệu giao dịch sẽ hỗn loạn, ảnh hưởng đến lợi nhuận.

Để giảm thiểu rủi ro, các tham số nên được điều chỉnh thích hợp để có sự khác biệt vừa phải giữa các đường nhanh và chậm. Biểu đồ biểu đồ có thể giúp đánh giá liệu điều chỉnh tham số có cần thiết hay không. Ngoài ra, các chiến lược dừng lỗ cũng có thể được thiết kế để tránh các lỗ đơn quá lớn.

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

Các khía cạnh chính để tối ưu hóa chiến lược này bao gồm:

  1. Sử dụng các kỹ thuật thiết lập tham số thích nghi để tự động điều chỉnh các tham số EVWMA theo điều kiện thị trường để đảm bảo độ rõ của tín hiệu.

  2. Tăng cơ chế dừng lỗ để kiểm soát hiệu quả các lỗ đơn.

  3. Kết hợp các chỉ số khác để lọc tín hiệu sai. Ví dụ, kết hợp với khối lượng để chỉ kích hoạt tín hiệu trong những thay đổi giá đáng kể.

  4. Tối ưu hóa lựa chọn điểm nhập. Hiện nay chiến lược mở các vị trí trên đường chéo đường không của MACD. Có thể kiểm tra xem sử dụng chênh lệch hoạt động tốt hơn hay không.

Kết luận

Chiến lược này sử dụng lợi thế của chỉ số EVWMA để xây dựng một chiến lược MACD đơn giản và thực tế. Nó có sự ổn định và khả năng thích nghi tốt hơn. Đồng thời, nó cũng có vấn đề chậm vốn có của MACD. Chúng ta có thể cải thiện độ bền của chiến lược thông qua tối ưu hóa tham số thích nghi, thiết kế dừng lỗ, lọc tín hiệu và các khía cạnh khác.


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

//@version=4
strategy("QuantNomad - EVWMA MACD Strategy", shorttitle = "EVWMA MACD", overlay = false)

// Inputs
fast_sum_length = input(10, title = "Fast Sum Length",  type = input.integer)
slow_sum_length = input(20, title = "Slow Sum Length",  type = input.integer)
signal_length   = input(9,  title = "Signal Smoothing", type = input.integer, minval = 1, maxval = 50)

// Calculate Volume Period
fast_vol_period = sum(volume, fast_sum_length)
slow_vol_period = sum(volume, slow_sum_length)

// Calculate EVWMA
fast_evwma = 0.0
fast_evwma := ((fast_vol_period - volume) * nz(fast_evwma[1], close) + volume * close) / (fast_vol_period)

// Calculate EVWMA
slow_evwma = 0.0
slow_evwma := ((slow_vol_period - volume) * nz(slow_evwma[1], close) + volume * close) / (slow_vol_period)

// Calculate MACD
macd   = fast_evwma - slow_evwma
signal = ema(macd, signal_length)
hist   = macd - signal

// Plot 
plot(hist,   title = "Histogram", style = plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #EF5350) ), transp=0 )
plot(macd,   title = "MACD",      color = #0094ff, transp=0)
plot(signal, title = "Signal",    color = #ff6a00, transp=0)

// Strategy
strategy.entry("Long",   true, when = crossover(fast_evwma, slow_evwma))
strategy.entry("Short", false, when = crossunder(fast_evwma, slow_evwma))

Thêm nữa