
Chiến lược này sử dụng các chỉ số RSI tích lũy để xác định xu hướng, mua và bán khi các chỉ số RSI tích lũy vượt qua ngưỡng quan trọng. Chiến lược này có thể lọc hiệu quả tiếng ồn thị trường và khóa các cơ hội giao dịch xu hướng dài hơn.
Chiến lược này chủ yếu dựa trên chỉ số RSI tích lũy để đưa ra quyết định giao dịch. Chỉ số RSI tích lũy là giá trị tích lũy của chỉ số RSI, bằng cách đặt tham số cumlen, bạn có thể tích lũy các giá trị của chỉ số RSI trong ngày cumlen để có được chỉ số RSI tích lũy. Chỉ số này có thể lọc tiếng ồn thị trường ngắn hạn.
Khi tích lũy chỉ số RSI vượt qua đường ray của Bolinger, giao dịch mua và mở vị trí được thực hiện; khi tích lũy chỉ số RSI vượt qua đường ray của Bolinger, giao dịch bán được thực hiện. Đường ray của Bolinger được tính toán thông qua dữ liệu lịch sử nhiều năm, là giá tham chiếu cho sự thay đổi động lực.
Ngoài ra, chiến lược này cũng bổ sung thêm tùy chọn lọc xu hướng. Chỉ khi giá cao hơn 100 ngày di chuyển trung bình, tức là ở kênh xu hướng tăng, thì giao dịch mua và mở. Bộ lọc này có thể tránh giao dịch sai khi giá dao động.
Chiến lược phá vỡ RSI tích lũy hoạt động trơn tru, logic rõ ràng, hiệu quả phân tích sóng thông qua chỉ số RSI tích lũy, tăng phán đoán xu hướng, nắm bắt chính xác xu hướng đường dài và trung bình, phản hồi lịch sử hoạt động tốt. Tuy nhiên, vẫn còn không gian tối ưu hóa, có thể bắt đầu từ điều chỉnh cài đặt tham số, tăng chỉ số phán đoán, làm phong phú các điều kiện ngang bằng, để tạo ra một chiến lược xu hướng mạnh mẽ hơn và toàn diện hơn.
/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
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/
// @version=5
// Author = TradeAutomation
strategy(title="Cumulative RSI Strategy", shorttitle="CRSI Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_contract, commission_value=.0035, slippage = 1, margin_long = 75, initial_capital = 25000, default_qty_type=strategy.percent_of_equity, default_qty_value=110)
// Cumulative RSI Indicator Calculations //
rlen = input.int(title="RSI Length", defval=3, minval=1)
cumlen = input(3, "RSI Cumulation Length")
rsi = ta.rsi(close, rlen)
cumRSI = math.sum(rsi, cumlen)
ob = (100*cumlen*input(94, "Oversold Level")*.01)
os = (100*cumlen*input(20, "Overbought Level")*.01)
// Operational Function //
TrendFilterInput = input(false, "Only Trade When Price is Above EMA?")
ema = ta.ema(close, input(100, "EMA Length"))
TrendisLong = (close>ema)
plot(ema)
// Backtest Timeframe Inputs //
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2010, minval=1950, maxval=2100)
endDate = input.int(title="End Date", defval=1, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=1, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2099, minval=1950, maxval=2100)
InDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
// Buy and Sell Functions //
if (InDateRange and TrendFilterInput==true)
strategy.entry("Long", strategy.long, when = ta.crossover(cumRSI, os) and TrendisLong, comment="Buy", alert_message="buy")
strategy.close("Long", when = ta.crossover(cumRSI, ob) , comment="Sell", alert_message="Sell")
if (InDateRange and TrendFilterInput==false)
strategy.entry("Long", strategy.long, when = ta.crossover(cumRSI, os), comment="Buy", alert_message="buy")
strategy.close("Long", when = ta.crossover(cumRSI, ob), comment="Sell", alert_message="sell")
if (not InDateRange)
strategy.close_all()