Chiến lược giao dịch đường trung bình động kép dựa trên giá tổng hợp phi xu hướng


Ngày tạo: 2023-09-19 17:13:28 sửa đổi lần cuối: 2023-09-19 17:13:28
sao chép: 1 Số nhấp chuột: 584
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này dựa trên chiến lược giao dịch hai chiều bằng nhau của giá tổng hợp giảm xu hướng (Detrended Synthetic Price, DSP). DSP là một hàm đồng bộ với chu kỳ thống trị giá thực, được lấy bằng cách tính 14 chu kỳ EMA trừ 1/ 2 chu kỳ EMA.

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

  1. Tính trung bình của giá trong 12 chu kỳ HL x HL2.

  2. Tính theo tham số Length xHL2 14 chu kỳ EMA ((xEMA1) và 12 chu kỳ EMA ((xEMA2)

  3. Tính toán xEMA1 trừ xEMA2 để có được giá tổng hợp DSP.

  4. Cài đặt tham số trên và dưới đường ray, làm nhiều khi DSP lên đường ray và trống khi đi xuống đường ray.

  5. Có thể thực hiện nhiều hướng trống bằng cách chuyển đổi tham số đảo ngược.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. DSP có thể nắm bắt chu kỳ chi phối giá và tránh bị lừa bởi chu kỳ thứ cấp.

  2. Thiết kế EMA kép có thể theo dõi hiệu quả sự thay đổi vòng luân phiên.

  3. Dễ dàng di chuyển, tránh giao dịch quá mức.

  4. Có thể dễ dàng chuyển đổi theo nhiều hướng để thích ứng với các môi trường thị trường khác nhau.

  5. Không cần phải tối ưu hóa các tham số phức tạp, đơn giản và thực tế.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Chu kỳ DSP được thiết lập không chính xác, có thể bỏ lỡ vòng lặp chủ đạo.

  2. Kích thước đường ray trên và dưới cần được tối ưu hóa, nếu không có thể giao dịch quá thường xuyên.

  3. Thiết kế chu kỳ cố định, thích ứng kém với thị trường thay đổi mạnh mẽ.

  4. Chỉ dựa trên giao dịch DSP, dễ bị lừa đảo bởi thị trường rung động.

  5. Không tính đến dừng lỗ, có nguy cơ mất mát lớn.

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

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Tối ưu hóa tham số, tìm kiếm sự kết hợp tham số chu kỳ tốt nhất.

  2. Thêm thiết lập đường ray động dựa trên biến động.

  3. Các chỉ số biến động và xu hướng được lọc để giảm tín hiệu giả.

  4. Tăng mức dừng di động hoặc theo dõi để kiểm soát rủi ro.

  5. Điều chỉnh tham số đa giống để đánh giá tính phổ biến.

  6. Thêm thuật toán học máy để thực hiện tối ưu hóa tự điều chỉnh chu kỳ DSP.

Tóm tắt

Chiến lược tổng thể là một chiến lược giao dịch theo đường hai chiều rất đơn giản và thực tế. Nó được xây dựng trên cơ sở phân tích chu kỳ hợp lý, theo dõi chu kỳ thống trị hiệu quả thông qua DSP. Cải tiến về tối ưu hóa tham số, cơ chế dừng lỗ, điều kiện lọc, v.v., có thể trở thành một chiến lược giao dịch định lượng đáng tin cậy hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-13 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/03/2017
// Detrended Synthetic Price is a function that is in phase with the 
// dominant cycle of real price data. This DSP is computed by subtracting 
// a half-cycle exponential moving average (EMA) from the quarter cycle 
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="D_DSP (Detrended Synthetic Price)", shorttitle="D_DSP")
Length = input(14, minval=1)
SellBand = input(25)
BuyBand = input(-25)
reverse = input(false, title="Trade reverse")
hline(0, color=blue, linestyle=line)
hline(SellBand, color=red, linestyle=line)
hline(BuyBand, color=green, linestyle=line)
xHL2 = hl2
xEMA1 = ema(xHL2, Length)
xEMA2 = ema(xHL2, 2 * Length)
xEMA1_EMA2 = xEMA1 - xEMA2
pos = iff(xEMA1_EMA2 > SellBand, 1,
	     iff(xEMA1_EMA2 < BuyBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xEMA1_EMA2, color=blue, title="D_DSP")