Chiến lược đột phá RSI tích lũy


Ngày tạo: 2023-10-27 11:20:50 sửa đổi lần cuối: 2023-10-27 11:20:50
sao chép: 0 Số nhấp chuột: 759
1
tập trung vào
1617
Người theo dõi

Chiến lược đột phá RSI tích lũy

Tổng quan

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.

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

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.

Lợi thế chiến lược

  • Sử dụng chỉ số RSI tích lũy để lọc hiệu quả tiếng ồn và khóa xu hướng đường dài
  • Thêm bộ lọc xu hướng để tránh giao dịch không hợp lý
  • Sử dụng giá tham chiếu động đột phá thay vì giá trị cố định để đánh giá
  • Có nhiều tham số có thể cấu hình, có thể điều chỉnh tham số cho các thị trường khác nhau
  • Tiếp theo, các nhà đầu tư sẽ có thể sử dụng các chiến lược mua lại và nắm giữ để tăng lợi nhuận.

Rủi ro và cải tiến chiến lược

  • Chiến lược chỉ đưa ra quyết định dựa trên chỉ số tích lũy RSI duy nhất, có thể thêm các chỉ số phán đoán khác hoặc bộ lọc để đưa ra phán đoán tổng hợp
  • Lợi thế nhân cố định cao, có thể điều chỉnh tỷ lệ lợi nhuận theo tình trạng rút lui
  • Chỉ cần làm nhiều hướng, bạn có thể xem xét thêm cơ hội làm việc rảnh
  • Gói tham số có thể tối ưu hóa, thiết lập tham số có thể khác nhau trong các điều kiện thị trường khác nhau
  • Có thể làm giàu điều kiện thanh toán, tăng vị trí dừng lỗ, di chuyển dừng lỗ
  • Có thể xem xét sử dụng với các chiến lược khác để tạo ra hiệu quả phối hợp

Tóm tắt

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.

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