簡體   English   中英

Pine 腳本 - 嘗試計算上市前低點的平均值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM