Sử dụng Chiến lược đột phá RSI hai chiều


Ngày tạo: 2023-12-27 14:33:15 sửa đổi lần cuối: 2023-12-27 14:33:15
sao chép: 0 Số nhấp chuột: 974
1
tập trung vào
1623
Người theo dõi

Sử dụng Chiến lược đột phá RSI hai chiều

Tổng quan

Chiến lược phá vỡ RSI hai chiều là một chiến lược giao dịch thuật toán sử dụng chỉ số RSI để xác định điểm đảo ngược giá. Nó đánh giá liệu thị trường có vượt quá mức bán tháo và phát ra tín hiệu giao dịch bằng cách so sánh chỉ số RSI với giá trị tháo gỡ trên hoặc dưới.

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

Chiến lược này dựa chủ yếu vào chỉ số RSI để đánh giá tình hình. Chỉ số RSI được tính dựa trên sự thay đổi của giá đóng cửa trong một khoảng thời gian nhất định, nó phản ánh xu hướng mua bán của cổ phiếu. Khi RSI vượt qua mức giá trên (bằng mặc định 75), nó cho thấy cổ phiếu đã vào khu vực mua quá mức; khi RSI vượt qua mức giá dưới (bằng mặc định 25), nó cho thấy cổ phiếu đã vào khu vực bán quá mức.

Quy tắc phán quyết chiến lược:

  1. Khi RSI đi xuống, bạn sẽ thả lỗ.
  2. Làm nhiều hơn khi RSI vượt ngưỡng;
  3. Hạn chế hoặc dừng lại sau khi thanh toán.

Nó có logic giao dịch đơn giản và rõ ràng, tham số tham chiếu được thiết lập hợp lý, có thể cấu hình rộng rãi, phù hợp để chụp xu hướng lớn hơn trong thị trường.

Phân tích lợi thế

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

  1. Nó có thể được sử dụng để tạo ra một hệ thống thông tin, một hệ thống thông tin, một hệ thống thông tin.
  2. Các tham số tham chiếu được thiết lập hợp lý, có thể được cấu hình cá nhân hóa;
  3. Có thể cấu hình logic giao dịch đảo ngược, đáp ứng linh hoạt;
  4. Nó có thể xác định hiệu quả các điểm đảo ngược giá và nắm bắt các xu hướng lớn.

Nhìn chung, các tham số tham chiếu của chiến lược được thiết lập hợp lý, dễ thực hiện, có thể xác định hiệu quả sự đảo ngược giá thông qua chỉ số RSI, phù hợp để nắm bắt xu hướng lớn của thị trường đường dài và đường dài, là một chiến lược định lượng dễ sử dụng.

Phân tích rủi ro

Mặc dù chiến lược này đơn giản và đáng tin cậy, nhưng chúng ta không thể bỏ qua những rủi ro tiềm ẩn:

  1. Chỉ số RSI có khả năng phát tín hiệu sai. RSI không thể dự đoán hoàn hảo sự đảo ngược giá, có thể xảy ra sai lầm.
  2. Các chỉ số RSI có thể khó phân biệt giữa điều chỉnh phạm vi bình thường và đảo ngược xu hướng.
  3. RSI không có khả năng đánh giá hiệu quả các biến động, trong môi trường này, chiến lược mất mát được tăng lên.

Để kiểm soát rủi ro, chúng ta cần lưu ý những điều sau đây:

  1. Điều chỉnh các tham số một cách thích hợp để ngăn chặn tỷ lệ sai lệch quá cao;
  2. Cải thiện độ chính xác của tín hiệu giao dịch, kết hợp với các chỉ số khác;
  3. Tăng tỷ lệ dừng để giảm lỗ hổng đơn.
  4. Hãy cẩn thận và tránh giao dịch có thể xảy ra động đất.

Hướng tối ưu hóa

