Chiến lược giao dịch ngưỡng RSI

Tác giả:ChaoZhang, Ngày: 2023-10-30 14:58:38
Tags:

img

Tổng quan

Chiến lược này thực hiện một chiến lược giao dịch ngưỡng đơn giản dựa trên chỉ số sức mạnh tương đối (RSI). Nó mua khi RSI giảm xuống dưới ngưỡng 30 và bán khi RSI tăng trên ngưỡng 40. Thời gian nắm giữ được cố định là 10 ngày. Chiến lược này phù hợp với giao dịch trung hạn.

Chiến lược logic

Chiến lược này chủ yếu sử dụng các vùng bán quá mức và mua quá mức của chỉ số RSI để tạo ra các tín hiệu giao dịch. RSI phản ánh tốc độ thay đổi giá trong một khoảng thời gian. RSI dưới 30 chỉ ra một khu vực bán quá mức mà giá có thể phục hồi. RSI trên 70 chỉ ra một khu vực mua quá mức mà giá có thể giảm.

Cụ thể, chiến lược đầu tiên tính toán chỉ số RSI 10 ngày, sau đó thiết lập ngưỡng ở mức 30 và 40. Khi chỉ số RSI 10 ngày giảm xuống dưới 30, một tín hiệu mua được tạo ra. Khi chỉ số RSI 10 ngày tăng trên 40, một tín hiệu bán được tạo ra. Sau khi nhận được tín hiệu mua, nó mở một vị trí dài. Sau khi nhận được tín hiệu bán, nếu ngày nắm giữ vượt quá 10 ngày, nó đóng vị trí trực tiếp. Nếu không, nó tiếp tục giữ cho đến ngày thứ 10 để bán hết.

Chiến lược đơn giản và dễ hiểu, xác định các khu vực bán quá mức và mua quá mức bằng cách sử dụng RSI để thực hiện chiến lược giao dịch ngưỡng dựa trên một chỉ số.

Ưu điểm

  1. Sử dụng chỉ số RSI được sử dụng rộng rãi với chỗ cho tối ưu hóa tham số

Chiến lược sử dụng chỉ số RSI phổ biến. Các thông số RSI có thể được điều chỉnh và tối ưu hóa để phù hợp với các giai đoạn và môi trường thị trường khác nhau.

  1. Thực hiện xu hướng đơn giản sau

RSI có thể phản ánh xu hướng thay đổi giá. Chiến lược đánh giá các chuyển động giá dựa trên RSI để đạt được xu hướng đơn giản.

  1. Kiểm soát rủi ro tương đối tốt

Chiến lược này áp dụng thời gian giữ cố định để kiểm soát hiệu quả lỗ đơn. Trong khi đó, các thông số RSI có thể được điều chỉnh để giảm giao dịch sai.

Rủi ro

  1. Các thông số RSI dễ bị tối ưu hóa quá mức

Các thông số RSI có thể được thiết lập linh hoạt nhưng tối ưu hóa quá mức và nghiêng về backtest có thể mang lại rủi ro giao dịch trực tiếp.

  1. Hiệu ứng trì hoãn tồn tại

RSI là một chỉ số theo xu hướng và phản ứng chậm với các sự kiện đột ngột, với một số hiệu ứng chậm.

  1. Thời gian giữ cố định thiếu sự linh hoạt

Thời gian giữ cố định yêu cầu điểm lấy lợi nhuận và dừng lỗ và không thể được điều chỉnh dựa trên những thay đổi trên thị trường.

Hướng dẫn cải thiện

  1. Tối ưu hóa các thông số RSI và tác động thử nghiệm của các giá trị khác nhau.

  2. Thêm các chỉ số khác để tạo thành một hệ thống kết hợp sử dụng điểm mạnh của các chỉ số khác nhau.

  3. Cải thiện chiến lược dừng lợi nhuận / lỗ để cho phép điều chỉnh năng động dựa trên điều kiện thị trường.

  4. Tối ưu hóa kích cỡ vị trí để điều chỉnh vị trí một cách năng động dựa trên điều kiện thị trường.

  5. Kiểm tra các sản phẩm phù hợp với chiến lược, chọn các sản phẩm lỏng có độ biến động cao.

  6. Tối ưu hóa giờ giao dịch và kiểm tra tác động đến chiến lược.

Kết luận

Chiến lược này tương đối đơn giản, thực hiện một chiến lược giao dịch dựa trên ngưỡng bằng cách sử dụng RSI. Những lợi thế của nó bao gồm sự đơn giản, dễ hiểu và kiểm soát rủi ro tương đối tốt. Tuy nhiên, các vấn đề như khó khăn tối ưu hóa tham số RSI và stop profit / loss không linh hoạt tồn tại.


/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
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/
// © Bitduke

//@version=4
// strategy("Simple RSI Buy/Sell at a level", shorttitle="Simple RSI Strategy", overlay=true,calc_on_every_tick=false,pyramiding=1, default_qty_type=strategy.cash,default_qty_value=1000, currency=currency.USD, initial_capital=1000,commission_type=strategy.commission.percent, commission_value=0.075)
overbought = input(40, title="overbought value")
oversold = input(30, title="oversold value")
// Component Test Periods Code Begin
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2021, "Backtest Stop Year")
testStopMonth = input(16, "Backtest Stop Month")
testStopDay = input(2, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Test Periods Code End
//////////////////////////////////////////////////////////////////////

myrsi = rsi(close, 10) > overbought
myrsi2 = rsi(close, 10) < oversold

barcolor(myrsi ? color.black : na)
barcolor(myrsi2 ? color.blue : na)


myEntry = myrsi2 and hour(time) <= 9

strategy.entry("Buy Signal", strategy.long, when = myEntry and testPeriod())

// Close 10 bar periods after the condition that triggered the entry

//if (myEntry[10])
    //strategy.close("Buy Signal")
strategy.close("Buy Signal", when = barssince(myEntry) >= 10 or myrsi and testPeriod())

//strategy.entry("Sell Signal",strategy.short, when = myrsi2)

Thêm nữa