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


Ngày tạo: 2023-11-06 15:41:23 sửa đổi lần cuối: 2023-11-06 15:41:23
sao chép: 0 Số nhấp chuột: 558
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

Chiến lược này sử dụng đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm để xây dựng hệ thống kép, kết hợp với chỉ số xu hướng ADX để đánh giá xu hướng, và chỉ số chuyển động DMI để đánh giá hướng xu hướng, thực hiện theo dõi xu hướng sau khi xu hướng được thiết lập, thoát ra kịp thời khi xu hướng đảo ngược, tránh bị ngã.

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

  1. Đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm xây dựng hệ thống song song. Khi đi qua đường trung bình di chuyển chậm trên đường trung bình di chuyển nhanh, cho tín hiệu nứt vàng, làm nhiều đầu vào; Khi đi qua đường trung bình di chuyển chậm dưới đường trung bình di chuyển nhanh, cho tín hiệu nứt chết, rời khỏi sân.

  2. ADX được sử dụng để đánh giá sự tồn tại và sức mạnh của xu hướng. Khi ADX lớn hơn giá trị quan trọng được thiết lập, nó được coi là xu hướng tồn tại và xu hướng mạnh. Chỉ khi xu hướng mạnh, nó sẽ tạo ra tín hiệu giao dịch.

  3. DI+ trong DMI được sử dụng để đánh giá xu hướng. Khi DI+ là tích cực, xu hướng sẽ tăng; khi DI+ là âm, xu hướng sẽ giảm. Chỉ khi được đánh giá phù hợp với hướng xu hướng, tín hiệu giao dịch sẽ được tạo ra.

  4. Kết hợp với thử nghiệm phạm vi thời gian, có thể đo lại hiệu quả của chiến lược trong các khoảng thời gian khác nhau để xác minh chiến lược.

Phân tích lợi thế

  1. Sử dụng hệ thống hai đường ray, bạn có thể lọc sự phá vỡ, tránh phá vỡ giả gây ra thiệt hại.

  2. Sử dụng ADX để đánh giá xu hướng và độ mạnh của nó, tránh giao dịch thường xuyên trong thời gian chấn động.

  3. Sử dụng DMI để xác định xu hướng, đảm bảo hoạt động phù hợp với xu hướng và tránh giao dịch ngược.

  4. Thử nghiệm phạm vi thời gian có thể xác minh xem tham số chiến lược có hiệu quả trong các trường hợp khác nhau hay không, và tối ưu hóa các thiết lập tham số.

Phân tích rủi ro

  1. Hệ thống hai đường ray dễ bị bẫy không đầu hoặc bẫy nhiều đầu, cần cảnh giác giá phải điều chỉnh lại để thoát khỏi sự cố.

  2. ADX đánh giá rằng có sự chậm trễ và có thể bỏ lỡ cơ hội trong giai đoạn đầu của xu hướng, có thể làm giảm giá trị quan trọng.

  3. DMI đánh giá hướng cũng có sự chậm trễ, cũng có thể bỏ lỡ xu hướng ban đầu, có thể rút ngắn tham số chu kỳ.

  4. Các thiết lập tham số có thể cần điều chỉnh trong các khoảng thời gian khác nhau, và các tham số cần được tối ưu hóa để phù hợp với hoàn cảnh.

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

  1. Bạn có thể thử nghiệm các tổ hợp tham số của các chu kỳ khác nhau để tìm tham số tốt nhất.

  2. Nó có thể được kết hợp với các chỉ số khác như đường Brin để lọc kép, cải thiện chất lượng tín hiệu.

  3. Bạn có thể thêm các chiến lược dừng lỗ để tránh sự gia tăng tổn thất.

  4. Các tham số có thể được tự động tối ưu hóa bằng phương pháp học máy.

  5. Có thể kết hợp các yếu tố khác như chỉ số cảm xúc, mặt tin tức để cải thiện hiệu quả chiến lược.

Tóm tắt

Chiến lược này tích hợp các lợi thế của đường trung bình di chuyển, chỉ số xu hướng và chỉ số chuyển động, để thực hiện phán đoán và theo dõi xu hướng. Trong khi xác minh tính hiệu quả của các tham số của nó, vẫn cần phải được tối ưu hóa liên tục để thích ứng với nhiều tình huống thị trường, điều chỉnh tham số, chiến lược dừng lỗ, tổng hợp đa yếu tố và nhiều hơn nữa để cải thiện sự ổn định và lợi nhuận của chiến lược.

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