DPD-RSI-BB Chiến lược định lượng

Tác giả:ChaoZhang, Ngày: 2023-11-22 16:17:52
Tags:

img

Tổng quan

Chiến lược định lượng DPD-RSI-BB kết hợp ba chỉ số - DPD, RSI và Bollinger Bands cho giao dịch chứng khoán. Nó sử dụng DPD để xác định xu hướng, RSI để đánh giá mức mua quá mức và bán quá mức và Bollinger Bands để xác định mức hỗ trợ và kháng cự để vào thị trường.

Chiến lược logic

Chiến lược bao gồm các thành phần chính sau:

  1. Chỉ số DPD để xác định xu hướng

    Nó xây dựng đường DEMA bằng cách sử dụng trung bình EMA đôi và tính tỷ lệ chênh lệch giá so với DEMA như một chỉ số xác định xu hướng.

  2. Chỉ số RSI để đánh giá các điều kiện mua quá mức và bán quá mức

    Nó tính toán giá trị RSI trong một khoảng thời gian nhất định. RSI trên giới hạn trên được đánh giá là khu vực mua quá mức và RSI dưới giới hạn dưới được đánh giá là khu vực bán quá mức.

  3. Bollinger Bands để xác định hỗ trợ và kháng cự

    Nó tính toán dải giữa, dải trên và dải dưới trong một khoảng thời gian nhất định. Giá tiếp cận dải trên báo hiệu triển vọng giảm, trong khi giá tiếp cận dải dưới báo hiệu triển vọng tăng.

  4. Phán quyết toàn diện

    Khi tỷ lệ chênh lệch giá DPD thấp hơn ngưỡng, RSI thấp hơn giới hạn dưới của vùng bán quá mức và giá thấp hơn dải trên Bollinger, một tín hiệu tăng được tạo ra. Khi tỷ lệ chênh lệch giá RSI cao hơn giới hạn trên dải mua quá mức, tỷ lệ chênh lệch giá DPD cao hơn ngưỡng và giá cao hơn dải trên Bollinger, một tín hiệu giảm được tạo ra.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Phán quyết toàn diện sử dụng nhiều chỉ số tránh các tín hiệu sai từ một chỉ số duy nhất.

  2. Sử dụng chỉ số RSI để đánh giá các điều kiện mua quá mức và bán quá mức cho phép thiết lập điểm dừng lỗ và lấy lợi nhuận trước.

  3. Chỉ số DPD có thể xác định tốt hơn xu hướng giá, trong khi Bollinger Bands có thể xác định mức hỗ trợ và kháng cự.

  4. Cài đặt tham số linh hoạt cho phép tối ưu hóa cho các cổ phiếu khác nhau.

Rủi ro và tối ưu hóa

Chiến lược này cũng có một số rủi ro:

  1. Sự kết hợp của nhiều chỉ số làm cho chiến lược khá phức tạp với khó khăn trong điều chỉnh tham số.

  2. Các chỉ số như DPD và RSI có một số trễ nhất định, có thể bỏ lỡ thời gian vào tốt nhất.

  3. Các thông số cần được tối ưu hóa để phù hợp với các chu kỳ và đặc điểm khác nhau của cổ phiếu.

Các khía cạnh sau đây có thể được tối ưu hóa:

  1. Điều chỉnh các thông số chỉ số để tối ưu hóa các điểm vào và ra.

  2. Thêm các cơ chế dừng lỗ để kiểm soát chặt chẽ mỗi lỗ giao dịch.

  3. Thử nghiệm trên các cổ phiếu và các tham số chu kỳ khác nhau để đánh giá hiệu suất chiến lược.

Kết luận

Chiến lược DPD-RSI-BB kết hợp nhiều chỉ số để đánh giá để tránh tín hiệu sai từ một chỉ số duy nhất. Thông qua tối ưu hóa tham số, nó có thể trở thành một chiến lược giao dịch chứng khoán tương đối mạnh. Nhưng do sự phức tạp của nó, nó vẫn có thể không hoàn toàn phòng ngừa rủi ro thị trường và nên được sử dụng thận trọng.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 2
strategy("DPD+RSI+BB ",overlay=true)
price=close




//############### DPD  #################


buyper =input(-1,step=0.1)
sellper=input(0,step=0.1)
demalen = input(50,title="Dema Length")
e1= ema(close,demalen)
e2=ema(e1,demalen)
demaprice  =   2 * e1 - e2
demadifper =  ((price-demaprice)/price)*100


//############## DPD #####################

//############# RSI ####################


lengthrsi = input(6)
overSold = input( 20 )
overBought = input( 60 )

vrsi = rsi(price, lengthrsi)

//########## RSI #######################

//############### BB #################

lengthbb = input(50, minval=1)
multlow = input(1.5, minval=0.001, maxval=50,step=0.1)
multup = input(1.5,minval=0.001,maxval=50,step=0.1)

basisup = sma(close, lengthbb)
basislow = sma(close, lengthbb)

devup = multup * stdev(close, lengthbb)

devlow = multlow*stdev(close,lengthbb)

upperbb = basisup + devup
lowerbb = basislow - devlow

p1 = plot(upperbb, color=blue)
p2 = plot(lowerbb, color=blue)
fill(p1, p2)



//########### BB ###################




yearfrom = input(2018)
yearuntil =input(2039)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  (demadifper<buyper) and crossover(vrsi,overSold) and  (price < upperbb) and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if (   price>upperbb and vrsi>overBought and demadifper>sellper   and  year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND",  comment="SELL")
else
    strategy.cancel(id="SELL")
    
    
    

Thêm nữa