Tài nguyên đang được tải lên... tải...

ADX、RSI Chiến lược chỉ số động lực

Tác giả:ChaoZhang, Ngày: 2023-12-11 16:06:30
Tags:

img

Tổng quan

Chiến lược này sử dụng các chỉ số động lực ADX, RSI và Bollinger Bands để xác định xu hướng thị trường và tình huống mua quá mức / bán quá mức, để thực hiện giao dịch tự động để mua thấp và bán cao.

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

  1. Chỉ số ADX xác định xu hướng. Khi ADX lớn hơn 32, nó cho thấy thị trường đang có xu hướng.

  2. Chỉ số RSI xác định mức mua quá mức / bán quá mức. Khi RSI vượt trên 30, nó báo hiệu thị trường bán quá mức. Khi RSI vượt dưới 70, nó báo hiệu thị trường mua quá mức.

  3. Bollinger Bands xác định sự củng cố và phá vỡ. Khi giá đóng phá vỡ trên dải trên, nó báo hiệu kết thúc sự củng cố và phá vỡ tăng. Khi giá đóng phá vỡ dưới dải dưới, nó báo hiệu kết thúc sự củng cố và phá vỡ giảm.

Dựa trên các chỉ số trên, chiến lược giao dịch được xác định như sau:

Điều kiện mua:

  1. ADX>32, theo xu hướng
  2. Chỉ số RSI vượt trên 30, bán quá mức
  3. Giá đóng cửa dưới dải Bollinger thấp hơn, kết thúc việc củng cố xu hướng giảm

Điều kiện bán:

  1. ADX>32, theo xu hướng
  2. RSI vượt dưới 70, mua quá mức
  3. Giá đóng cửa trên dải Bollinger phía trên, kết thúc việc củng cố xu hướng tăng

Phân tích lợi thế

Chiến lược này sử dụng nhiều chỉ số để xác định điều kiện thị trường, tránh khả năng sai lầm khi dựa vào một chỉ số duy nhất. Bằng cách xác định xu hướng và tình trạng mua quá mức / bán quá mức, nó có thể nắm bắt hiệu quả các bước ngoặt của thị trường và đạt được mức bán thấp.

So với việc sử dụng chỉ số xu hướng một mình, chiến lược này có thể nắm bắt các cơ hội ngắn hạn một cách kịp thời hơn. So với việc sử dụng chỉ các dao động, chiến lược này có thể nắm bắt tốt hơn hướng xu hướng. Do đó, nó giữ được lợi thế theo dõi xu hướng, đồng thời có tính linh hoạt của giao dịch đảo ngược trung bình. Đây là một chiến lược định lượng có khả năng hiệu quả.

Phân tích rủi ro

Những rủi ro chính của chiến lược này bao gồm:

  1. Rủi ro của các tín hiệu sai từ các chỉ số. Các chỉ số có thể thất bại khi thị trường gặp các sự kiện cực đoan.

  2. Rủi ro của các điểm dừng quá chặt chẽ.

  3. Nguy cơ quá phù hợp: Nếu các tham số chỉ số chỉ được điều chỉnh dựa trên dữ liệu lịch sử, sự ổn định sẽ đáng nghi ngờ và có thể không thích nghi với sự thay đổi của thị trường.

Các biện pháp quản lý rủi ro:

  1. Can thiệp thủ công trong điều kiện thị trường bất thường để tạm dừng chiến lược và tránh tổn thất do tín hiệu sai.

  2. Đặt khoảng cách dừng hợp lý, kết hợp với các đường trung bình động để xác định mức dừng, tránh bị dừng sớm.

  3. giới thiệu mô-đun điều chỉnh tham số, tối ưu hóa các tham số bằng cách sử dụng Walk Forward Analysis để đảm bảo độ bền.

Hướng dẫn tối ưu hóa

Các khía cạnh chính để cải thiện chiến lược này bao gồm:

  1. Tối ưu hóa các thông số chỉ số, sử dụng các thuật toán học máy phù hợp với từng thị trường.

  2. Kỹ thuật tính năng, giới thiệu nhiều chỉ số kỹ thuật và mô hình đào tạo như SVM để cải thiện độ chính xác tín hiệu.

  3. Bao gồm các chiến lược phá vỡ dựa trên đặc điểm của mỗi thị trường bằng cách sử dụng các kênh giá, hỗ trợ / kháng cự vv để tăng cường sự ổn định.

  4. Tối ưu hóa các cơ chế lấy lợi nhuận và dừng lỗ bằng cách giới thiệu các điểm dừng, dừng di chuyển, v.v. để tối đa hóa lợi nhuận và kiểm soát rủi ro một cách hiệu quả.

Kết luận

Chiến lược giao dịch định lượng trung hạn này sử dụng nhiều chỉ số kỹ thuật như ADX, RSI và Bollinger Bands để xác định điều kiện thị trường và thực hiện giao dịch khi có những thay đổi cấu trúc quan trọng được xác định.


/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("DAX Shooter 5M Strategy", overlay=true)

//Creo ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", type=input.integer, defval=20)
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
    adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
    adx


[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)

//Creo RSI

src = close
len = input(7, minval=1, title="Periodo RSI")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
bandainf = input(30, title="Livello Ipervenduto")
bandasup = input(70, title="Livello Ipercomprato")


//Creo Bande di Bollinger

source = close
length = input(50, minval=1, title="Periodo BB")
mult = input(2.0, minval=0.001, maxval=50, title="Dev BB")

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.white)
p1 = plot(upper, color=color.aqua)
p2 = plot(lower, color=color.aqua)
fill(p1, p2)

//Stabilisco regole di ingresso

if crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
    strategy.entry("COMPRA", strategy.long, limit=upper, oca_name="DaxShooter", comment="COMPRA")
else
    //strategy.exit("exit", "COMPRA", loss = 90) 
    strategy.cancel(id="COMPRA")

if crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
    strategy.entry("VENDI", strategy.short, limit=lower, oca_name="DaxShooter",comment="VENDI")
else
    //strategy.exit("exit", "VENDI", loss = 90)
    strategy.cancel(id="VENDI")

//Imposto gli alert
buy= crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
sell= crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
alertcondition(buy, title='Segnale Acquisto', message='Compra DAX')
alertcondition(sell, title='Segnale Vendita', message='Vendi DAX')

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Thêm nữa