Estructuras de datos

Operaciones de Array, Map, Matrix y String para scripts de indicadores

PineTS admite cuatro espacios de nombres de estructuras de datos para la manipulación de datos complejos dentro de los indicadores.

Array (52 métodos)

Los arrays son colecciones ordenadas de elementos. Crea, manipula y consulta arrays para lógica avanzada de indicadores.

Creación

const a = array.from(1, 2, 3, 4, 5);
const b = array.new_float(10, 0.0);    // 10 elements, all 0.0
const c = array.new_int(5, 0);
const d = array.new_bool(3, false);
const e = array.new_string(2, '');

Acceso y modificación

FunciónDescripción
array.get(arr, index)Obtener elemento en el índice
array.set(arr, index, value)Establecer elemento en el índice
array.first(arr)Obtener el primer elemento
array.last(arr)Obtener el último elemento
array.push(arr, value)Añadir al final
array.pop(arr)Eliminar y devolver el último
array.unshift(arr, value)Anteponer al inicio
array.shift(arr)Eliminar y devolver el primero
array.insert(arr, index, value)Insertar en el índice
array.remove(arr, index)Eliminar en el índice
array.clear(arr)Eliminar todos los elementos

Tamaño y transformación

FunciónDescripción
array.size(arr)Número de elementos
array.slice(arr, start, end)Extraer subarray
array.concat(arr1, arr2)Concatenar arrays
array.copy(arr)Copia superficial
array.fill(arr, value, start?, end?)Rellenar con un valor
array.reverse(arr)Invertir en el lugar
array.sort(arr, order?)Ordenar en el lugar
array.sort_indices(arr, order?)Devolver índices ordenados
array.join(arr, separator)Unir en una cadena

Búsqueda

FunciónDescripción
array.indexof(arr, value)Primer índice del valor
array.lastindexof(arr, value)Último índice del valor
array.includes(arr, value)Comprobar si contiene el valor
array.binary_search(arr, value)Búsqueda binaria (array ordenado)
array.every(arr)Verdadero si todos los elementos son verdaderos en contexto booleano y no son na; no acepta un predicado
array.some(arr)Verdadero si algún elemento es verdadero en contexto booleano y no es na; no acepta un predicado

Estadísticas

FunciónDescripción
array.sum(arr)Suma
array.avg(arr)Promedio
array.min(arr)Mínimo
array.max(arr)Máximo
array.median(arr)Mediana
array.mode(arr)Moda
array.stdev(arr)Desviación estándar
array.variance(arr)Varianza
array.covariance(arr1, arr2)Covarianza
array.range(arr)Rango (máx. - mín.)
array.percentrank(arr, index)Rango percentil del elemento en el índice indicado, empezando en cero

Mapa (11 métodos)

Diccionarios de clave-valor para datos asociativos:

const m = map.new();
map.put(m, 'ema', ta.ema(close, 20));
map.put(m, 'sma', ta.sma(close, 20));

const emaValue = map.get(m, 'ema');
const hasKey = map.contains(m, 'ema');     // true
const allKeys = map.keys(m);               // ['ema', 'sma']
FunciónDescripción
map.new()Crear mapa vacío
map.get(m, key)Obtener valor
map.put(m, key, value)Establecer valor
map.put_all(m, other)Copiar todo de otro mapa
map.contains(m, key)Comprobar si existe la clave
map.remove(m, key)Eliminar clave
map.keys(m)Todas las claves
map.values(m)Todos los valores
map.size(m)Recuento de elementos
map.clear(m)Eliminar todo
map.copy(m)Duplicar

Matriz

Estructuras de datos 2D para operaciones matemáticas avanzadas:

const m = matrix.new(3, 3, 0);  // 3x3 matrix of zeros
matrix.set(m, 0, 0, 1);
matrix.set(m, 1, 1, 1);
matrix.set(m, 2, 2, 1);         // Identity matrix

Operaciones clave

CategoríaFunciones
Accesoget, set, row, col
Tamañorows, columns, elements_count
Modificaradd_row, add_col, remove_row, remove_col, swap_rows, swap_columns, fill, reverse
Transformartranspose, reshape, submatrix, concat, copy
Aritméticamult, pow, diff
Álgebra linealdet, inv, pinv, eigenvalues, eigenvectors, rank, trace
Estadísticassum, avg, min, max, median, mode
Pruebas booleanasis_square, is_identity, is_diagonal, is_symmetric, is_triangular, is_zero, is_binary, is_stochastic

String (19 métodos)

Manipulación de cadenas para etiquetas, formato y procesamiento de texto:

FunciónDescripción
str.length(s)Longitud de cadena
str.contains(s, substr)Comprobar si contiene una subcadena
str.startswith(s, prefix)Comprobar prefijo
str.endswith(s, suffix)Comprobar sufijo
str.pos(s, substr)Encontrar la posición de una subcadena
str.match(s, pattern)Coincidencia con regex
str.substring(s, start, end)Extraer subcadena
str.split(s, delimiter)Dividir en un array
str.replace(s, old, new)Reemplazar la primera aparición
str.replace_all(s, old, new)Reemplazar todas las apariciones
str.lower(s)A minúsculas
str.upper(s)A mayúsculas
str.trim(s)Eliminar espacios en blanco
str.repeat(s, count)Repetir cadena
str.format(fmt, ...)Formatear cadena
str.tonumber(s)Convertir a número
str.tostring(value)Convertir a cadena

Log (3 métodos)

Registro para depurar indicadores durante el desarrollo:

log.info('RSI value: ' + str.tostring(rsi));
log.warning('Volume spike detected');
log.error('Invalid input configuration');