[英]Pine script - Trying to calculate the average of lows in premarket
我是 pine 腳本的新手並試圖計算 plot 預售的平均低價不幸的是我的代碼似乎無法正常工作,我找不到原因
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)
這段代碼導致了這個混亂:圖
如果有人能指出我正確的方向,將不勝感激!
問題似乎是處理值何時為 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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.