
Chiến lược này dựa trên chỉ số tương đối mạnh (RSI) và thiết kế một chiến lược đầu tư định lượng cho giao dịch chỉ số Nifty. Chiến lược này sử dụng chỉ số RSI để xác định cơ hội mua quá mức, mua quá mức, mua quá mức và tìm kiếm lợi nhuận quá mức.
Chiến lược này đặt RSI 2 ngày làm tín hiệu giao dịch. Khi RSI vượt quá 20, hãy làm nhiều hơn; Khi RSI vượt quá 70, hãy đứng yên. Như vậy, bạn có thể nắm bắt cơ hội điều chỉnh ngắn hạn của chỉ số.
Nguyên tắc cụ thể là: Khi RSI thấp hơn 20, thuộc trạng thái bán quá mức, cho thấy tài sản bị đánh giá thấp, báo hiệu sẽ bật lên; Khi RSI trên 20, làm nhiều hơn; Khi RSI cao hơn 70, thuộc trạng thái mua quá mức, cho thấy tài sản được đánh giá cao, báo hiệu sắp sửa điều chỉnh; Khi RSI dưới 70, bán tháo.
Đây là một chiến lược định lượng sử dụng các chỉ số để xác định các cơ hội mua bán quá mức trong thời gian ngắn. Những lợi thế của chiến lược này so với các chiến lược đánh giá thống kê và học máy phức tạp bao gồm:
Chiến lược này có những rủi ro:
Để kiểm soát các rủi ro trên, có thể tối ưu hóa các khía cạnh sau:
Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:
Chiến lược này dựa trên chỉ số RSI, thiết kế một chiến lược giao dịch ngắn hạn, sử dụng tín hiệu mua quá mức của chỉ số RSI để mua thấp và bán quá mức, theo đuổi lợi nhuận vượt quá. Nguyên tắc của chiến lược này đơn giản, dễ thực hiện, nhưng có một số giao dịch thường xuyên, không thể nhận ra xu hướng dài 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)