我是pine脚本的新手,试图计算和绘制售前的平均低价不幸的是,我的代码似乎不能正常工作,我找不到原因
var preMarketSession = "0400-0930" //setting the premarket time
isPreMarket = not na(time(timeframe.period, "0400-0930")) //boolean for if the session is currently in premarket
var int barsInPreMarket = 0
var float averageLow = na
// Confirming first bar of premarket
if isPreMarket and not isPreMarket[1]
averageLow := 0
//Counting the number of bars in premarket
if (isPreMarket and barstate.isnew)
barsInPreMarket := barsInPreMarket + 1
//Calculating the avg of low prices on end of bar
if isPreMarket and barstate.isconfirmed
for i=0 to barsInPreMarket - 1
averageLow := (averageLow + low) / barsInPreMarket
// Resseting the car count and avarage upon exiting premarket
if not isPreMarket
barsInPreMarket := 0
averageLow := na
plot(averageLow)这段代码会导致这样的混乱:Graph
如果有人能为我指明正确的方向,我将不胜感激!
发布于 2021-04-05 08:10:39
问题似乎要么是当值为na时的处理,要么是使用barstate。关于NA值,脚本允许对NA值进行计算,您必须使用nz()来呈现值0,或者使用na()来测试条件并执行相应的操作。我不确定是不是barstate导致了这些问题,但它不应该是必要的。
//@version=4
study("My Script",overlay=true)
var preMarketSession = "0400-0930" //setting the premarket time
isPreMarket = not na(time(timeframe.period, "0400-0930")) //boolean for if the session is currently in premarket
var int barsInPreMarket = 0
var float lowSum = na
var float averageLow = na
if isPreMarket
if na(lowSum)
barsInPreMarket := 1
lowSum := low
averageLow := low
else
barsInPreMarket := barsInPreMarket + 1
lowSum := lowSum + low
averageLow := lowSum / barsInPreMarket
else if isPreMarket[1]
lowSum := na
barsInPreMarket := 0
plot(averageLow)注意na值很重要,因为您不知道脚本何时开始执行。它可以从上市前的中期开始,这意味着当averageLow为na时,它将使用averageLow来计算averageLow。
https://stackoverflow.com/questions/66943384
复制相似问题