Với chiến lược này chủ yếu có nguy cơ bị đánh giá sai lầm và mất mát do biến động, chúng ta có thể tối ưu hóa từ các khía cạnh sau:

  1. Trình lọc tín hiệu kết hợp với các chỉ số khác. Các chỉ số như KDJ, MACD có thể đóng vai trò lọc, tránh sai lầm.
  2. Tăng giới hạn dừng lỗ duy nhất có điều kiện. Kích thước dừng lỗ duy nhất được mở rộng một cách thích hợp, giúp chiến lược hoạt động theo xu hướng lớn.
  3. Thiết lập giới hạn tần suất mở vị trí. Thêm ngưỡng logic chỉ giao dịch một lần hoặc N lần mỗi chu kỳ, có thể kiểm soát việc mở vị trí quá dày đặc.
  4. Thiết lập đánh giá tình trạng thị trường. Chiến lược đánh giá chỉ hoạt động trong thị trường xu hướng, tránh thị trường chấn động, có thể tối ưu hóa đáng kể tỷ lệ rủi ro lợi nhuận của chiến lược.

Tóm tắt

Chiến lược phá vỡ RSI hai chiều nói chung là một chiến lược định lượng đơn giản và thực tế. Nó phán đoán giá đảo ngược bằng chỉ số RSI, thực hiện theo dõi xu hướng đơn giản. Mặc dù có một số rủi ro sai lầm, nhưng có thể được tối ưu hóa thông qua điều chỉnh tham số và lọc tín hiệu, đóng vai trò quan trọng trong việc nắm bắt xu hướng đường dài.

Mã nguồn chiến lược
/*backtest
start: 2023-12-19 00:00:00
end: 2023-12-26 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI Algo", overlay=true)

// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

time_cond = true


myPeriod = input(defval=14, type=input.integer, title="Period")
myThresholdUp = input(defval=75, type=input.float, title="Upper Threshold")
myThresholdDn = input(defval=25, type=input.float, title="Lower Threshold")
myAlgoFlipToggle = input(defval=false, type=input.bool, title="Imverse Algorthim")
myLineToggle = input(defval=true, type=input.bool, title="Show Lines")
myLabelToggle = input(defval=true, type=input.bool, title="Show Labels")
myRSI=rsi(close, myPeriod)
buy = myAlgoFlipToggle ? falling(myRSI,1) and cross(myRSI, myThresholdDn) : rising(myRSI, 1) and cross(myRSI,myThresholdUp) //and time_cond
sell = myAlgoFlipToggle ? rising(myRSI, 1) and cross(myRSI,myThresholdUp) : falling(myRSI,1) and cross(myRSI, myThresholdDn) //and time_cond
myPosition = 0
myPosition := buy==1 ? 0 : sell==1 or myPosition[1]==1 ? 1 : 0
trendColor = buy ? color.red : sell ? color.green : na
plot(myLineToggle ? buy and myPosition[1]==1 ? low - 0.004: sell and myPosition[1]==0 ? high + 0.004 : na : na, color=trendColor, style=plot.style_line, linewidth=4, editable=false)
plotshape(myLabelToggle ? buy and myPosition[1]==1 ? low - 0.005 : na : na, style=shape.labelup, location=location.absolute, text="Buy", transp=0, textcolor = color.white, color=color.black, editable=false)
plotshape(myLabelToggle ? sell and myPosition[1]==0 ? high + 0.005 : na : na, style=shape.labeldown, location=location.absolute, text="Sell", transp=0, textcolor = color.white, color=color.black, editable=false)

strategy.initial_capital = 50000
    //Calculate the size of the next trade
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(2,type=input.float,title="Risk %")/100           //risk % per trade
isTwoDigit = input(false,"Is this a 2 digit pair? (JPY, XAU, XPD...")


stop = input(250, title="stop loss pips")
tp = input(2500, title="take profit pips")
if(isTwoDigit)
    stop := stop/100
    
temp01 = balance * risk     //Risk in USD
temp02 = temp01/stop        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = 1
    
strategy.entry("long",1,size,when=buy and myPosition[1]==1 )
strategy.entry("short",0,size,when=sell and myPosition[1]==0)

strategy.exit("exit_long","long",loss=stop, profit=tp)      //Long exit (stop loss)
strategy.exit("exit_short","short",loss=stop, profit=tp)      //Short exit (stop loss)

//strategy.close_all(when= not time_cond)