
Chiến lược này được gọi là chiến lược phá vỡ hai đường ray dựa trên chỉ số RSI. Chiến lược này sử dụng sự phối hợp hai đường ray của chỉ số RSI để phán đoán, nhằm mục đích mua bán thấp. Khi chỉ số RSI thấp hơn đường thấp được thiết lập (bằng mặc định 40), nó được coi là tín hiệu mua, khi đó nếu RSI10 thấp hơn RSI14 thì mua được xác nhận thêm; Khi chỉ số RSI cao hơn đường cao được thiết lập (bằng mặc định 70), nó được coi là tín hiệu bán, khi đó nếu RSI10 cao hơn RSI14 thì bán được xác nhận thêm.
Lý luận cốt lõi của chiến lược này là sử dụng hai đường ray của chỉ số RSI để phán đoán. Chỉ số RSI thường được thiết lập trong 14 chu kỳ, đại diện cho tình trạng mạnh hoặc yếu của cổ phiếu trong gần 14 ngày. Chiến lược này đã thêm RSI10 làm chỉ số phán đoán phụ trợ.
Khi RSI 14 phá vỡ đường 40 , cho rằng giá cổ phiếu đã giảm xuống mức yếu, có thể tạo cơ hội để hỗ trợ. Tại thời điểm này, nếu RSI 10 nhỏ hơn RSI 14, cho thấy xu hướng ngắn hạn vẫn đi xuống, tín hiệu giảm giá có thể được xác nhận thêm. Vì vậy, khi đáp ứng RSI 14 <= 40 và RSI 10 < RSI 14, tín hiệu mua sẽ được tạo ra.
Khi RSI14 vượt qua đường 70 , cho rằng giá cổ phiếu vào khu vực mạnh mẽ trong ngắn hạn, có thể có cơ hội điều chỉnh lại. Tại thời điểm này, nếu RSI10 lớn hơn RSI14, cho thấy xu hướng ngắn hạn tiếp tục tăng, tín hiệu lạc quan có thể được xác nhận thêm. Vì vậy, khi đáp ứng RSI14 > = 70 và RSI10 > RSI14, tín hiệu bán ra.
Vì vậy, sự kết hợp giữa RSI14 và RSI10 là logic cốt lõi của chiến lược hai đường ray.
Để tận dụng tối đa chiến lược này, bạn có thể điều chỉnh các tham số RSI một cách thích hợp, kiểm soát chặt chẽ vị trí dừng lỗ, tránh hoạt động quá dày đặc và theo đuổi khả năng lợi nhuận ổn định và lâu dài.
Chiến lược này dựa trên tư duy hai đường của RSI để đánh giá, và lọc một số tín hiệu tiếng ồn. Tuy nhiên, không có chiến lược chỉ số đơn lẻ nào hoàn hảo, chỉ số RSI dễ gây hiểu lầm và nên thận trọng. Chiến lược này bao gồm các cơ chế dừng và dừng di động để kiểm soát rủi ro, điều này rất cần thiết.
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 1m
basePeriod: 1m
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/
// © DojiEmoji
//@version=4
strategy("[KL] RSI 14 + 10 Strategy",overlay=true)
backtest_timeframe_start = input(defval = timestamp("01 Jan 2015 13:30 +0000"), title = "Backtest Start Time", type = input.time)
//backtest_timeframe_end = input(defval = timestamp("19 Mar 2021 19:30 +0000"), title = "Backtest End Time", type = input.time)
TARGET_PROFIT_MODE = input(false,title="Exit when Risk:Reward met")
REWARD_RATIO = input(3,title="Risk:[Reward] (i.e. 3) for exit")
// Trailing stop loss {
TSL_ON = input(true,title="Use trailing stop loss")
var entry_price = float(0)
ATR_multi_len = 26
ATR_multi = input(2, "ATR multiplier for stop loss")
ATR_buffer = atr(ATR_multi_len) * ATR_multi
plotchar(ATR_buffer, "ATR Buffer", "", location = location.top)
risk_reward_buffer = (atr(ATR_multi_len) * ATR_multi) * REWARD_RATIO
take_profit_long = low > entry_price + risk_reward_buffer
take_profit_short = low < entry_price - risk_reward_buffer
var bar_count = 0 //number of bars since entry
var trailing_SL_buffer = float(0)
var stop_loss_price = float(0)
stop_loss_price := max(stop_loss_price, close - trailing_SL_buffer)
// plot TSL line
trail_profit_line_color = color.green
showLine = strategy.position_size == 0
if showLine
trail_profit_line_color := color.black
stop_loss_price := close - trailing_SL_buffer
plot(stop_loss_price,color=trail_profit_line_color)
// }
// RSI
RSI_LOW = input(40,title="RSI entry")
RSI_HIGH = input(70,title="RSI exit")
rsi14 = rsi(close, 14)
rsi10 = rsi(close, 10)
if true// and time <= backtest_timeframe_end
buy_condition = rsi14 <= RSI_LOW and rsi10 < rsi14
exit_condition = rsi14 >= RSI_HIGH and rsi10 > rsi14
//ENTRY:
if strategy.position_size == 0 and buy_condition
entry_price := close
trailing_SL_buffer := ATR_buffer
stop_loss_price := close - ATR_buffer
strategy.entry("Long",strategy.long, comment="buy")
bar_count := 0
else if strategy.position_size > 0
bar_count := bar_count + 1
//EXIT:
// Case (A) hits trailing stop
if TSL_ON and strategy.position_size > 0 and close <= stop_loss_price
if close > entry_price
strategy.close("Long", comment="take profit [trailing]")
stop_loss_price := 0
else if close <= entry_price and bar_count
strategy.close("Long", comment="stop loss")
stop_loss_price := 0
bar_count := 0
// Case (B) take targeted profit relative to risk
if strategy.position_size > 0 and TARGET_PROFIT_MODE
if take_profit_long
strategy.close("Long", comment="take profits [risk:reward]")
stop_loss_price := 0
bar_count := 0
// Case (C)
if strategy.position_size > 0 and exit_condition
if take_profit_long
strategy.close("Long", comment="exit[rsi]")
stop_loss_price := 0
bar_count := 0