Chiến lược thời gian ADX trung bình động kép

Tác giả:ChaoZhang, Ngày: 2023-12-06 15:48:29
Tags:

img

Tổng quan

Chiến lược thời gian ADX chuyển động kép xác định xu hướng bằng cách kết hợp các đường trung bình chuyển động 2/20 và chỉ số ADXR để tạo ra tín hiệu giao dịch vào đầu xu hướng.

Chiến lược logic

Lý thuyết cốt lõi của chiến lược ADX Dual Moving Average Timing dựa trên các thành phần chính sau:

  1. 2/20 Trung bình Di chuyển biểu thức (EMA)

    • Sử dụng 2 EMA với các tham số khác nhau là 2 và 20 ngày.
    • Một đường chéo giá lên trên đường EMA 2 ngày được coi là tín hiệu tăng.
    • Một đường chéo giảm giá dưới đường EMA 20 ngày được coi là tín hiệu giảm.
  2. Chỉ số ADXR

    • ADXR là một biến thể của chỉ số ADX.
    • Nó tính toán một trung bình di chuyển đơn giản của ADX để làm mịn các biến động.
    • ADXR dưới một ngưỡng ngụ ý xu hướng yếu hơn.
    • ADXR trên ngưỡng ngụ ý xu hướng mạnh hơn.
  3. Các tín hiệu giao dịch

    • Một tín hiệu tăng được tạo ra khi EMA Golden Cross và ADXR 2 ngày cao hơn ngưỡng.
    • Một tín hiệu giảm được tạo ra khi EMA 20 ngày Dead Cross AND ADXR thấp hơn ngưỡng.
    • Kết hợp với ADXR lọc ra một số đột phá sai và tăng cường tín hiệu xu hướng thực sự.

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 ban đầu và kết hợp nó với các tín hiệu trung bình động truyền thống để cải thiện chất lượng và sự ổn định.

Ưu điểm

Những lợi thế chính của chiến lược ADX Dual Moving Average:

  1. Kết hợp hai MAs và ADXR, các tín hiệu chính xác và đáng tin cậy hơn với các tín hiệu sai được lọc ra.
  2. Xác định xu hướng sớm bằng cách sử dụng ADXR để phát hiện giai đoạn ban đầu của xu hướng.
  3. Điều chỉnh tham số ADXR linh hoạt để thích nghi với các điều kiện thị trường thay đổi.
  4. Logic đơn giản và rõ ràng, dễ hiểu, thuận tiện để điều chỉnh các thông số.
  5. Áp dụng trong nhiều môi trường thị trường khác nhau với hiệu suất lịch sử tốt.

Rủi ro

Ngoài ra còn có một số rủi ro chính cho chiến lược này:

  1. Việc thiết lập tham số ADXR không chính xác có thể dẫn đến việc bỏ lỡ giao dịch.

    • Mở rộng phạm vi tham số ADXR hoặc điều chỉnh theo sản phẩm.
  2. Nhiều tín hiệu sai có thể xảy ra trong điều kiện thị trường đặc biệt.

    • Xem xét kết hợp với các chỉ số khác để lọc tín hiệu thêm.
  3. Các thông số EMA cố định không thích nghi với những thay đổi của thị trường.

    • Phiên bản tối ưu hóa thử nghiệm với các thông số EMA thích nghi.
  4. Không thể xác định phạm vi giao dịch, có thể tạo ra các giao dịch quá nhỏ.

    • Thêm thêm logic hoặc chỉ số để phát hiện thị trường dao động.

Hướng dẫn cải thiện

Chiến lược có thể được tối ưu hóa và nâng cao hơn nữa từ các khía cạnh sau:

  1. Tối ưu hóa tham số EMA để thích nghi tự động với điều kiện thị trường.

  2. Mở rộng phạm vi tham số ADXR để nắm bắt các tín hiệu giao dịch hiệu quả hơn.

  3. Thêm các chỉ số đánh giá xu hướng bổ sung cho các tín hiệu kết hợp để cải thiện chất lượng.

  4. Thêm các chiến lược dừng lỗ và áp dụng các tiêu chuẩn lợi nhuận để kiểm soát rủi ro mỗi giao dịch.

  5. Tối ưu hóa quản lý tiền cho kích thước vị trí năng động dựa trên tình trạng tài khoản.

Kết luận

Chiến lược thời gian ADX chuyển động kép kết hợp sáng tạo giữa các đường trung bình chuyển động kép truyền thống và chỉ số ADXR để cải thiện chất lượng tín hiệu và tăng tính ổn định. Nó có thể xác định hiệu quả giai đoạn đầu của xu hướng với hiệu suất lịch sử tốt. Chiến lược có nhiều chỗ để tối ưu hóa để làm cho nó mạnh mẽ và có lợi nhuận trên các 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)

Thêm nữa