Chiến lược này áp dụng chỉ số RSI trên VWAP, và xác định hướng dài / ngắn dựa trên sự đột phá ngưỡng RSI. Cụ thể, nó đi ngắn khi RSI vượt quá mức mua quá mức, và đi dài khi RSI vượt quá mức bán quá mức. Nó cũng thoát lực sau khi phá vỡ ngưỡng liên tiếp trong một khoảng thời gian nhất định.
Lợi thế của chiến lược này là sử dụng cả RSI cho quá mua / quá bán và VWAP cho xu hướng giá, giúp lọc ra các tín hiệu sai. Nhưng nó cũng có nguy cơ bị chậm trong việc xác định sự đảo ngược xu hướng.
Tóm lại, chiến lược RSI breakout VWAP kết hợp nhiều chỉ số để xác định các cơ hội giao dịch, nhưng đòi hỏi phải kiểm tra cẩn thận và điều chỉnh để thích nghi với các điều kiện thị trường khác nhau. Kiểm soát rủi ro là rất quan trọng để áp dụng chiến lược này trong thời gian dài.
/*backtest start: 2022-09-04 00:00:00 end: 2023-09-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"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/ // © Mysteriown //@version=4 strategy("RSI on VWAP Upgraded strategy", overlay=false, pyramiding = 3, commission_value = 0.04) // pyramiding is the number of positions you can take before closing all of them (be carefull if using it with a trading bot) // commission_value is the commission taken for each buy/sell // ------------------------------------------ // // ----------------- Inputs ----------------- // // ------------------------------------------ // length = input(20, title="RSI Length", type=input.integer) ovrsld = input(30, "RSI Oversold level", type=input.float) ovrbgt = input(85, "RSI Overbought level", type=input.float) lateleave = input(28, "Number of candles", type=input.integer) // lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition). // best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28 stratbull = input(title="Enter longs ?", type = input.bool, defval=true) stratbear = input(title="Enter shorts ?", type = input.bool, defval=true) bet = input(0.1, "Amount of coin/token by position", type=input.float) stratyear = input(2020, title = "Strategy Start Year") stratmonth = input(7, title = "Strategy Start Month") stratday = input(1, title = "Strategy Start Day") stratstart = timestamp(stratyear,stratmonth,stratday,0,0) // ------------------------------------------ // // ---------------- Rsi VWAP ---------------- // // ------------------------------------------ // rsiVWAP = rsi(vwap(close), length) // ------------------------------------------ // // ------------------ Plots ----------------- // // ------------------------------------------ // prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line) hline = plot(ovrbgt, color = color.gray, style=plot.style_line) lline = plot(ovrsld, color = color.gray, style=plot.style_line) fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30) fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30) // ------------------------------------------ // // ---------------- Positions --------------- // // ------------------------------------------ // if stratbull and time > stratstart strategy.entry("Long", true, bet, when = crossover(rsiVWAP, ovrsld), comment="") strategy.close("Long", when = crossover(rsiVWAP, ovrbgt)[lateleave] or crossunder(rsiVWAP, ovrbgt), comment="") if stratbear and time > stratstart strategy.entry("Short", false, bet, when = crossunder(rsiVWAP, ovrbgt), comment="") strategy.close("Short", when = crossunder(rsiVWAP, ovrsld)[lateleave] or crossover(rsiVWAP, ovrsld), comment="")