I have Pine scripts to port
Line-by-line conversion with a mark in the gutter on both sides, then a bar-for-bar proof against the Pine reference.
IndicatorSmith is a local charting workstation with a Pine Script → Python converter — and an agent that does the migration for you. Say it once and it works through the library: converts each script, proves the result against the Pine reference bar for bar, rebuilds the chart setup, and names the lines it could not convert instead of faking them. Not on sale yet; planned pricing is €249 once, with the first 12 months of updates included.
Its last run in the demo: 4 scripts · 44 clean lines · 2 unsupported · 0 differing bars in total
Not a chat box that describes the work. A standing instruction you set in one click, and an agent that then converts, proves and reports on its own — logging every cycle with what it did, why, and the number it produced. Everything on this page is printed by the demo; open it and you will get the same lines.
A converter you cannot check is a rewrite you have to trust. So every conversion is run beside the Pine reference on the same bars and counted. This is the demo's Equivalence tab on rsi_divergence.py, BTCUSD 1D — with a typical hand port of the same script in the third row, for contrast.
| Implementation | Bars | Differ | Max Δ | Signals | Off |
|---|---|---|---|---|---|
| Pine reference | 306 | — | — | 6 | — |
| IndicatorSmith conversion | 306 | 0 | 0 | 6 | 0 |
| Hand port using an EMA instead of Wilder smoothing | 306 | 306 | 21.93 | 9 | 3 |
306 of 306 bars agree. The converted Python reproduces RSI 14 exactly, and fires the same 6 signals on the same bars. Costs and fills are not part of this comparison — that is the backtest below.
Pine’s ta.rsi smooths with ta.rma (Wilder, alpha = 1/N). Porting it with a plain EMA (alpha = 2/(N+1)) looks right and reads wrong — the level is systematically off, so overbought and oversold cross on different bars. It also produces 13 bars with no value at all, where Pine has one.
The demo opens with a single question — “What are you here to do?” — and five answers. Picking one sets the panes, the indicators, the dock, the guards and the standing instruction, then explains what it chose and produces the first real result. Each answer states what it costs you, because none of them is free.
Line-by-line conversion with a mark in the gutter on both sides, then a bar-for-bar proof against the Pine reference.
Costs on by default, quarter-Kelly sizing inside a 7.5 % per-asset ceiling, and a verdict that is allowed to be no.
A watch across three symbols on the 4h, plus one armed alert built from what is actually plotted.
Six symbols, layouts as plain JSON you can read and commit, and 1, 2 or 4 panes with one crosshair across all of them.
One pane, the chart maximised, EMA 20 and 50, and nothing else asking for your attention.
The sixth option is no option. Skip, and the workspace stays exactly as it was; the agent logs that it changed nothing rather than quietly configuring something.
Three lines the agent actually prints. None of them makes the product look better — which is exactly why they are here.
“What I could not do: rsi_divergence.pine calls label.new(), and there is no equivalent object here yet. The signal still plots; the caption is gone. I would rather hand you that sentence than a silent approximation.”
— end of the conversion queue
“No. I do not size with leverage multiples and I will not model one. Sizing here is quarter Kelly (0.25) on the measured edge, capped at 7.5 % of equity per asset, with fees at 4 bps, slippage at 20 bps and a −20 % drawdown halt. That is the ceiling, not a starting point I negotiate up from.”
— asked for a leverage multiple
“Checked BTCUSD, ETHUSD, SPX at bar 521 — said nothing. SPX crossed up and separated to 0.37 × ATR, but RSI is 76.0 — on the wrong side of 50 for that direction, so the cross and the momentum disagree and I stayed quiet.”
— the watch log, a quiet cycle
Educational model output on illustrative sample data. Nothing here is investment advice.
Paste any v4, v5 or v6 indicator or strategy. The converter parses it into an AST, resolves the series semantics and emits vectorised Python that produces the same values bar-for-bar.
History references become shifts, var blocks become accumulations, request.security gets an explicit lookahead argument, and every line is reported as translated, approximated or unsupported. Nothing is dropped silently.
ta, math, str, array, matrix, strategy and requestimport · strategies become runnable backtestsrsi_divergence.pyThe fastest way to run eight synced panes and a hundred indicators on a laptop. Every market you have a key for. Every chart type. No cap per tier, no server between you and your data.
Open the demo →Any converted strategy() runs on the visible symbol with realistic fees and slippage — equity curve, drawdown, CAGR, Sharpe, win rate and trade list, without leaving the chart.
Compare trade counts with the Pine original on the same range. A different count means a signal-timing difference, and the report tells you which line caused it.
The card beside this is a sample report over two years of 4h bars — more history than the guest data pack carries, so the demo cannot reproduce it. What the demo does reproduce is the cost model and the arithmetic: it prints gross and net side by side on whatever window you are on, charges 4 bps of fees and 20 bps of slippage on every fill, and says “it does not survive its costs” when that is the answer.
| All | Long | Short | |
|---|---|---|---|
| Profit, before costs | +€4,118 | +€4,690 | −€572 |
| Win rate | 58.4% | 61.2% | 47.1% |
| Profit factor | 1.72 | 2.04 | 0.88 |
| Max drawdown | −8.9% | −6.1% | −4.4% |
| Trades | 184 | 121 | 63 |
Alerts are evaluated by the engine on your laptop or your VPS — price crossings, indicator conditions, any alertcondition from a converted script — with desktop, e-mail, webhook or Telegram delivery.
No alert count limit, no throttling because someone else's server is busy. History is a local SQLite table you can query. Bar replay shows you, bar by bar, why an alert fired.
Nothing below is gated behind a higher tier. Every module ships with the engine and stays yours when you stop paying for updates.
State one instruction and it works your library on its own: convert, prove bar for bar, log every cycle, and name what it could not do. Pause, undo and stop are one click each.
See it working →GPU-accelerated candles, bars, line, Heikin-Ashi, Renko, range and tick charts. 32 magnet-aware drawing tools with alerts on trendline touches.
Explore charting →Pine v4 / v5 / v6 indicators, strategies and libraries to readable Python on the forge API, with a per-line report and regression test.
140+ built-ins across trend, momentum, volatility, volume, structure and statistics — each one a Python file you can open, copy and modify.
Browse the library →Unlimited alerts evaluated locally on bar close and on tick. Desktop, e-mail, webhook and Telegram delivery with indicator values in the message.
See alerts →1 · 2 · 4 · 8 panes with symbol, timeframe, crosshair and drawings linked per pane or layout-wide. Layouts are JSON files you can version.
Layouts →Bring your own keys: 8 exchange and broker connectors plus Yahoo Finance and CSV. Bars cached in Parquet, so the second load is instant and offline.
Data guide →IndicatorSmith never redistributes exchange data, which is why there is no data fee. Connect the venues you already have accounts with using read-only keys.
Planned: buy once, own forever. The first 12 months of updates are included; after that, updates are optional at €79 a year. IndicatorSmith is not on sale yet, so nothing is charged today.
Perpetual licence for the current release · point-release fixes included forever
The full workstation, forever.
Perpetual licence · 3 devices · v1.14.x and its point releases
Every new release, the day it ships.
Same perpetual licence · update contract renews yearly · cancel anytime, keep the last version
Planned pricing. IndicatorSmith is not on sale yet. Full pricing, the update model explained and the 3-year comparison →
request.seed, polyline, some table styling) is reported as unsupported per line rather than silently dropped. See the unsupported functions table.Hand the porting to the agent, connect your own data, and stop paying rent on your charts. Planned pricing: €249 once, 12 months of updates included. Not on sale yet.