在 1 小时图表上计算较高时间框架趋势的问题 rsi2>rsi2[]



我花了很多天的时间研究并试图编写一段松树脚本代码,该代码将在1小时图表上引用更高的时间段(例如-2D(,并能够计算该指标的趋势方向(牛市/上涨或熊市/下跌(,然后获得编写策略脚本的能力,仅在2D趋势上升/看涨等情况下,才能基于1小时指标执行购买订单。

挑战在于2D数据每48小时编译一次,因此要进行rsi2>rsi2[48]将仅引用48小时前的特定数据点,该数据点可能是NaN,这取决于该小时是否与48小时数据点重合。因此,由于对应的2D数据是NaN,因此错过了许多基于60分钟TF的购买触发。

因此,我尝试了一个数组,它引用了所需时间段内的数据点历史(2D为48(,这要归功于该网站上发布的信息和Pine Script文档,我认为我可以使用它,但意识到它并不准确。

我暂时使用背景色脚本来突出显示代码是否正确识别了下降趋势和上升趋势。这是不准确的,而且在一个趋势期内背景颜色存在许多差距。

我找不到任何与此问题相关的论坛问题/答案。。。因此,我在这里发帖,它也可能在未来的中帮助其他人

以下是与该问题相关的具体代码。

如果有人能帮我做这件事,并为我指明正确的方向,告诉我这段代码哪里出了问题,或者可能知道一种可以按要求工作的脚本格式,我将不胜感激。。。。。。非常感谢:-(

study(title="RSI MTF TV", shorttitle="RSI MTF TV", overlay=false)
source = close
lengthRsi1 = input(8, minval=8)
lengthRsi2 = input(8, minval=8)
OverSold = input(25)
OverBought = input(75)
//I am using the 1 Hr Chart Resolution
Res1 = input(title='Resolution 1', type=input.resolution, defval="")
Res2 = input(title='Resolution 2', type=input.resolution, defval="2D")
rsi1 = security(syminfo.tickerid, Res1, rsi(source, lengthRsi1), barmerge.gaps_on)
rsi2 = security(syminfo.tickerid, Res2, rsi(source, lengthRsi2), barmerge.gaps_on)
plot(rsi1, title="Rsi 1", color=color.aqua, linewidth=1)
plot(rsi2, title="Rsi 2", color=color.purple, linewidth=1)
//RSI Trend
rsi2UpTrend = rsi2 > rsi2[48]
rsi2DwnTrend = rsi2 < rsi2[48]
f_rsi2Trend(_cond, _lookback) =>
bool _rsi2Trend = false
for i = 1 to _lookback
if _cond[i]
_rsi2Trend := true
_rsi2Trend
rsi2UpTrend48 = f_rsi2Trend(rsi2UpTrend, 48)
rsi2DwnTrend48 = f_rsi2Trend(rsi2DwnTrend, 48)
//Plot Backgroud
bgcolor(rsi2DwnTrend48 ? color.red :na, transp = 70)

您可以使用fixnan()用以前的非NaN值填充rsi2。例如rsi2UpTrend = fixnan(rsi2) > ....

但最好将你正在做的事情封装在一个函数中:

f_rsiTrend(_src, _len) =>
_rsi = rsi(_src, _len)
_trendUp = _rsi >= _rsi[1]
_trendUp

rsi2Trend = security(syminfo.tickerid, Res2, f_rsiTrend(source, lengthRsi2))