I am trying to collect stochastic rsi 100 and 0 values in an array and use it for a strategy(or an indicator). I am having trouble getting a fixed value for it on timeframes. It works okay when I use the same time frame as collecting timeframe but when I change it to lower time frame on the live chart, it does not collect a correct value. This example below only gets right data when the timeframe is Month but not on lower ones like week or day. Can someone help resolve this issue?
//@version=5
indicator(title="test", shorttitle="test", format=format.price, precision=2, overlay=true)
// general options
displayMonthlySto = input(true, "Show Monthly Stoch", group="General Options")
// options for monthly stoRSI
smoothKMon = input.int(3, "K", minval=1, group="Monthly Time Frame Options")
smoothDMon = input.int(3, "D", minval=1, group="Monthly Time Frame Options")
lengthRSIMon = input.int(14, "RSI Length", minval=1, group="Monthly Time Frame Options")
lengthStochMon = input.int(14, "Stochastic Length", minval=1, group="Monthly Time Frame Options")
srcMon = input(close, title="RSI Source", group="Monthly Time Frame Options")
rsi1Mon = ta.rsi(srcMon, lengthRSIMon)
kMon = ta.sma(ta.stoch(rsi1Mon, rsi1Mon, rsi1Mon, lengthStochMon), smoothKMon)
dMon = ta.sma(kMon, smoothDMon)
// timeframe for month
stoMonth = request.security(syminfo.tickerid, "M", kMon)
// initialize arrys for stoch
var sto100MonArr = array.new_float()
var sto0MonArr = array.new_float()
// collect sto100 and 0 data
if ta.change(time_close("1M")) and displayMonthlySto
if stoMonth == 100
array.push(sto100MonArr, close)
if stoMonth == 0
array.push(sto0MonArr, close)
plot(array.size(sto100MonArr)>0 ? array.get(sto100MonArr, array.size(sto100MonArr)-1) : na)
Request.security gives inconsistent results when loading lower TF data For Lower TF data, you must use: https://www.tradingview.com/pine-script-reference/v5/#fun_request{dot}security_lower_tf
This function returns an array of lower TF values
For a locked bigger TF value, you can try this
stoMonth = request.security(syminfo.tickerid, "M", kMon[1], barmerge.gaps_off, barmerge.lookahead_on)