TradingView publishing workflow

Publishing TradingView Scripts: Visibility, Evidence and Version Notes

To publish a TradingView script, open your editable source in Pine Editor, add it to the chart, and select Publish. Prepare the description and chart, then choose two separate settings: Public or Private for discovery, and Open, Protected, or Invite-only for source visibility and use. Neither choice can be changed after publication. Review a private draft before creating a separate public release.

See the decision guide

Choose privacy and access on separate axes

Public or Private determines discovery. Open, Protected, or Invite-only determines code access and who can run the script. For example, Public + Invite-only lets people find a publication without giving them permission to use its script. Private + Open shares readable source with anyone who obtains its URL.

SettingWhat it controlsPractical consequence
PublicCommunity publicationDiscovery also depends on moderation status; public does not mean immediately searchable.
PrivatePublication reached through its URLKeep the link private. This is not an access list or a way to bypass public publishing rules.
OpenSource visible; script usableReaders can inspect the code and make a working copy.
ProtectedSource hidden; script usableUsers can run the script without individual permission, but cannot inspect its source.
Invite-onlySource hidden; usage permission requiredThe author grants access through Manage access. A URL alone does not grant usage.

Check account eligibility and publication status

Official limits checked on October 18, 2026: Basic supports private publications but not public ones; protected publishing requires a paid plan. The current Vendor Requirements name Premium and Ultimate for invite-only publishing and access management. Check the account message in the publishing window if an option is unavailable.

  • New public publications are limited to 5 per rolling 24 hours and 15 per rolling 30 days. These limits include moderated scripts; private publications and updates are excluded.
  • A new public script initially appears on its author profile pending review. Suggested scripts enter community discovery; Unsuggested scripts remain on the profile; Hidden scripts are unavailable to the community and cannot receive updates.
  • For the ordinary publication modes covered here, charging for script access requires a public invite-only publication and compliance with Vendor Requirements. Do not sell access to private scripts or add paywalls to open or protected scripts.
  • Private invite-only publications have a five-user access limit. Do not duplicate private publications to bypass it. Grant access only to users who request it.
  • If a publication is moderated, read the stated reason and use TradingView support or moderator guidance. Another privacy choice is not a workaround.

Write the explanation before preparing the chart

The description must stand on its own. Explain purpose, mechanics, usage, originality, and shortcomings even when source is visible. A closed-source description also needs a concrete reason for hiding its logic. A renamed moving average or unexplained mashup does not establish originality.

  • Use an English ASCII title and begin the description in English. Describe inputs with units, defaults, valid ranges, and whether they affect calculation or display.
  • If reusing another author's open-source code, credit them, add substantial improvements, and normally publish open-source. Closed-source reuse requires explicit permission or a qualifying public-domain exception; inspect both the rules and applicable license.
  • State whether values change intrabar, use higher-timeframe data, or draw into past bars. Do not disguise lookahead as predictive accuracy.
  • Keep promotional links and performance promises out of the publication. The Pineify product links on this educational webpage are not part of the sample description to paste into TradingView.

A complete description draft you can adapt

This text specifies a hypothetical range-position indicator for a private documentation exercise. No Pine implementation or TradingView chart run is supplied here. Copy the whole draft for planning, then reconcile every statement with your actual source and observations. The standard range-position formula alone does not justify a new public or protected publication.

Unpublished v1.1 description draft; no performance or runtime validation is claimedtext
Title: Closed-bar Range Position Audit

STATUS AND PURPOSE
Private documentation exercise, version 1.1. This draft specifies an indicator for checking where a completed bar closes inside its recent high-low range. It is not a strategy, trading signal service, or public release. No Pine implementation has been validated for this example.

CALCULATION
For a lookback of N chart bars, including the current bar, H is the highest high and L is the lowest low. On a completed bar with N valid OHLC bars and H > L:
Range position = 100 * (close - L) / (H - L).
A value of 0 means a close at L; 100 means a close at H. A value of 50 means the midpoint of this observed range, not a 50% probability of a price move. Before N valid bars are available, or when H = L, the specified output is unavailable. Missing OHLC data also makes the output unavailable.

INPUTS AND OUTPUTS
Lookback bars: integer, default 20, allowed 2 through 500.
Show reference levels: boolean, default true; display only.
Price source: the chart's close, fixed rather than selectable.
The intended pane contains a range-position plot and optional levels at 0, 50, and 100. The current unfinished bar is unavailable; a completed value belongs to that same bar without a negative plot offset.

HOW TO USE
Use standard time-based candles. Start with the default inputs. On a completed bar, inspect the last N highs and lows and reproduce the formula. Compare the result with the Data Window. A high value describes location within the measured range; it does not tell you to buy, sell, or place an order. Changing N changes the question being measured.

ORIGINALITY AND SOURCE HISTORY
The formula is the familiar unsmoothed stochastic range position. This exercise adds a documentation contract for completed bars, unavailable values, and regression checks; it makes no claim of a novel trading method. No third-party script source is reproduced in this draft. If an implementation reuses code, its author must add the actual source, credit, license, and permission details before publication. The exercise is intended to remain private.

REPAINTING AND DATA
The specified output waits for bar close. It makes no higher-timeframe requests and uses no future bars or back-plotted signals. An implementation must be checked against this specification. Reloads, vendor corrections, changed sessions, changed chart types, or changed inputs can still alter the dataset or resulting values. This draft does not certify a script as non-repainting.

