Home » Pinescript Syntax » Understanding Calculation Based on Historical Bars in Pine Script

Understanding Calculation Based on Historical Bars in Pine Script

Photo of author
Published on

In this article, we dive into the mechanics of how a simple Pine Script executes on historical bars, providing insights and practical examples to help both beginners and advanced users understand the process.

Introduction to Historical Bar Calculations

When Pine Script executes on historical data, it processes each bar individually, using the bar’s close as the point of execution. This means that all built-in variables such as open, high, low, close, volume, and time are set to their respective values for the current bar. The script runs once for every historical bar on the chart, allowing for the calculation of indicators based on past data.


Let’s analyze the given Pine Script example, step by step, to understand how it operates on historical bars:

indicator("Custom Indicator", overlay = true)
source = close
shortMA = ta.sma(source, 5)
longMA = ta.sma(source, 50)
crossSignal = ta.cross(shortMA, longMA)
plot(shortMA, color = color.blue)
plot(longMA, color = color.black)
plotshape(crossSignal, color = color.red)

Initial Setup

  • Indicator Declaration: The script begins with indicator("Custom Indicator", overlay = true), defining the script as an indicator that overlays the price chart.
  • Source Variable: source = close assigns the closing price of the current bar to the variable source.

Moving Averages Calculation

  • Short-term Moving Average (shortMA): shortMA = ta.sma(source, 5) calculates the 5-period simple moving average of the closing prices.
  • Long-term Moving Average (longMA): longMA = ta.sma(source, 50) calculates the 50-period simple moving average, providing a longer-term trend indication.

Cross Signal Detection

  • Cross Signal: crossSignal = ta.cross(shortMA, longMA) determines if a crossover between the short-term and long-term moving averages occurs. This is a common technique used to identify potential trend reversals.

Plotting Results

  • Plotting MAs: The plot functions are used to draw the moving averages on the chart, with the short-term MA in blue and the long-term MA in black.
  • Plotting Cross Signal: plotshape(crossSignal, color = color.red) visually represents the crossover points, highlighting potential buy or sell signals.

Execution on Historical Bars

Each line of the script is executed sequentially for every historical bar, starting from the first bar in the dataset. This sequential execution ensures that the calculations for moving averages and the cross signal are based on the exact values available at the time of each bar’s close.

Key Features and Takeaways

  • Function Usability: Pine Script’s functions, such as ta.sma for calculating simple moving averages and ta.cross for detecting crossovers, are versatile tools for analyzing historical data.
  • Syntax and Application: The script syntax is straightforward, enabling users to easily customize their indicators by changing parameters like the period of moving averages or the source data.
  • Practical Application: This example demonstrates how Pine Script can be used to identify trend reversals through moving average crossovers, a fundamental technique in technical analysis.

By understanding the execution flow of Pine Script on historical bars, users can develop more complex and nuanced indicators and strategies tailored to their specific trading needs.

Leave a Comment