Home » Array Functions » Array.pop Function In Pinescript

Array.pop Function In Pinescript

Photo of author
Published on

In this tutorial, we will dive into the details of the array.pop function in Pine Script. We will begin by a detailed explanation of the array.pop function. Finally, we will discuss a unique use case example to help you better understand how to implement and use the function effectively.

Understanding the Array.pop Function

The array.pop function is used to remove the last element from an array, effectively reducing its size by one. This function is particularly useful when you need to manage the size of an array dynamically, as in the case of a moving average calculation or a trailing stop loss strategy.

Syntax of the Array.pop Function

The syntax of the array.pop function is as follows:

array.pop(<array_name>)

Here, <array_name> is the name of the array from which you want to remove the last element. The function returns the value of the removed element, and the size of the array is reduced by one.

Unique Use Case Example

In this section, we will demonstrate a unique use case of the array.pop function by implementing a custom moving average crossover strategy with a dynamic lookback period. The lookback period will be determined by the number of bars since the last crossover.

//@version=5
indicator('Dynamic Moving Average Crossover', shorttitle='DMAC', overlay=true)

// User inputs
src = close
fast_len = input.int(9, title='Fast Length', minval=1)
slow_len = input.int(21, title='Slow Length', minval=1)

// Variables
var fast_ma_history = array.new_float()
var slow_ma_history = array.new_float()
var int last_crossover_bar = na
var int bars_since_crossover = na

// Moving average calculations
fast_ma = ta.sma(src, fast_len)
slow_ma = ta.sma(src, slow_len)

// Update moving average history
array.push(fast_ma_history, fast_ma)
array.push(slow_ma_history, slow_ma)

// Determine if a crossover
// occurred
crossover_occurred = ta.crossover(fast_ma, slow_ma) or ta.crossover(slow_ma, fast_ma)

if crossover_occurred
    last_crossover_bar := bar_index
    bars_since_crossover := 0
    bars_since_crossover
else
    bars_since_crossover := na(last_crossover_bar) ? na : bar_index - last_crossover_bar
    bars_since_crossover

// Limit the array size to the slow length
if array.size(fast_ma_history) > slow_len
    array.pop(fast_ma_history)
    array.pop(slow_ma_history)

// Plot moving averages
plot(fast_ma, color=color.new(color.blue, 0), title='Fast MA', linewidth=4)
plot(slow_ma, color=color.new(color.red, 0), title='Slow MA', linewidth=4)

// Plot background color on crossover
bgcolor(crossover_occurred ? color.green : na, transp=90)

// Plot bars since crossover
if barstate.islast
    label.new(x=bar_index, y=high, text=str.tostring(bars_since_crossover), style=label.style_label_down, color=color.black, textcolor=color.white, size=size.huge)
Array.pop Function

Code Explanation

In this example, we first define user inputs for the fast and slow moving average lengths. We then declare and initialize two arrays, fast_ma_history and slow_ma_history, to store the historical moving average values.

We calculate the simple moving averages (SMAs) for the specified lengths using the sma function and update the arrays with the latest moving average values using the array.push function.

To determine if a crossover has occurred, we use the crossover function. If a crossover is detected, we update the last_crossover_bar variable with the current bar index and reset the bars_since_crossover variable to 0. If no crossover is detected, we increment the bars_since_crossover variable by 1.

We then limit the size of the moving average history arrays to the slow length using the array.pop function, ensuring that we only store the necessary data.

Finally, we plot the fast and slow moving averages, highlight the background color when a crossover occurs, and display the number of bars since the last crossover as a label on the chart.

Key Takeaways

  • The array.pop function in Pine Script is used to remove the last element from an array, reducing its size by one.
  • This function is useful for managing the size of arrays dynamically, as demonstrated in our custom moving average crossover strategy example.
  • To use the array.pop function, simply call it with the name of the array you want to modify: array.pop(<array_name>).

Conclusion

In this tutorial, we explored the array.pop function in Pine Script, its syntax, and a unique use case example. By understanding and implementing this function, you can create more efficient and dynamic trading strategies or technical analysis

Leave a Comment