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


Ngày tạo: 2024-01-22 10:50:25 sửa đổi lần cuối: 2024-01-22 10:50:25
sao chép: 0 Số nhấp chuột: 618
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

Chiến lược này là một chiến lược giao dịch MACD dựa trên trung bình di chuyển cân nặng khối lượng giao dịch linh hoạt (EVWMA). Nó sử dụng lợi thế của EVWMA để thiết kế một chiến lược có tín hiệu giao dịch rõ ràng và thực tế.

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

Chỉ số EVWMA tích hợp thông tin về khối lượng giao dịch vào tính toán trung bình di chuyển, cho phép trung bình di chuyển phản ánh chính xác hơn sự thay đổi giá. Chiến lược này xây dựng đường nhanh và tính toán đường chậm được thực hiện dựa trên EVWMA. Cài đặt tham số của đường nhanh nhạy hơn, có thể nắm bắt sự thay đổi giá trong thời gian ngắn; tham số đường chậm được thiết lập ổn định hơn, có thể lọc một phần tiếng ồn.

Phân tích lợi thế

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

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 sự chậm trễ, không thể bắt kịp sự đảo ngược giá. Ngoài ra, cài đặt tham số của EVWMA cũng có thể ảnh hưởng đến hiệu suất của chiến lược. Nếu cài đặt tham số đường nhanh chậm không đúng, sẽ có tín hiệu giao dịch bị xáo trộn, ảnh hưởng đến khả năng kiếm tiền.

Để giảm nguy cơ, các tham số nên được điều chỉnh thích hợp, để khoảng cách giữa đường nhanh và đường chậm trở nên vừa phải. Histogram có thể hỗ trợ trong việc xác định xem có cần chuyển tham số hay không. Ngoài ra, bạn cũng có thể thiết kế chiến lược dừng lỗ để tránh tổn thất đơn lẻ quá lớn.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:

  1. Sử dụng công nghệ thiết lập tham số thích ứng, các tham số của EVWMA có thể tự động điều chỉnh theo môi trường thị trường, đảm bảo rõ ràng của tín hiệu giao dịch.

  2. Tăng cơ chế ngăn chặn thiệt hại, có thể kiểm soát hiệu quả tổn thất đơn lẻ.

  3. Kết hợp với các chỉ số khác để lọc tín hiệu báo cáo sai lệch. Ví dụ, kết hợp khối lượng giao dịch, tín hiệu chỉ được tạo ra khi có sự thay đổi giá lớn.

  4. Tối ưu hóa lựa chọn điểm vào. Chiến lược hiện tại là đặt hàng khi MACD giao nhau. Có thể kiểm tra xem việc chuyển sang kéo sâu có phù hợp hơn không.

Tóm tắt

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ó ổn định hơn, thích ứng rộng hơn. Ngoài ra, chính MACD cũng có vấn đề về sự chậm trễ. Chúng ta có thể cải thiện từ việc tối ưu hóa tham số thích ứng, thiết kế dừng lỗ, lọc tín hiệu, v.v., để làm cho chiến lược trở nên ổn định hơn.

Mã nguồn chiến lượ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))