pine-script - 蜡烛的可变开始时间
问题描述
我想编写一个代码,如果在 X 条后面和前一个条之间发生条件,则条件为真。如果期间的起始蜡烛是变量,则使用方括号将不起作用。
在上面的示例中,如果 RSI 超过 50 并且在(RSI 低于 30 时的蜡烛)和(超过 50 时的蜡烛之前的蜡烛)之间,我想得到一个信号. 在这种情况下,带有绿色垂直线的蜡烛是第一个越过 50 线的蜡烛,所以我想得到一个信号,但带有紫色线的蜡烛是它第二次越过 50,所以我不是有兴趣在那里有信号
我也尝试过使用 sum() 函数,因为它似乎是最简单的选择,但它不接受使用 barsince() 的函数中的可变长度,这给了我这个错误:
“Pine 无法确定系列的参考长度。尝试使用 max_bars_back”
我还添加了 sincedown 和 sinceup >0 的条件,因为 sum() 函数在 rsi >70 或 <30 时不接受长度为 0。
可能很简单,但我找不到正确的代码。
谢谢
//@version=4
study(title="Relative Strength Index", shorttitle="RSI", format=format.price, precision=2, resolution="")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
os = rsi < 30
ob = rsi > 70
sincedown = barssince(os)
sinceup = barssince(ob)
condup = sincedown > 0 ? sum(rsi > 50 ? 1 : 0, sincedown) : na
conddn = sinceup > 0 ? sum(rsi < 50 ? 1 : 0, sinceup) : na
gup = rsi > 50 and condup == 0 ? 1 : 0
gdn = rsi < 50 and conddn == 0 ? 1 : 0
bgcolor(gup ? color.green : gdn ? color.red : na, transp = 60)
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
mid = hline(50, "Mid", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")
解决方案
推荐阅读
- python-3.x - 如何根据另一列中的值为列分配值?
- excel - Excel VBA:根据条件删除整行
- python - 有没有办法在 python 中使用 Cypher 而无需设置 Neo4j 服务器?
- python-3.x - 具有特定列的 Numpy 乘法数组
- laravel - Laravel 7错误外键约束在迁移过程中形成错误
- angular - 在第二个 observable 中修改第一个 observable 的结果并返回更新的结果
- arrays - 将 JSON 数组读入 Bash 数组
- angular - Angular @Input 装饰器和其他问题
- apache-spark - 为什么最新的 Hadoop 中没有内存计算功能?
- arrays - 使用循环打印到不同的标签