Chiến lược này chủ yếu là sử dụng các chỉ số ADX để xác định xu hướng và xây dựng đường trung bình di chuyển kết hợp với hai thiết lập tham số khác nhau của MA và EMA để xây dựng chiến lược theo dõi xu hướng chỉ làm nhiều hơn. Khi ADX tăng, nhắc nhở làm nhiều hướng, và khi giá phá vỡ MA và EMA lên, hãy mở nhiều vị trí; khi ADX giảm hoặc giá phá vỡ một trong hai MA hoặc EMA.
Chiến lược này chủ yếu sử dụng ADX để xác định xu hướng và cường độ của thị trường. ADX xác định sự tồn tại và cường độ của xu hướng bằng cách tính toán mức độ và hướng thay đổi của giá. Khi ADX tăng, nó cho thấy hiện tại nó đang trong một xu hướng tăng; khi ADX giảm, nó cho thấy xu hướng đang suy yếu.
Chiến lược này sử dụng MA và EMA trung bình di chuyển với hai thiết lập tham số khác nhau để đưa ra phán đoán hỗ trợ. Chúng có thể loại bỏ sự ngẫu nhiên của giá một cách hiệu quả, cho thấy xu hướng chính của giá.
Kết hợp các đặc điểm của ADX và đường trung bình di chuyển, chiến lược này xây dựng các tín hiệu giao dịch để xác định hướng xu hướng: ADX tăng và mở thêm khi giá vượt qua đường MA và EMA, ADX giảm hoặc giá giảm khi MA / EMA bằng, thực hiện một chiến lược theo dõi xu hướng.
Chiến lược này có một số ưu điểm:
Chiến lược này cũng có một số rủi ro:
Giải pháp tương ứng:
Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược tổng thể này là một chiến lược theo dõi xu hướng chỉ làm nhiều sử dụng ADX để đánh giá cường độ xu hướng và hỗ trợ xây dựng tín hiệu lọc bằng hai đường trung bình di chuyển. Nó kiểm soát hiệu quả sự xuất hiện của các giao dịch không hiệu quả, thực hiện hiệu quả của việc theo dõi xu hướng, là một chiến lược theo dõi xu hướng chỉ làm nhiều ổn định hơn.
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("ADX, MA, and EMA Long Strategy - ADX Trending Up", shorttitle="ADX_MA_EMA_Long_UpTrend", overlay=true)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
maPeriod = input(50, title="MA Period")
emaPeriod = input(50, title="EMA Period")
dirmov(len) =>
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
maValue = sma(close, maPeriod)
emaValue = ema(close, emaPeriod)
longCondition = sig > sig[1] and close > maValue and close > emaValue
if (longCondition)
strategy.entry("Long", strategy.long)
exitCondition = sig < sig[1] or close < maValue or close < emaValue
if (exitCondition)
strategy.close("Long")
plot(maValue, color=color.blue, title="MA")
plot(emaValue, color=color.orange, title="EMA")
plot(sig, color=color.red, title="ADX")