Chiến lược này thiết kế một chiến lược đầu tư định lượng để giao dịch chỉ số Nifty dựa trên chỉ số chỉ số sức mạnh tương đối (RSI).
Chiến lược đặt RSI 2 giai đoạn làm tín hiệu giao dịch. Nó đi dài khi RSI vượt trên 20, và đóng vị trí khi RSI vượt dưới 70.
Lý thuyết là: khi chỉ số RSI dưới 20, nó chỉ ra tình trạng bán quá mức, ngụ ý rằng tài sản bị đánh giá thấp và sự phục hồi đang ở phía trước. Khi chỉ số RSI vượt trên 20, đi dài. Khi chỉ số RSI vượt trên 70, nó chỉ ra tình trạng mua quá mức, ngụ ý rằng tài sản được đánh giá quá mức và gọi lại đang ở phía trước. Khi chỉ số RSI vượt dưới 70, đóng vị trí.
Là một chiến lược xác định các cơ hội mua quá nhiều / bán quá nhiều ngắn hạn với các chỉ số, những lợi thế chính là:
Những rủi ro chính của chiến lược này bao gồm:
Để kiểm soát các rủi ro đã đề cập ở trên, các tối ưu hóa có thể được thực hiện trong các khía cạnh sau:
Các khía cạnh chính để tối ưu hóa chiến lược:
Chiến lược này thiết kế một chiến lược giao dịch ngắn hạn dựa trên chỉ số RSI, nắm bắt các tín hiệu mua quá mức / bán quá mức cho việc mua thấp và bán cao. Chiến lược có nguyên tắc đơn giản và dễ thực hiện, nhưng có một mức độ giao dịch thường xuyên nhất định, không thể xác định xu hướng dài hạn vv. Những cải tiến trong tương lai có thể được thực hiện về tối ưu hóa các thông số RSI, thêm stop loss, kết hợp xu hướng phán đoán vv, để làm cho chiến lược ổn định và đáng tin cậy hơn.
/*backtest start: 2023-01-18 00:00:00 end: 2024-01-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("RSI Strategy", overlay=true,pyramiding = 1000) rsi_period = 2 rsi_lower = 20 rsi_upper = 70 rsi_value = rsi(close, rsi_period) buy_signal = crossover(rsi_value, rsi_lower) sell_signal = crossunder(rsi_value, rsi_upper) current_date1 = input(defval=timestamp("01 Nov 2009 00:00 +0000"), title="stary Time", group="Time Settings") current_date = input(defval=timestamp("01 Nov 2023 00:00 +0000"), title="End Time", group="Time Settings") investment_amount = 100000.0 start_time = input(defval=timestamp("01 Dec 2018 00:00 +0000"), title="Start Time", group="Time Settings") end_time = input(defval=timestamp("30 Nov 2023 00:00 +0000"), title="End Time", group="Time Settings") in_time = time >= start_time and time <= end_time // Variable to track accumulation. var accumulation = 0.0 out_time = time >= end_time if (buy_signal ) strategy.entry("long",strategy.long,qty= 1) accumulation += 1 if (out_time) strategy.close(id="long") plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup) plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown) plot(rsi_value, title="RSI", color=color.blue) hline(rsi_lower, title="Lower Level", color=color.red) plot(strategy.opentrades, style=plot.style_columns, color=#2300a1, title="Profit first entry") plot(strategy.openprofit, style=plot.style_line, color=#147a00, title="Profit first entry") // plot(strategy.position_avg_price, style=plot.style_columns, // color=#ca0303, title="Profit first entry") // log.info(strategy.position_size * strategy.position_avg_price)