RSI Oscillator Turtle Trading Chiến lược ngắn hạn

Tác giả:ChaoZhang, Ngày: 2023-11-14
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch ngắn hạn sử dụng chỉ số RSI dựa trên các quy tắc giao dịch rùa. Nó kết hợp chỉ số RSI và chỉ số Williams Alligator để thực hiện các giao dịch chống xu hướng khi chỉ số RSI bước vào vùng mua quá nhiều hoặc bán quá nhiều.

Chiến lược logic

Chiến lược này chủ yếu dựa trên các nguyên tắc sau:

  1. Sử dụng các quy tắc giao dịch rùa, chỉ vào thị trường khi có một sự đảo ngược rõ ràng, áp dụng một cách tiếp cận giao dịch tương đối bảo thủ.

  2. Sử dụng chỉ số RSI để đánh giá các điều kiện mua quá mức / bán quá mức. Khi đường RSI bước vào khu vực mua quá mức (thất định trên 60) hoặc khu vực bán quá mức (thất định dưới 40), nó cho thấy thị trường đang ở điểm đảo ngược, sau đó thực hiện các giao dịch ngược xu hướng.

  3. Kết hợp chỉ số Williams Alligator để xác định xu hướng thị trường. Đi ngắn chỉ khi Alligator cho thấy ba đường (Lips, Teeth, Jaw) thẳng hàng trong xu hướng giảm; đi dài chỉ khi ba đường thẳng hàng trong xu hướng tăng.

  4. Sử dụng chỉ số RSI của chỉ số RSI để đánh giá các điều kiện mua quá mức / bán quá mức của chỉ số RSI, tạo ra hiệu ứng lọc kép. Chỉ khi đường RSI bước vào vùng mua quá mức / bán quá mức, và chỉ số RSI của chỉ số RSI cũng bước vào vùng mua quá mức / bán quá mức, các tín hiệu giao dịch sẽ được kích hoạt.

  5. Thiết lập lệnh dừng lỗ và lấy lợi nhuận. Đóng vị trí để kiếm lợi nhuận hoặc dừng lỗ khi giá đảo ngược để chạm vào lệnh lấy lợi nhuận hoặc dừng lỗ.

Phân tích lợi thế

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

  1. Việc áp dụng các quy tắc thương mại rùa mạnh mẽ, chỉ vào thị trường khi có một sự đảo ngược rõ ràng, có thể tránh những rủi ro lớn khi thị trường biến động.

  2. Sử dụng chỉ số RSI để xác định các điểm đảo ngược thị trường, chỉ số đơn giản và rõ ràng, dễ vận hành.

  3. Kết hợp chỉ số Alligator để xác định hướng xu hướng tránh giao dịch chống lại xu hướng.

  4. Thiết lập dừng lỗ và lấy lợi nhuận khóa trong lợi nhuận và kiểm soát rủi ro.

  5. Dễ dàng tối ưu hóa các tham số. Các tham số RSI và tiêu chí nhập / xuất có thể được điều chỉnh cho các thị trường khác nhau để tối ưu hóa chiến lược.

Phân tích rủi ro

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

  1. Có khả năng có tín hiệu sai từ chỉ số RSI. RSI có thể cung cấp tín hiệu mua quá mức / bán quá mức không chính xác. Kết hợp Alligator có thể làm giảm các tín hiệu sai.

  2. Một lỗ dừng quá rộng có thể dẫn đến tổn thất lớn hơn.

  3. Sự đảo ngược có thể không xảy ra chính xác ở các vùng mua quá mức / bán quá mức RSI. Thay đổi chế độ thị trường có thể thay đổi các điểm đảo ngược, các tham số nên được điều chỉnh phù hợp.

  4. Số lượng giao dịch có thể thấp, phải đối mặt với thời gian không giao dịch.

  5. Các thị trường xu hướng kéo dài có thể làm cho giao dịch ngắn hạn khó khăn. Thời gian giữ nên được điều chỉnh kịp thời, kéo dài hoặc rút ngắn khung thời gian giao dịch.

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

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa các thông số RSI, điều chỉnh các khu vực mua quá mức / bán quá mức để thích nghi với các thị trường khác nhau.

  2. Điều chỉnh các thông số Alligator để cải thiện độ chính xác xác xác định hướng xu hướng.

  3. Tối ưu hóa các thiết lập dừng lỗ và lấy lợi nhuận để tối đa hóa kiểm soát rút tiền và khóa nhiều lợi nhuận hơn.

  4. Kết hợp với các chỉ số khác như KDJ, MACD vv để cải thiện độ chính xác tín hiệu.

  5. Thêm lỗ dừng tự động, dừng lỗ để kiểm soát tốt hơn lỗ giao dịch duy nhất.

  6. Tối ưu hóa kích thước vị trí trong các điều kiện thị trường khác nhau để quản lý rủi ro.

  7. Tối ưu hóa các phiên giao dịch, giao dịch vào những lúc xu hướng rõ ràng hơn.

