pinets is a CLI tool that executes TradingView Pine Script indicators via the PineTS runtime. It outputs structured JSON with calculated indicator values.
# Global install
npm install -g pinets-cli
# Or run directly with npx (no install needed)
npx pinets-cli run indicator.pine --symbol BTCUSDT -q
Verify (if installed globally):
pinets --version
When using npx, replace pinets with npx pinets-cli in all examples below.
pinets run [file] [options]
The indicator can be a file argument or piped from stdin.
| Flag | Description |
| ----------------------- | -------------------------------------------------------------------------------------------- |
| -s, --symbol | Symbol from Binance (e.g., BTCUSDT, ETHUSDT, SOLUSDT.P for futures) |
| -t, --timeframe | Candle timeframe: 1, 5, 15, 30, 60, 120, 240, 1D, 1W, 1M (default: 60) |
| -d, --data | JSON file with candle data (alternative to --symbol) |
| Flag | Description |
| --------------------- | -------------------------------------------------------------- |
| -o, --output | Write to file instead of stdout |
| -f, --format | default (plots only) or full (plots + result + marketData) |
| --pretty | Pretty-print JSON |
| --clean | Filter out null, false, and empty values from plot data |
| --plots | Comma-separated list of plot names to include (default: all) |
| -q, --quiet | Suppress info messages (essential when parsing stdout) |
| Flag | Description |
| ------------------- | -------------------------------------------------------- |
| -n, --candles | Number of output candles (default: 500) |
| -w, --warmup | Extra warmup candles excluded from output (default: 0) |
| Flag | Description |
| --------- | ------------------------------------------- |
| --debug | Show transpiled JavaScript code (to stderr) |
pinets run indicator.pine --symbol BTCUSDT --timeframe 60 --candles 100 -q
# EMA 200 needs at least 200 bars to initialize
pinets run ema200.pine -s BTCUSDT -t 1D -n 100 -w 200 -q
echo '//@version=5
indicator("RSI")
plot(ta.rsi(close, 14), "RSI")' | pinets run -s BTCUSDT -t 60 -n 20 -q
pinets run indicator.pine --data candles.json --candles 50 -q
pinets run rsi.pine -s BTCUSDT -t 60 -o results.json -q
pinets run indicator.pine -s BTCUSDT -f full -q --pretty
# Without --clean: 500 entries, mostly false
pinets run ma_cross.pine -s BTCUSDT -t 1D -n 500 -q
# With --clean: Only actual signals
pinets run ma_cross.pine -s BTCUSDT -t 1D -n 500 --clean -q
# Get only RSI, ignore bands
pinets run rsi_bands.pine -s BTCUSDT --plots "RSI" -q
# Get only Buy and Sell signals
pinets run signals.pine -s BTCUSDT --plots "Buy,Sell" -q
# Combine both: only signals, only true values
pinets run signals.pine -s BTCUSDT --plots "Buy,Sell" --clean -q
default format
{
"indicator": {
"title": "RSI",
"overlay": false
},
"plots": {
"RSI": {
"title": "RSI",
"options": { "color": "#7E57C2" },
"data": [
{ "time": 1704067200000, "value": 58.23 },
{ "time": 1704070800000, "value": 61.45 }
]
}
}
}
full format
Adds result (raw return values per bar) and marketData (OHLCV candles) to the default output.
[
{
"openTime": 1704067200000,
"open": 42000.5,
"high": 42500.0,
"low": 41800.0,
"close": 42300.0,
"volume": 1234.56,
"closeTime": 1704070799999
}
]
Required fields: open, high, low, close, volume. Recommended: openTime, closeTime.
pinets-cli accepts standard TradingView Pine Script v5+:
//@version=5
indicator("My Indicator", overlay=false)
// Technical analysis functions
rsi = ta.rsi(close, 14)
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)
sma = ta.sma(close, 20)
ema = ta.ema(close, 9)
bb_upper = ta.sma(close, 20) + 2 * ta.stdev(close, 20)
// Output — each plot() creates a named entry in the JSON output
plot(rsi, "RSI", color=color.purple)
-q when parsing JSON output programmatically.
NaN for the first N bars. Use --warmup to pre-feed the indicator.
time values are Unix timestamps in milliseconds.
| Indicator | Minimum warmup |
| ------------------- | -------------- |
| SMA(N) / EMA(N) | N |
| RSI(14) | 30 |
| MACD(12,26,9) | 50 |
| Bollinger Bands(20) | 30 |
| SMA(200) | 200+ |
Rule of thumb: set warmup to 1.5x-2x the longest lookback period.
共 1 个版本