Kênh trung bình động kép với chiến lược theo dõi xu hướng

Tác giả:ChaoZhang, Ngày: 2023-11-06 15:41:23
Tags:

img

Tổng quan

Chiến lược này sử dụng các đường trung bình di chuyển nhanh và chậm để xây dựng một hệ thống hai đường ray, kết hợp với chỉ số xu hướng ADX để đánh giá xu hướng và chỉ số hướng DMI để xác định hướng xu hướng, để theo dõi xu hướng sau khi nó được thiết lập và thoát ra đúng lúc khi xu hướng đảo ngược, tránh theo đuổi đỉnh và bán đáy. Nó cũng kết hợp thử nghiệm phạm vi thời gian để kiểm tra hiệu quả của chiến lược trong các khoảng thời gian khác nhau.

Logic giao dịch

  1. Các đường trung bình di chuyển nhanh và chậm xây dựng một hệ thống kênh hai đường ray. Khi MA nhanh vượt qua MA chậm, đó là một tín hiệu bước vào chéo vàng trong thời gian dài. Khi MA nhanh vượt qua dưới MA chậm, đó là một tín hiệu bước ra chéo chết.

  2. ADX đánh giá sự tồn tại và sức mạnh của một xu hướng. Khi ADX nằm trên mức chính, nó chỉ ra rằng một xu hướng tồn tại và mạnh mẽ.

  3. DI + của DMI xác định hướng của xu hướng. Khi DI + dương tính, nó chỉ ra xu hướng tăng. Khi DI + âm tính, nó chỉ ra xu hướng giảm. Các tín hiệu giao dịch chỉ được tạo ra khi hướng xu hướng phù hợp.

  4. Kiểm tra khoảng thời gian kiểm tra hiệu quả của chiến lược trong các khoảng thời gian khác nhau để xác minh.

Phân tích lợi thế

  1. Hệ thống đường ray hai bộ lọc để tránh tín hiệu sai.

  2. ADX tránh giao dịch quá mức trong quá trình hợp nhất bằng cách yêu cầu xu hướng.

  3. DMI đảm bảo giao dịch phù hợp với hướng xu hướng, ngăn chặn giao dịch ngược xu hướng.

  4. Kiểm tra phạm vi thời gian xác minh các tham số và tối ưu hóa cài đặt.

Phân tích rủi ro

  1. Các kênh có thể tạo thành bẫy, đòi hỏi phải dừng lại để tránh chém.

  2. ADX chậm có thể bỏ lỡ cơ hội sớm, đòi hỏi một mức độ khóa thấp hơn.

  3. Sự chậm trễ hướng DMI cũng có thể bỏ lỡ xu hướng ban đầu, cần thời gian ngắn hơn.

  4. Các thông số có thể cần phải điều chỉnh qua các khoảng thời gian.

Tối ưu hóa

  1. Kiểm tra sự kết hợp các tham số để tìm các thiết lập tối ưu.

  2. Thêm các bộ lọc như Bollinger Bands cho chất lượng tín hiệu.

  3. Bao gồm dừng lỗ để giới hạn lỗ.

  4. Tự động tối ưu hóa các thông số bằng máy học.

  5. Bao gồm nhiều yếu tố như tình cảm và tin tức.

Kết luận

Chiến lược này kết hợp các điểm mạnh của các đường trung bình động, chỉ số xu hướng và chỉ số hướng để xác định và theo dõi xu hướng. Trong khi xác minh tính hợp lệ của tham số, tối ưu hóa liên tục là cần thiết để thích nghi với nhiều điều kiện thị trường hơn bằng cách điều chỉnh các tham số, thêm dừng, tổng hợp nhiều yếu tố hơn, v.v., để cải thiện độ mạnh mẽ và lợi nhuận. Nhìn chung, nó cung cấp một xu hướng đáng tin cậy sau phương pháp giao dịch định lượng.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// author: codachang0726
strategy(title = "(S)MA+ADX+DI+time", shorttitle = "(S)MA+ADX+DI+time", overlay = true)

// === INPUT MA LENGTHS ===
fastMA    = input(defval = 7,   title = "FastMA",          minval = 1, step = 1)
slowMA    = input(defval = 14,   title = "SlowMA",          minval = 1, step = 1)

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 9,    title = "From Month",      minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        minval = 1, maxval = 31)
thruYear  = input(defval = 2022, title = "Thru Year",       minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

// === MA LOGIC ===
crossOv   =  sma(close, fastMA) > sma(close, slowMA)     // true when fastMA over slowMA
crossUn   =  sma(close, fastMA) < sma(close, slowMA)     // true when fastMA under slowMA

// DI+ADX
adxlen      = input(14, title="ADX Smoothing")
dilen       = input(14, title="DI Period")
keyLevel    = input(20, title="Keylevel for ADX")
[diplus, diminus, adx] = dmi(dilen, adxlen)
di = (diplus - diminus)

buy = di > 0 and crossOv and adx > keyLevel
sell = di < 0 and crossUn and adx > keyLevel

buy_time = buy and not buy[1]
sell_time = sell and not sell[1]

// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy_time)    // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and sell_time)                   // exit long when "within window of time" AND crossunder         

// === PLOTTING ===
bgcolor(color = showDate and window() ? color.gray : na, transp = 90)                                     // plot "within window of time"
plot(sma(close, fastMA), title = 'FastMA', color = color.yellow, linewidth = 2, style = plot.style_line)  // plot FastMA
plot(sma(close, slowMA), title = 'SlowMA', color = color.aqua,   linewidth = 2, style = plot.style_line)  // plot SlowMA


Thêm nữa