Tóm lại

Tóm lại, đây là một chiến lược giao dịch ngắn hạn tương đối mạnh mẽ. Nó áp dụng cách tiếp cận giao dịch rùa bảo thủ, sử dụng chỉ số RSI để xác định các điểm đảo ngược và kết hợp chỉ số Alligator để đánh giá hướng xu hướng, có thể tránh các giao dịch có rủi ro cao như theo đuổi đỉnh và đáy, và khóa lợi nhuận tương đối ổn định. Bằng cách tối ưu hóa các tham số, dừng lỗ / lấy lợi nhuận, kết hợp các chỉ số khác, chiến lược có thể được cải thiện liên tục. Nhìn chung, chiến lược này phù hợp với các nhà đầu tư quan tâm đến giao dịch ngược xu hướng và theo đuổi lợi nhuận ổn định.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-11-07 20:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4

strategy(title="RSI of Ultimate Oscillator [SHORT Selling] Strategy",  shorttitle="RSIofUO" , overlay=false, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed,

	
//Ultimate Oscillator logic copied from  TradingView   builtin indicator
/////////////////////////////////////////////////////////////////////////////////
length1 = input(5, minval=1), length2 = input(10, minval=1), length3 = input(15, minval=1)


rsiUOLength = input(5, title="RSI UO length", minval=1)

sellLine = input (60, title="Sell at RSIofUO")
coverLine = input (75, title="Cover at RSIofUO")

riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(3,title="Stop Loss",minval=1)


showUO=input(false, "show Ultimate Oscialltor")



average(bp, tr_, length) => sum(bp, length) / sum(tr_, length)
high_ = max(high, close[1])
low_ = min(low, close[1])
bp = close - low_
tr_ = high_ - low_
avg7 = average(bp, tr_, length1)
avg14 = average(bp, tr_, length2)
avg28 = average(bp, tr_, length3)
out = 100 * (4*avg7 + 2*avg14 + avg28)/7
//Ultimate Oscillator 
/////////////////////////////////////////////////////////////////////////////////

//Willimas Alligator  copied from  TradingView built in Indicator
/////////////////////////////////////////////////////////////////////////////////
smma(src, length) =>
	smma =  0.0
	smma := na(smma[1]) ? sma(src, length) : (smma[1] * (length - 1) + src) / length
	smma

//moving averages logic copied from Willimas Alligator -- builtin indicator in TradingView
sma1=smma(hl2,10)
sma2=smma(hl2,20)
sma3=smma(hl2,50)

//Willimas Alligator
/////////////////////////////////////////////////////////////////////////////////


//drawings
/////////////////////////////////////////////////////////////////////////////////
hline(sellLine, title="Middle Line 60  [Short Here]", color=color.red , linestyle=hline.style_solid)

obLevelPlot = hline(75, title="Overbought",  color=color.blue , linestyle=hline.style_dashed)
osLevelPlot = hline(25, title="Oversold", color=color.blue, linestyle=hline.style_dashed)

fill(obLevelPlot, osLevelPlot, title="Background", color=color.blue, transp=90)
rsiUO = rsi(out,rsiUOLength)

ultPlot=plot(showUO==true? out : na, color=color.green, title="Oscillator")

plot(rsiUO, title = "rsiUO" ,  color=color.purple)
//drawings
/////////////////////////////////////////////////////////////////////////////////




//Strategy Logic 
/////////////////////////////////////////////////////////////////////////////////

//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity  * riskCapital / 100 ) /  (close*stopLoss/100)  

//check if cash is sufficient  to buy qty1  , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1


strategy.entry(id="SERSIofUO", long=false,   qty=qty1, when = sma1<=sma2 and sma2 < sma3 and close<sma2 and crossunder(rsiUO,sellLine) )

//strategy.entry(id="SERSiofUO", long=false, when = sma1< sma2  and crossunder(rsiUO,60) )

barcolor(abs(strategy.position_size)>=1 ? color.purple : na )
bgcolor(abs(strategy.position_size)>=1 ? color.purple : na , transp=70)


//partial exit
strategy.close(id="SERSIofUO", comment="PExit",  qty=strategy.position_size/3, when=abs(strategy.position_size)>=1 and close< strategy.position_avg_price and crossover(rsiUO,30) )

strategy.close(id="SERSIofUO", comment="CloseAll", when=abs(strategy.position_size)>=1 and crossover(rsiUO,coverLine) )

//Strategy Logic 
/////////////////////////////////////////////////////////////////////////////////



Thêm nữa