Home » Drawing On Charts » Understanding the line.copy() Function in Pine Script

Understanding the line.copy() Function in Pine Script

Photo of author
Published on

In this article, we’ll delve deep into how to use the line.copy() function effectively, illustrated by an example that showcases a practical application for visualizing the price range of the last 100 bars on a trading chart.


The syntax for the line.copy() function is straightforward:

line.copy(id) → series line


  • id (series line): This is the line object that you intend to clone.


Let’s break down the provided example step-by-step to understand how line.copy() is used in a practical context.

indicator('Last 100 bars price range', overlay = true)
lookBackPeriod = 100
highestPrice = ta.highest(lookBackPeriod)
lowestPrice = ta.lowest(lookBackPeriod)
if barstate.islastconfirmedhistory
    var lineTop = line.new(bar_index[lookBackPeriod], highestPrice, bar_index, highestPrice, color = color.green)
    var lineBottom = line.copy(lineTop)
    line.set_y1(lineBottom, lowestPrice)
    line.set_y2(lineBottom, lowestPrice)
    line.set_color(lineBottom, color.red)

Walkthrough of Code

  1. Setting Up the Indicator: The script starts by defining an indicator with the title ‘Last 100 bars price range’, which overlays on the main chart.
  2. Defining the Lookback Period: The lookBackPeriod variable is set to 100, indicating that the script will consider the last 100 bars.
  3. Calculating Highest and Lowest Prices: highestPrice and lowestPrice variables are calculated using ta.highest() and ta.lowest() functions, respectively, over the last 100 bars.
  4. Drawing the Top Line: If the script is running on the last confirmed historical bar, it creates a new green line (lineTop) at the highest price level using line.new().
  5. Cloning the Top Line: The line.copy() function is used to clone lineTop, creating a new line object (lineBottom) with the same properties.
  6. Adjusting the Bottom Line: The script then modifies lineBottom by setting its Y-coordinates to the lowest price using line.set_y1() and line.set_y2(), and changes its color to red.

Key Features and Takeaways

  • Functionality: The line.copy() function allows for the efficient duplication of line objects, which is particularly useful when creating multiple lines with shared attributes.
  • Syntax and Application: This function requires the ID of the line object to be cloned as its argument. The returned object can be manipulated using line.setXXX and line.getXXX functions.
  • Practical Use Case: In the given example, line.copy() is utilized to create a visual representation of the highest and lowest price levels over a specified number of bars, demonstrating its utility in financial charting and technical analysis.


The line.copy() function in Pine Script is a versatile tool that can significantly enhance the visual representation of data on trading charts. By understanding how to use this function, along with other line manipulation functions, traders and developers can create more informative and visually appealing indicators.

Leave a Comment