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

Tác giả:ChaoZhang, Ngày: 2023-12-12 16:00:37
Tags:

img

Tổng quan

Chiến lược này được thiết kế như một chiến lược theo xu hướng đơn giản dựa trên chỉ số EVWMA. Nó sử dụng đường nhanh và đường chậm để xây dựng chỉ số EVWMA. Một vị trí dài sẽ được mở khi đường nhanh vượt qua đường chậm, và một vị trí ngắn sẽ được mở khi đường nhanh vượt qua đường chậm, để theo xu hướng.

Chiến lược logic

Chỉ số cốt lõi của chiến lược này là EVWMA, cụ thể là Elastic Volume Weighted Moving Average. Nó kết hợp cả thông tin giá và khối lượng để phản ánh xu hướng thị trường một cách năng động bằng cách tính toán giai đoạn riêng của nó.

Cụ thể, thời gian của đường nhanh được tính bằng tổng khối lượng của 10 thanh gần đây và 20 thanh cho đường chậm. EVWMA của mỗi thanh được tính như (Bộ EVWMA trước đây × (Dài hạn thời gian - khối lượng thanh hiện tại) + Giá đóng thanh hiện tại × khối lượng thanh hiện tại) / Dài hạn thời gian. Bằng cách này, nó kết hợp cả thông tin giá và khối lượng.

Khi đường nhanh vượt qua đường chậm, nó chỉ ra rằng sức mua đang tăng mạnh để đi dài. Khi đường nhanh vượt qua dưới đường chậm, nó chỉ ra rằng sức bán đang tăng mạnh để đi ngắn. Với sự kết hợp của đường nhanh và chậm như vậy, chiến lược có thể nắm bắt xu hướng thị trường một cách năng động để theo xu hướng.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này nằm ở thiết kế thời gian năng động của chỉ số EVWMA để phản ứng nhanh hơn với những thay đổi về giá và khối lượng, do đó nắm bắt xu hướng thị trường trong thời gian thực, rất phù hợp với các chiến lược theo xu hướng.

Rủi ro và giải pháp

Rủi ro chính của chiến lược này là các thiết lập tham số không phù hợp của chỉ số EVWMA. Nếu các giai đoạn của các đường nhanh và chậm không được thiết lập đúng cách, nó có thể tạo ra các tín hiệu sai quá mức. Bên cạnh đó, các chiến lược theo xu hướng có một số nhược điểm khi xu hướng thị trường đảo ngược mạnh.

Để giải quyết các vấn đề này, chúng ta có thể tối ưu hóa các thông số và điều chỉnh các khoảng thời gian tính toán của các đường nhanh và chậm để tìm ra sự kết hợp tốt nhất. Ngoài ra, một mức dừng lỗ có thể được thiết lập để kiểm soát rủi ro mất mát.

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

Ngoài ra, các giá trị tham số tối ưu có thể khác nhau giữa các sản phẩm và khoảng thời gian khác nhau. Một cơ chế tối ưu hóa tham số thích nghi có thể được thiết lập để điều chỉnh các tham số dựa trên dữ liệu thời gian thực.

Về các khía cạnh giao dịch, stop loss động, trailing stop loss và các phương tiện khác cũng có thể được thiết kế để kiểm soát rủi ro. Ngoài ra, một cơ chế tham số thích nghi có thể giúp lấy các tham số tối ưu trên các sản phẩm và khoảng thời gian khác nhau.

Tóm lại

Chiến lược này tận dụng thiết kế thời gian năng động của chỉ số EVWMA và kết hợp thông tin khối lượng để xây dựng một chiến lược theo xu hướng hiệu quả. Nó có thể phản ứng nhanh chóng với những thay đổi về giá và nắm bắt xu hướng thị trường. Với tối ưu hóa tham số, các biện pháp kiểm soát rủi ro vv, sự ổn định của chiến lược có thể được cải thiện hơn nữa.


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

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

// 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)

// 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)

// Plot 
plot(fast_evwma, title = "EVWMA Fast", linewidth = 2, color = color.red)
plot(slow_evwma, title = "EVWMA Slow", linewidth = 2, color = color.green)

// 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