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 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ố.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Tối ưu hóa giờ giao dịch và kiểm tra tác động đến chiến lược.
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)