Эта стратегия применяет индикатор RSI на VWAP, и определяет длинное/короткое направление на основе прорывов порога RSI. В частности, она становится короткой, когда RSI превышает уровень перекупа, и длинной, когда RSI превышает уровень перепродажи. Она также выходит из сил после последовательных прорывов порога в течение определенного периода.
Преимущество этой стратегии заключается в использовании как RSI для перекупленности/перепроданности, так и VWAP для ценового тренда, что помогает отфильтровать ложные сигналы.
В целом, стратегия VWAP с выходом RSI сочетает в себе несколько индикаторов для выявления торговых возможностей, но требует тщательного тестирования и настройки для адаптации к различным рыночным условиям.
/*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="")