Bar States
Introduction
The barstate
namespace includes a set of built-in variables that allow scripts to identify various properties of the bar currently being processed.
These states enable you to limit the execution or logic of your code to specific bars.
Some of these built-in variables provide information about the trading session to which the current bar belongs. These are further detailed in the Session States section.
Bar State Built-In Variable
bar_index
Represents the index of the current bar. The numbering starts from zero, with the first bar having an index of 0
.
Type
series int
Example:
// Example usage of bar_index
plot(bar_index, title="Bar Index")
Note: Note that bar indexing starts from 0 on the first historical bar. Please note that using this variable/function can cause indicator repainting.
barstate.isfirst
Returns true
if the current bar is the first bar in the barset; otherwise, it returns false
.
Type
series bool
Note: Lipi script code that uses this variable could calculate differently on history and real-time data.
Please note that using this variable/function can cause indicator repainting.
barstate.ishistory
Returns true
if the current bar is a historical bar; otherwise, it returns false
.
Type
series bool
Note: Lipi script code that uses this variable could calculate differently on history and real-time data.
Please note that using this variable/function can cause indicator repainting.
barstate.islast
Returns true
if the current bar is the last bar in the barset; otherwise, it returns false
. This condition is always true
for real-time bars in the barset.
Type
series bool
Note: Lipi script code that uses this variable could calculate differently on history and real-time data.
Please note that using this variable/function can cause indicator repainting.
barstate.islastconfirmedhistory
Returns true
if the script is executing on the last bar of the dataset when the market is closed, or on the bar immediately preceding the real-time bar when the market is open. Returns false
otherwise.
Type
series bool
Note: Lipi script code that uses this variable could calculate differently on history and real-time data.
Please note that using this variable/function can cause indicator repainting.
barstate.isnew
Returns true
if the script is currently calculating on a new bar; otherwise, it returns false
. This variable is true
when processing historical bars or during the first update of a newly created real-time bar.
Type
series bool
Example:
indicator("")
updateNo() {
intra int updateNo = na
if barstate.isnew {
updateNo := 1
} else {
updateNo := updateNo + 1
}
return updateNo
Note: Lipi script code that uses this variable could calculate differently on history and real-time data.
Please note that using this variable/function can cause indicator repainting.
barstate.isrealtime
Returns true
if the current bar is a real-time bar; otherwise, it returns false
.
Type
series bool
Note: Lipi script code that uses this variable could calculate differently on history and real-time data.
Please note that using this variable/function can cause indicator repainting.