Chiến lược RSI Breakout bán quá mức

Tác giả:ChaoZhang, Ngày: 2023-09-26 16:11:55
Tags:

Tổng quan

Chiến lược này sử dụng chỉ số RSI để xác định liệu một đồng tiền điện tử có bị bán quá mức hay không, và mua khi chỉ số RSI dưới 30, được coi là bán quá mức. Sau đó, nó thiết lập giá dừng lỗ và lấy lợi nhuận. Nếu giá dừng lỗ bị trúng, nó sẽ thoát khỏi vị trí. Nếu giá lấy lợi nhuận đạt được, nó sẽ đóng vị trí để kiếm lợi nhuận.

Làm thế nào nó hoạt động

  1. Chiến lược này sử dụng chỉ số RSI để xác định các tín hiệu nhập cảnh. RSI đo tốc độ và quy mô của sự thay đổi giá để xác định xem một tài sản có bị mua quá nhiều hay bán quá nhiều không. RSI dao động từ 0 đến 100, với mức trên 70 được coi là mua quá nhiều và dưới 30 là bán quá nhiều.

  2. Khi chỉ số RSI giảm xuống dưới 30, chiến lược đi vào một vị trí dài, đặt cược vào sự đảo ngược xu hướng.

  3. Sau khi mở vị trí, dừng lỗ và lấy lợi nhuận được thiết lập. Stop loss được thiết lập 1% dưới giá nhập cảnh. Lợi nhuận được thiết lập 7% trên giá nhập cảnh.

  4. Nếu giá giảm xuống dưới mức dừng lỗ, vị trí được đóng. Nếu giá tăng trên mức lấy lợi nhuận, vị trí được đóng để kiếm lợi nhuận.

Phân tích lợi thế

  1. Sử dụng chỉ số RSI để xác định các điều kiện bán quá mức cung cấp các điểm đầu vào tốt ở mức thấp tương đối.

  2. Việc dừng lỗ chặt chẽ kiểm soát rủi ro trên cơ sở mỗi giao dịch. Nó cho phép một số rút tiền trước khi bị dừng lại.

  3. Lợi nhuận lấy khóa trong lợi nhuận từ các động thái tăng lớn.

  4. Chiến lược này có kiểm soát rút vốn mạnh mẽ và rủi ro thấp hơn nói chung.

Phân tích rủi ro

  1. RSI tín hiệu bán quá mức không phải lúc nào cũng dẫn đến một sự đảo ngược, giá có thể tiếp tục giảm dẫn đến dừng lỗ.

  2. Stop loss có thể quá chặt chẽ, dẫn đến việc dừng sớm nếu drawdown lớn.

  3. Lợi nhuận có thể quá lớn, đóng lợi nhuận sớm và không để người chiến thắng chạy.

  4. Chiến lược có thể phải đối mặt với những tổn thất lớn trong thời gian thị trường bên lề bị biến động.

Tối ưu hóa

  1. Kết hợp RSI với các chỉ số khác như KDJ có thể cải thiện độ chính xác tín hiệu và tránh tín hiệu sai.

  2. Tối ưu hóa tỷ lệ dừng lỗ và lấy lợi nhuận dựa trên sự biến động của các đồng tiền khác nhau.

  3. Kiểm tra các thông số khung thời gian khác nhau để tìm kết hợp tối ưu.

  4. Tối ưu hóa kích thước vị trí dựa trên kết quả backtest.

Kết luận

Nhìn chung, đây là một chiến lược vượt quá mức bán khá mạnh mẽ. Lấy vị trí sau khi tín hiệu RSI vượt quá mức bán cung cấp các điểm vào tốt ở mức giá tương đối thấp. Cơ chế dừng lỗ và lấy lợi nhuận giúp kiểm soát rủi ro và khóa lợi nhuận.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 15m
basePeriod: 5m
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/
// © brodieCoinrule

//@version=4
strategy(shorttitle='Oversold RSI with tight SL',title='Oversold RSI with tight SL Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50, commission_type=strategy.commission.percent, commission_value=0.1)
//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

perc_change(lkb) =>
    overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100



// RSI inputs and calculations
lengthRSI = 14
RSI = rsi(close, lengthRSI)
oversold= input(30)


//Entry 
strategy.entry(id="long", long = true, when = RSI< oversold and window())

//Exit
Stop_loss= ((input (1))/100)
Take_profit= ((input (7)/100))

longStopPrice  = strategy.position_avg_price * (1 - Stop_loss)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())



Thêm nữa