
Chiến lược ADX chọn hai đường trung bình để xác định xu hướng bằng cách kết hợp sử dụng đường trung bình 2 / 20 và chỉ số ADXR để tạo ra tín hiệu giao dịch ở giai đoạn bắt đầu của xu hướng. Chiến lược này sử dụng đường trung bình di chuyển chỉ số 2 / 20 để xác định hướng xu hướng giá, sau đó kết hợp với chỉ số ADXR để xác nhận thêm tín hiệu xu hướng, để tạo ra tín hiệu giao dịch đáng tin cậy hơn.
Logic cốt lõi của chiến lược chọn thời điểm ADX đường hai đều dựa trên các phần sau:
Chỉ số chuyển động trung bình 2⁄20 (EMA)
Chỉ số ADXR
Tín hiệu giao dịch
Sự đổi mới chính của chiến lược này là sử dụng chỉ số ADXR để xác định xu hướng giai đoạn đầu và kết hợp với tín hiệu của chiến lược đồng tuyến truyền thống để cải thiện chất lượng tín hiệu và tăng cường sự ổn định của chiến lược.
Chiến lược chọn ADX đường hai chiều có những lợi thế chính sau:
Các rủi ro chính của chiến lược ADX đường hai là:
Thiết lập tham số ADXR không đúng có thể dẫn đến cơ hội giao dịch bị bỏ lỡ.
Trong những trường hợp đặc biệt, tín hiệu giả có thể xuất hiện nhiều hơn.
Các tham số EMA là cố định, không thể thích ứng với sự thay đổi của thị trường.
Không thể xác định được vùng dao động giá, có thể tạo ra quá nhiều giao dịch không hiệu quả.
Các chiến lược khi chọn ADX đường hai đều có thể được tối ưu hóa hơn nữa từ các khía cạnh sau:
Các tham số của EMA được tối ưu hóa để có thể thay đổi tự động theo thời gian.
Phạm vi tham số ADXR được tối ưu hóa để chứa nhiều tín hiệu giao dịch hiệu quả hơn.
Thêm thêm các chỉ số đánh giá xu hướng, tạo tín hiệu kết hợp, nâng cao chất lượng.
Tăng chiến lược dừng lỗ, thiết lập tiêu chuẩn chặn, kiểm soát rủi ro giao dịch đơn lẻ.
Tối ưu hóa chiến lược quản lý tiền để nó có thể tự động điều chỉnh vị trí theo trạng thái tài khoản.
Chiến lược ADX chọn thời gian hai chiều bằng cách kết hợp sáng tạo của chiến lược hai chiều truyền thống với chỉ số ADXR, cải thiện chất lượng tín hiệu, tăng cường sự ổn định của chiến lược, có thể xác định hiệu quả giai đoạn đầu của xu hướng, phản hồi lịch sử hoạt động tốt hơn. Chiến lược này có không gian tối ưu hóa lớn và có thể cải thiện nhiều mặt, cho phép nó thể hiện khả năng thích ứng mạnh mẽ và lợi nhuận trong thị trường phức tạp hơn.
/*backtest
start: 2023-11-05 00:00:00
end: 2023-12-05 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 04/04/2022
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// The Average Directional Movement Index Rating (ADXR) measures the strength
// of the Average Directional Movement Index (ADX). It's calculated by taking
// the average of the current ADX and the ADX from one time period before
// (time periods can vary, but the most typical period used is 14 days).
// Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening
// and weakening trends. However, because it represents an average of ADX, values
// don't fluctuate as dramatically and some analysts believe the indicator helps
// better display trends in volatile markets.
//
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
pos = 0.0
xPrice = close
xXA = ta.ema(xPrice, Length)
nHH = math.max(high, high[1])
nLL = math.min(low, low[1])
nXS = nLL > xXA or nHH < xXA ? nLL : nHH
iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
pos := nXS > close[1] ? -1 : iff_1
pos
fADX(Len) =>
up = ta.change(high)
down = -ta.change(low)
trur = ta.rma(ta.tr, Len)
plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, Len) / trur)
minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, Len) / trur)
sum = plus + minus
100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), Len)
ADXR(LengthADX,LengthADXR,Signal1,Signal2) =>
pos = 0.0
xADX = fADX(LengthADX)
xADXR = (xADX + xADX[LengthADXR]) / 2
pos := xADXR < Signal1 ? 1 : xADXR > Signal2 ? -1 : nz(pos[1], 0)
pos
strategy(title='Combo 2/20 EMA & ADXR', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ ADXR ═════●'
LengthADX = input(title="Length ADX", defval=14)
LengthADXR = input(title="Length ADXR", defval=14)
Signal1 = input.float(13, step=0.01)
Signal2 = input.float(45, step=0.01)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosADXR = ADXR(LengthADX,LengthADXR,Signal1,Signal2)
iff_1 = posEMA20 == -1 and prePosADXR == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosADXR == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
strategy.entry('Long', strategy.long)
if possig == -1
strategy.entry('Short', strategy.short)
if possig == 0
strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)