Verify against the original
Check an imported script bar by bar against the values your charting platform exports as CSV, and show the result on your listing.
A clean import report says the script converted. It does not prove that every value is the same. Verify against original does that: you export the original indicator's values from the platform you came from, ChartDeck runs the converted script on the same market and timeframe, and the two are compared bar by bar.
#1. Export the original's values
On the original platform, open a chart with the indicator on it, on the market and timeframe you want to check. Use your charting platform's CSV export of the chart's data. The file must have:
- a time column, named
time,Dateortimestamp(any letter case). Unix seconds, unix milliseconds and ISO 8601 dates all work; a time without a zone is read as UTC, and a date alone is midnight UTC; - one column per plot, named with the plot's title (the importer keeps titles, so
EMA 9in the original isEMA 9in ChartDeck). For the listing badge, every visible plot needs its column (a plot hidden withdisplay = display.nonedoes not); open,high,lowandclose(and optionallyvolume). ChartDeck checks that the bars themselves agree, so a different exchange or market is reported as "the bars differ" instead of being blamed on the script. The listing badge needs them: they tie the comparison to real market data.
Comma, semicolon (with a decimal comma) and tab separated files are read; quoted fields, a byte-order mark and Windows line ends are fine. Empty cells, NaN and ∅ count as no value. The file can be up to 5 MB and 50,000 rows.
More history is better: export at least a few hundred bars. Recursive indicators (EMA, RSI and anything built on them) depend on where the chart's history starts, so the first bars of the export can differ slightly; the values converge after that.
#2. Run the check
In the import dialog, under the converted script, open Verify against original:
- Pick the exchange, symbol and timeframe. They start as the active chart's.
- Add CSV… and choose the exported file.
- Run check. ChartDeck loads up to 5,000 of its own bars covering the file's times (plus some warm-up before them), runs the converted script in your browser, and compares.
#3. Read the report
- The match: the share of compared bars where every plot agrees, with the number of bars compared, the warm-up bars skipped (where either side has no value yet) and the bars lined up.
- Alignment notes: when the file stamps each bar at its close, or its times are a whole number of hours off UTC (a time-zone setting), ChartDeck finds the shift and says so. On hourly bars the two look the same; it is reported as a close stamp.
- First mismatch: the earliest bar and plot that differ, with the expected (file) and the computed value.
- Per plot: which file column matched which plot, how many values matched, and the largest absolute and relative error.
- Unmatched columns on either side. Columns pair by exact title, then ignoring letter case and spaces, then by a unique prefix (
RSIpairs withRSI 14when no other plot starts withRSI).
A value matches when the difference is at most one millionth of the value, or half a unit of the last digit the file was written with (a file rounded to 2 decimals is compared to 0.005), but never more than about 5 significant digits of the plot's own size: a column written with too few decimals (an oscillator exported as whole numbers) is not given a wider tolerance, and the report says so. Plots on the price scale also allow half a tick of the market. Copy report puts the whole report on the clipboard.
The result is saved with the import report of the script.
#4. Show it on your listing
The listing badge, Matches original export (checked by ChartDeck), needs all of:
- at least 99% over at least 200 compared bars;
- a file column for every visible plot, each with at least 200 compared bars (plots without a column are listed in the report);
- the file's open / high / low / close matching ChartDeck's bars on at least 99% of at least 200 bars.
When the check in your browser meets it, you can tick Show "Matches original export (checked by ChartDeck)" on the listing. After you save, ChartDeck sends your file to its servers and runs the check again there, with the saved script on its own bars. Only that server result can show the badge; its tooltip says what was compared (the market, the timeframe, the bars and the plots). The badge shows on the listing while that version is the published one: publishing a newer version removes it until you verify again. ChartDeck runs one check at a time; if another one is running, try again in a minute.
The check in your browser is a preview. The file must be a plain chart export: at most 5 MB, 50,000 rows and 64 columns, with numbers only besides the time (no spreadsheet formulas, no markup).
#When it does not match
| What you see | Usual cause |
|---|---|
| The bars differ | Another exchange, a spot / perpetual mix-up, or another timeframe. Pick the same market as the export |
| Mismatches only in the first bars, shrinking | Where the history starts: the original chart's first bar differs from ChartDeck's. Export more bars |
| One plot off everywhere | A real conversion difference. Read the Meaning changed items of the import report and Known differences |
| No plot matched | The file's column names are not the plot titles. Rename the columns to the titles |
Scripts that read another market or timeframe cannot be checked yet.