Chiến lược ngắn hạn của Turtle Trading RSI Indicator


Ngày tạo: 2023-11-14 15:59:25 sửa đổi lần cuối: 2023-11-14 15:59:25
sao chép: 1 Số nhấp chuột: 724
1
tập trung vào
1617
Người theo dõi

Chiến lược ngắn hạn của Turtle Trading RSI Indicator

Tổng quan

Chiến lược này là một chiến lược sử dụng chỉ số RSI để giao dịch ngắn. Nó kết hợp chỉ số RSI và chỉ số Williams Shark, giao dịch ngược khi chỉ số RSI đi vào vùng quá mua hoặc quá bán, thuộc về chiến lược giao dịch ngắn bảo thủ hơn.

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

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

  1. Sử dụng quy tắc giao dịch biển, chỉ tham gia khi thị trường đảo ngược rõ rệt, và sử dụng phương thức giao dịch thận trọng hơn.

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

  3. Kết hợp với chỉ số cá mập Williams để xác định xu hướng thị trường. Chỉ khi chỉ số cá mập hiển thị ba đường thẳng (đường đỏ môi, đường răng trắng, đường sừng xanh) thì xem xét làm trống; chỉ khi chỉ số cá mập hiển thị ba đường thẳng lên thì xem xét làm nhiều.

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

  5. Thiết lập đường dừng và đường dừng. Khi giá đảo ngược đến đường dừng hoặc đường dừng, hãy dừng hoặc dừng.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Sử dụng một chiến lược giao dịch biển vững chắc, chỉ tham gia khi thị trường đảo ngược rõ rệt, có thể tránh được rủi ro lớn khi giao dịch không có hướng trong khi thị trường biến động.

  2. Sử dụng chỉ số RSI để đánh giá điểm đảo chiều của thị trường, chỉ số đơn giản, rõ ràng và dễ dàng điều hành. RSI của RSI tránh bị đánh đòn, lọc kép làm tăng độ tin cậy của tín hiệu.

  3. Kết hợp với chỉ số cá mập để xác định xu hướng và tránh giao dịch ngược. Chỉ số cá mập được thêm vào như một điều kiện phụ để có hiệu quả lọc.

  4. Thiết lập chiến lược dừng lỗ để khóa 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ố của RSI và các điều kiện đầu vào và đầu ra có thể được điều chỉnh theo các thị trường khác nhau, chiến lược tối ưu hóa.

Phân tích rủi ro

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

  1. Chỉ số RSI có khả năng phát ra tín hiệu sai. Chỉ số RSI có thể phát ra tín hiệu mua bán quá mức sai. Kết hợp với chỉ số cá mập có thể làm giảm khả năng phát ra tín hiệu sai.

  2. Cài đặt điểm dừng quá lớn có thể dẫn đến sự gia tăng tổn thất. Cần thu hẹp điểm dừng một cách thích hợp để giảm tổn thất đơn lẻ.

  3. Sự đảo ngược không nhất thiết phải xảy ra trong khu vực RSI quá mua quá bán. Sự thay đổi cấu trúc thị trường có thể dẫn đến sự thay đổi điểm đảo ngược, điều chỉnh tham số khi thích hợp.

  4. Số lượng giao dịch có thể ít hơn, có trường hợp không có giao dịch trong thời gian dài. Điều kiện nhập cảnh có thể được nới lỏng thích hợp để tăng số lượng giao dịch.

  5. Thị trường có thể tăng hoặc giảm liên tục trong thời gian dài, khiến giao dịch ngắn hạn bị mắc kẹt.

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

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Tối ưu hóa các tham số của RSI, điều chỉnh các vùng mua và bán cao để phù hợp với các thị trường khác nhau.

  2. Điều chỉnh các tham số của chỉ số cá mập để tối ưu hóa tính chính xác của xu hướng.

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

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

  5. Thêm tính năng tự động dừng lỗ, theo dõi dừng lỗ, kiểm soát tốt hơn các khoản lỗ đơn lẻ.

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

  7. Tối ưu hóa thời gian giao dịch, giao dịch trong thời gian có xu hướng rõ ràng hơn.

Tóm tắt

Chiến lược này nói chung là một chiến lược giao dịch ngắn hạn mạnh mẽ hơn. Nó sử dụng chiến lược giao dịch biển bảo thủ hơn, đồng thời sử dụng chỉ số RSI để xác định điểm đảo ngược, và hỗ trợ bằng chỉ số cá mập để xác định hướng xu hướng, có thể tránh hiệu quả các giao dịch rủi ro cao như theo đuổi đà giảm, khóa lợi nhuận ổn định hơn.

Mã nguồn chiến lược
/*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 
/////////////////////////////////////////////////////////////////////////////////