Chiến lược này được đặt tên là
Khái niệm cốt lõi của chiến lược này là sử dụng hai đường dẫn của chỉ số RSI để đánh giá. Chỉ số RSI thường được đặt thành 14 giai đoạn, đại diện cho sức mạnh và điểm yếu của cổ phiếu trong 14 ngày gần đây. Chiến lược này thêm RSI10 làm chỉ số đánh giá phụ trợ.
Khi chỉ số RSI14 phá vỡ dưới đường đi 40, người ta tin rằng giá cổ phiếu đã phá vỡ phía yếu và có thể có cơ hội phục hồi hỗ trợ. Tại thời điểm này, nếu RSI10 thấp hơn RSI14, điều đó có nghĩa là xu hướng ngắn hạn vẫn đang giảm, có thể xác nhận thêm tín hiệu bán. Vì vậy, khi
Khi chỉ số RSI14 vượt qua đường 70, người ta tin rằng giá cổ phiếu đã bước vào một khu vực mạnh trong ngắn hạn và có thể có cơ hội điều chỉnh rút lui. Tại thời điểm này, nếu chỉ số RSI10 lớn hơn chỉ số RSI14, điều đó có nghĩa là xu hướng ngắn hạn tiếp tục tăng lên, có thể xác nhận tín hiệu mua. Vì vậy, khi
Do đó, đánh giá kết hợp của RSI14 và RSI10 tạo thành logic cốt lõi của chiến lược hai đường dẫn.
Để tận dụng đầy đủ chiến lược này, các thông số RSI có thể được điều chỉnh đúng cách, vị trí dừng lỗ nên được kiểm soát chặt chẽ, tránh giao dịch quá thường xuyên và theo đuổi lợi nhuận ổn định.
Chiến lược này đưa ra phán đoán dựa trên ý tưởng hai đường dẫn của RSI và lọc ra một số tín hiệu ồn ào đến một mức độ nào đó. Nhưng không có chiến lược chỉ số duy nhất nào có thể hoàn hảo, chỉ số RSI có xu hướng gây hiểu lầm và nên được xem xét cẩn thận. Chiến lược này kết hợp các cơ chế dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro, điều này là điều cần thiết. Tối ưu hóa trong tương lai có thể được tiếp tục để làm cho các tham số chiến lược và phương pháp dừng lỗ thông minh và năng động hơn.
/*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