Open source · by LuxAlgo

Run Pine Script® everywhere.

The open-source transpiler and runtime that bridges Pine Script® and the JavaScript ecosystem. Develop indicators once — deploy them on your servers, in the browser, or inside your trading platform.

$

[ 01 ]

Point it at any market

Initialize with a provider, symbol, and timeframe. Stream from Binance, plug in a custom API, or replay your own data — PineTS is not tied to any one source.

indicator.ts
import { PineTS, Provider } from 'pinets' // Any market, any timeframe — Binance,// custom APIs, or your own CSV dataconst pineTS = new PineTS(  Provider.Binance,  'BTCUSDT', '1h', 100,)

[ 02 ]

Run native Pine Script®

Paste original Pine Script® v5/v6 and run it as-is — a simple RSI or MACD, or full Order Blocks, session levels, and forecasting suites. The transpiler preserves time-series semantics, lookback, and TradingView®-grade calculation precision.

ema-cross.pine
const { plots } = await pineTS.run(`//@version=6indicator("EMA Cross")plot(ta.ema(close, 9), "Fast", color.blue)plot(ta.ema(close, 21), "Slow", color.red)`)

[ 03 ]

Or write it in TypeScript

Prefer staying in the JavaScript world? The PineTS syntax mirrors Pine Script® one-to-one — same ta functions, same behavior, full type safety.

strategy.ts
await pineTS.run(($) => {  const { close } = $.data  const { ta, plot } = $.pine   const ema9 = ta.ema(close, 9)  const ema21 = ta.ema(close, 21)  const bullish = ta.crossover(ema9, ema21)   plot(ema9, 'Fast EMA')  plot(ema21, 'Slow EMA')})

[ 04 ]

Read the values

Every plot comes back as raw numeric series. Feed backtests and ML pipelines, trigger alerts, or render with any charting library — nothing stays locked in a chart.

output
// Raw series, ready for anythingconsole.log(plots['Fast'].data) // → feed backtests, fire alerts,// → train models, render charts

Beyond the chart.

Everything Pine Script® couldn't do before it ran on your stack.

Your infrastructure

Pine Script® logic on your own servers and in your own products — not only on TradingView®.

Any data source

Binance out of the box; bring custom APIs or CSV history for everything else.

No limits, simple to complex

RSI and MACD to Order Blocks, session levels, and forecasting overlays — if you can write it, it runs.

High precision

Calculations match TradingView®’s output, so results transfer 1:1.

Multi-timeframe

request.security() works, so MTF indicators run the way you wrote them.

Real-time streaming

Event-based updates process live data as it arrives — built for alerts and bots.

Runs in
Node.js
Deno
Bun
Browsers
AGPL-3.0 · Commercial licensing: business@luxalgo.com

Your logic is yours.

PineTS executes Pine Script® independently — in your app, your backend, your research stack. Open source on GitHub and npm. For commercial licensing, reach us at business@luxalgo.com.

PineTS is an independently developed open-source compiler and runtime engine. LuxAlgo Global, LLC and the PineTS project are not affiliated with, sponsored by, endorsed by, or in any way officially associated with TradingView, Inc. “Pine Script®” and “TradingView®” are registered trademarks of TradingView, Inc.