我想获得价值时最新的五个位置。但这不起作用。 我认为为i迭代器调用valuewhen(curPosition> 0,curPosition,i)是有问题的。你能帮我吗?
//@version=4
strategy(title="Test", shorttitle="Test", overlay=true)
// curPosition
// 0 == "-"
// 1 == "LONG"
// 2 == "SHORT"
curPosition = 0
longCnt = 0
shortCnt = 0
noneCnt = 0
prevPosition = 0
for i = 1 to 5
prevPosition := valuewhen(curPosition>0, curPosition, i)
if (prevPosition == 1)
longCnt := longCnt + 1
if (prevPosition == 2)
shortCnt := shortCnt + 1
if na(prevPosition)
noneCnt := noneCnt + 1
if (open>close)
curPosition := 1
if (open<close)
curPosition := 2
plotchar(longCnt, "LONG CNT", "", location=location.top)
plotchar(shortCnt, "SHORT CNT", "", location=location.top)
plotchar(noneCnt , "NONE CNT", "", location=location.top)
答案 0 :(得分:1)
我找到了原因的根源。 Pins脚本引擎的工作方式很奇怪。
请参阅pine脚本文档,请参见下面的描述。
//@version=4
study("SMA in for loop")
sum = 0
for i = 1 to 2
sum := sum + sma(close, i)
plot(sum)
虽然您可能希望总和包含sma(close,1)+ sma(close,2),但事实并非如此。它将包含sma(close,1)+ sma(close,1),因为一旦将sma初始化为长度1,就会存储该长度,直到从图表中删除脚本为止。为避免这种情况,您可以使用自己的无状态函数实现。这是具有相同行为的内置函数的列表: