0% found this document useful (0 votes)
13 views

Advanced Arrays

Pine script array besic tutorials

Uploaded by

Esaro Logics
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

Advanced Arrays

Pine script array besic tutorials

Uploaded by

Esaro Logics
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

//@version=5

indicator("Advanced Array Tutorial", overlay=false)

// 1. Array Declaration and Initialization


//@variable Arrays with different types
var float[] floatArray = array.new_float(5, 0.0) // Initialize float array of
size 5
var int[] intArray = array.new_int(3, 0) // Initialize int array of size
3
var bool[] boolArray = array.new_bool(2, false) // Initialize boolean array of
size 2
var string[] stringArray = array.new_string(2, "") // Initialize string array of
size 2

// 2. Dynamic Array Operations


//@variable Dynamic array for storing prices
var float[] priceHistory = array.new_float(0) // Empty array with dynamic
size
if array.size(priceHistory) > 20 // Limit array size to 20
array.shift(priceHistory) // Remove oldest element
array.push(priceHistory, close) // Add current close price

// 3. Array Manipulation Functions


updateArrays() =>
// Set values
array.set(floatArray, 0, high) // Set first element to
current high
array.set(floatArray, 1, low) // Set second element to
current low

// Get values
firstElement = array.get(floatArray, 0) // Get first element

// Insert value at specific position


array.insert(intArray, 1, 42) // Insert 42 at position 1

// Remove element at specific position


array.remove(intArray, 0) // Remove first element

// Copy array
float[] arrayCopy = array.copy(floatArray) // Create a copy of floatArray

// 4. Array Mathematical Operations


calculateArrayStats() =>
float arraySum = array.sum(floatArray) // Sum of all elements
float arrayMax = array.max(floatArray) // Maximum value
float arrayMin = array.min(floatArray) // Minimum value
float arrayAvg = array.avg(floatArray) // Average value
int arraySize = array.size(floatArray) // Array size

[arraySum, arrayMax, arrayMin, arrayAvg, arraySize]

// 5. Array Sorting and Searching


sortAndSearch() =>
array.sort(floatArray, order.ascending) // Sort array in ascending
order
int indexOfValue = array.indexof(floatArray, high) // Find index of high value
bool containsValue = array.includes(floatArray, low) // Check if array contains
low value
// 6. Advanced Array Processing
processArray() =>
// Slice array (get subset of array)
float[] slicedArray = array.slice(floatArray, 1, 3)

// Join arrays
array.concat(floatArray, slicedArray)

// Reverse array
array.reverse(floatArray)

// 7. Example: Moving Window Calculation


var float[] windowPrices = array.new_float(5, 0.0) // 5-period window
updateWindow() =>
array.shift(windowPrices) // Remove oldest price
array.push(windowPrices, close) // Add new price
array.avg(windowPrices) // Calculate average

// 8. Example: Custom Technical Indicator using Arrays


customIndicator() =>
var float[] highs = array.new_float(0)
var float[] lows = array.new_float(0)

// Maintain last 10 periods


if array.size(highs) > 10
array.shift(highs)
array.shift(lows)

array.push(highs, high)
array.push(lows, low)

highestHigh = array.max(highs)
lowestLow = array.min(lows)

[highestHigh, lowestLow]

// Execute calculations
[arraySum, arrayMax, arrayMin, arrayAvg, arraySize] = calculateArrayStats()
[highestHigh, lowestLow] = customIndicator()
windowAvg = updateWindow()

// Plot results
plot(windowAvg, "Window Average", color=color.blue)
plot(highestHigh, "Highest High", color=color.green)
plot(lowestLow, "Lowest Low", color=color.red)

// Add table to display array statistics


var table statsTable = table.new(position.top_right, 5, 2)
if barstate.islast
table.cell(statsTable, 0, 0, "Array Sum", bgcolor=color.gray)
table.cell(statsTable, 0, 1, str.tostring(arraySum), bgcolor=color.gray)
table.cell(statsTable, 1, 0, "Array Max", bgcolor=color.gray)
table.cell(statsTable, 1, 1, str.tostring(arrayMax), bgcolor=color.gray)
table.cell(statsTable, 2, 0, "Array Min", bgcolor=color.gray)
table.cell(statsTable, 2, 1, str.tostring(arrayMin), bgcolor=color.gray)
table.cell(statsTable, 3, 0, "Array Avg", bgcolor=color.gray)
table.cell(statsTable, 3, 1, str.tostring(arrayAvg), bgcolor=color.gray)
table.cell(statsTable, 4, 0, "Array Size", bgcolor=color.gray)
table.cell(statsTable, 4, 1, str.tostring(arraySize), bgcolor=color.gray)

You might also like