npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pinets

v0.8.6

Published

Run Pine Script anywhere. PineTS is an open-source transpiler and runtime that brings Pine Script logic to Node.js and the browser with 1:1 syntax compatibility. Reliably write, port, and run indicators or strategies on your own infrastructure.

Readme


What is PineTS?

PineTS is an open-source transpiler and runtime that brings Pine Script to JavaScript ecosystem. Write indicators once, run them anywhere : on your own servers, in the browser, or embedded in your trading applications.

import { PineTS, Provider } from 'pinets';

const pineTS = new PineTS(Provider.Binance, 'BTCUSDT', '1h', 100);

// Run native Pine Script directly
const { plots } = await pineTS.run(`
//@version=5
indicator("EMA Cross")
plot(ta.ema(close, 9), "Fast", color.blue)
plot(ta.ema(close, 21), "Slow", color.red)
`);

What is Pine Script?
Pine Script is a domain-specific programming language created by TradingView for writing custom technical analysis indicators and strategies.

Disclaimer : PineTS is an independent project and is not affiliated with, endorsed by, or associated with TradingView or Pine Script™. All trademarks and registered trademarks mentioned belong to their respective owners.


Why PineTS?

| Challenge | PineTS Solution | | ------------------------------------------- | ---------------------------------------------------- | | Pine Script only runs on TradingView | Run indicators on your own infrastructure | | Can't integrate indicators with custom apps | Full JavaScript/TypeScript integration | | Limited to TradingView's data sources | Use any data source (Binance, custom APIs, CSV) | | No programmatic access to indicator values | Get raw values for backtesting, alerts, ML pipelines | | Can't run indicators server-side | Works in Node.js, Deno, Bun, browsers |


Quick Start

Installation

npm install pinets

Hello World

import { PineTS, Provider } from 'pinets';

// Initialize with Binance data
const pineTS = new PineTS(Provider.Binance, 'BTCUSDT', '1h', 100);

// Calculate a simple moving average
const { plots } = await pineTS.run(`
//@version=5
indicator("My First Indicator")
sma20 = ta.sma(close, 20)
plot(sma20, "SMA 20")
`);

console.log('SMA values:', plots['SMA 20'].data);

That's it! You're running Pine Script in JavaScript.


Features

Core Capabilities

  • Native Pine Script v5/v6 : Run original TradingView code directly (experimental)
  • 60+ Technical Indicators : SMA, EMA, RSI, MACD, Bollinger Bands, and more
  • Time-Series Processing : Full Pine Script semantics with lookback support
  • Real-time Streaming : Live data processing with event-based updates
  • Multi-Timeframe Analysis : request.security() for MTF indicators
  • High Precision : Matches TradingView's calculation precision

Two Ways to Write Indicators

//@version=5
indicator("RSI Strategy")

rsi = ta.rsi(close, 14)
sma = ta.sma(rsi, 10)

plot(rsi, "RSI")
plot(sma, "Signal")
//@PineTS
indicator('RSI Strategy');

const rsi = ta.rsi(close, 14);
const sma = ta.sma(rsi, 10);

plot(rsi, 'RSI');
plot(sma, 'Signal');

Live Demos

See PineTS in action with these browser-based examples:

Demos are Built with PineTS + QFChart


Usage

Running Native Pine Script

import { PineTS, Provider } from 'pinets';

const pineTS = new PineTS(Provider.Binance, 'BTCUSDT', 'D', 200);

const { plots } = await pineTS.run(`
//@version=5
indicator("MACD", overlay=false)

[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)

plot(macdLine, "MACD", color.blue)
plot(signalLine, "Signal", color.orange)
plot(hist, "Histogram", color.gray, style=plot.style_histogram)
`);

// Access the calculated values
console.log('MACD Line:', plots['MACD'].data);
console.log('Signal Line:', plots['Signal'].data);

Using PineTS Syntax

import { PineTS, Provider } from 'pinets';

const pineTS = new PineTS(Provider.Binance, 'ETHUSDT', '4h', 100);

const { plots } = await pineTS.run(($) => {
    const { close, high, low } = $.data;
    const { ta, plot, plotchar } = $.pine;

    // Calculate indicators
    const ema9 = ta.ema(close, 9);
    const ema21 = ta.ema(close, 21);
    const atr = ta.atr(14);

    // Detect crossovers
    const bullish = ta.crossover(ema9, ema21);
    const bearish = ta.crossunder(ema9, ema21);

    // Plot results
    plot(ema9, 'Fast EMA');
    plot(ema21, 'Slow EMA');
    plotchar(bullish, 'Buy Signal');
    plotchar(bearish, 'Sell Signal');

    return { ema9, ema21, atr, bullish, bearish };
});

Real-time Streaming

import { PineTS, Provider } from 'pinets';

const pineTS = new PineTS(Provider.Binance, 'BTCUSDT', '1m');

const stream = pineTS.stream(
    `
    //@version=5
    indicator("Live RSI")
    plot(ta.rsi(close, 14), "RSI")
    `,
    { live: true, interval: 1000 }
);

stream.on('data', (ctx) => {
    const rsi = ctx.plots['RSI'].data.slice(-1)[0].value;
    console.log(`RSI: ${rsi.toFixed(2)}`);

    if (rsi < 30) console.log('Oversold!');
    if (rsi > 70) console.log('Overbought!');
});

stream.on('error', (err) => console.error('Stream error:', err));

Custom Data Source

import { PineTS } from 'pinets';

// Your own OHLCV data
const candles = [
    { open: 100, high: 105, low: 99, close: 103, volume: 1000, openTime: 1704067200000 },
    { open: 103, high: 108, low: 102, close: 107, volume: 1200, openTime: 1704153600000 },
    // ... more candles
];

const pineTS = new PineTS(candles);

const { plots } = await pineTS.run(`
//@version=5
indicator("Custom Data")
plot(ta.sma(close, 10))
`);

API Coverage

PineTS aims for complete Pine Script API compatibility. Current status:

Data & Context

syminfo barstate timeframe ticker builtin session

Technical Analysis & Math

ta math request input

Data Structures

array matrix map types

Visualization

plots color chart label line box table linefill polyline

Utilities

str log strategy

Click any badge to see detailed function-level coverage


Documentation


Use Cases

Algorithmic Trading

  • Build custom trading bots using Pine Script strategies
  • Integrate indicators with your execution systems

Backtesting

  • Test Pine Script strategies against historical data
  • Export indicator values for analysis in Python/R

Alert Systems

  • Create custom alert pipelines based on indicator signals
  • Monitor multiple assets with server-side indicator calculations

Research & Analysis

  • Process large datasets with Pine Script indicators
  • Feed indicator outputs into machine learning models

Custom Dashboards

  • Embed live indicators in web applications
  • Build real-time monitoring dashboards

Roadmap

| Status | Feature | | ------ | ----------------------------------------- | | ✅ | Native Pine Script v5/v6 support | | ✅ | 60+ technical analysis functions | | ✅ | Arrays, matrices, and maps | | ✅ | Real-time streaming | | ✅ | Multi-timeframe with request.security() | | 🚧 | Strategy backtesting engine | | 🚧 | Additional data providers | | 🎯 | Pine Script v6 full compatibility | | 🎯 | Market data Providers | | 🎯 | Trading Connectors |


Related Projects

  • QFChart : Charting library optimized for PineTS visualization

Contributing

Contributions are welcome! Whether it's:

  • Adding missing Pine Script functions
  • Improving documentation
  • Fixing bugs
  • Suggesting features

Please feel free to open issues or submit pull requests.


License

AGPL-3.0 - See LICENSE for details.