LIMITATIONS
A flat range has no defined percentage. Warm-up and missing-data periods are unavailable, not zero. The formula has no fees, fills, trade rules, or return calculation. Synthetic chart prices change its meaning; this exercise excludes them. Closed-bar values arrive later than intrabar estimates. No cross-market, live-alert, or profitability claim is made.

VALIDATION RECORD
Synthetic arithmetic was checked on 2026-10-18: H=110, L=100, close=107 gives 70; close=100 gives 0; close=110 gives 100. H=L=100 gives unavailable in v1.1.
Still pending for an actual implementation: compiler validation, default chart screenshot, warm-up behavior, minimum/maximum input behavior, a live bar closing, reload comparison, and symbol/session/timeframe changes. No live-market test or screenshot is represented as completed.

Make the v1 to v1.1 difference observable

Assume a hypothetical v1 converted a zero-width range to 0. That makes a flat market look like a valid close at the bottom of a nonzero range. The v1.1 specification instead leaves that result unavailable. This is a change in meaning that belongs in release notes, even if most historical bars look identical.

Synthetic casev1 specified resultv1.1 specified result
H=110, L=100, close=1077070; calculation unchanged
H=110, L=100, close=10000; valid lower boundary
H=110, L=100, close=110100100; valid upper boundary
H=L=close=1000 from a fallbackUnavailable; division has no defined result
Fewer than N valid bars or missing OHLCUnavailable by specificationUnavailable; no fabricated warm-up value
Current bar has not closedUnavailable by specificationUnavailable until close
Copyable example release note for the same unpublished specificationtext
v1.1 draft | 2026-10-18 | Flat-range handling

Changed: When the rolling high equals the rolling low, range position is now specified as unavailable. The v1 specification returned 0 in that case. A flat window must no longer be read as a valid lower-bound observation.
Unchanged: Default lookback 20, allowed range 2 to 500, completed-bar timing, reference levels, and the formula on nonzero ranges.
Compatibility: Any downstream rule must ignore unavailable values rather than replacing them with zero. Existing screenshots showing zero for a flat window no longer describe this version.
Arithmetic regression record: 107 inside [100,110] = 70; lower endpoint = 0; upper endpoint = 100. Flat [100,100] = unavailable. These checks passed on synthetic numbers only.
Chart validation: Not performed. No compiled indicator, chart screenshot, realtime observation, reload test, or performance test accompanies this documentation example.
Release decision: Keep as a private draft. Replace this status with actual implementation evidence only after the required checks have been performed.

Capture evidence that another reader can reproduce

For your real script, save a clean default-state chart showing the symbol, interval, script title, prices, and output. Remove unrelated drawings and indicators. If another script is essential, explain its role. TradingView uses the current chart in the publication; a separate decorative screenshot cannot prove the calculation.

  • For this example, the arithmetic checks are complete; all chart and runtime checks remain explicitly pending. For your script, record actual results and anomalies beside each test rather than marking the entire release as passed.
  • For a strategy, also document entry/exit rules, sample dates, commissions, slippage, capital, and margin assumptions. A chart image alone does not validate simulated trade execution.
Evidence to saveWhat to compareFailure to investigate
Version identifier, exact source, input values, observation timestampThe published version against the tested sourceAn editor save was mistaken for a published update
Exchange-qualified symbol, standard chart, interval, session, visible datesIdentical closed-bar timestamps before and after reloadDifferent data context was mistaken for a code regression
Default-state screenshot and Data Window readingsFormula result against visible valuesA rounded label concealed a calculation difference
Warm-up, flat window, missing data, input endpointsUnavailable versus a genuine zeroInvalid data was silently converted to a signal
Open-bar observation, bar close, and reloadWhen a value first appears and whether it changes laterA historical screenshot was treated as proof of live behavior

Publish an update without overwriting the wrong record

Apply the changed code to the chart, choose Publish and Update existing script, select the intended publication, inspect the code diff, and enter the release note. The default update replaces the publication chart; choose Don't update the chart only when retaining the old image is accurate. An editor save alone does not change a published version.

  • Public title and description edits, and deletion, have a 15-minute window after initial publication. Private title and description edits remain available. Privacy and visibility settings remain fixed in either case.
  • Release notes append to the publication; they do not rewrite its original description. Notes become final immediately on publication, so proofread the update in a private draft first.
  • Keep routine revisions in the existing publication history. If a different privacy/access choice is needed, it requires a separate publication, not a settings switch on the existing one.
Where Pineify fits

Trading Journal

Keep a dated diary entry with the script version, inputs, assumptions, screenshot reference, and observed results. Pineify Trading Journal supports dated entries with a title and text content; it is a place for your research notes, not a TradingView publishing service.

Also useful: AI Chart Analysis. Upload a chart screenshot for a separate visual analysis and compare that response with your own notes. Image analysis cannot inspect hidden Pine source, validate the script formula, certify moderation compliance, or execute trades for this workflow.

Explore Trading Journal

Frequently asked questions

Educational publication guidance, not investment advice. The description and version notes are hypothetical private drafts. Arithmetic checks do not establish implemented behavior, trading performance, or TradingView approval. No script is published by this page.

Sources and verification

Published by Pineify. Pineify is an independent product and is not affiliated with TradingView. Sources support the technical explanations; examples do not establish trading performance.