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.
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.
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.
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.
// 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.
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.