Guides
Indicators
An embedded chart can run community indicators, ones you name, for every reader, and ones the reader has installed on their own account.
Indicators you name
List published indicator ids in data-indicators. They run for every reader with no account and nothing to install, and they are drawn as part of the chart rather than as an overlay on top of it.
<div class="vp-chart"
data-symbol="BTC-USDT"
data-indicators="supertrend,vwap-bands"
data-height="480"></div>Up to five per chart. Each is a fetch, a compile and a worker in the reader’s browser, so a page naming twenty is slow for them long before it is expensive for anybody else.
Which version runs
The currently published one, always. An embed has nobody to ask about an update, the reader did not choose the indicator and cannot be prompted to accept a new version, so it tracks current-published rather than pinning to one.
That is a real difference from installing an indicator in the terminal, where the install pins a version and an author’s update is an offer you accept. It is stated rather than hidden. What holds in both places: every version an embed can reach passed the same automatic review, and a takedown reaches a chart that is already open, because the chart re-asks on a timer rather than trusting what it loaded.
How somebody else’s code is contained
Indicators execute in a second sandboxed frame, on a different domain, with default-src 'none', no network, no storage, no cookies, and its own process. It cannot reach your page, cannot reach ours, and cannot call out anywhere.
The reader’s own indicators
A reader with a VerticalProp account can connect it from the chart and run the indicators they have installed. This needs nothing from you: no configuration, no attribute, and nothing on your page.
It lives in the chart’s own indicator dialog, the fx button, under Community, which is the group that would otherwise tell them nothing is installed and not say why. Pressing it opens a window on our domain that names your site and asks for one permission. Everything after that happens between the reader and us, and the control does not appear at all when there is nothing a press could achieve.
data-toolbar="0" there is no fx button and therefore no way to connect. Keep the toolbar if you want readers to bring their own indicators.Worth a look rather than a description, because the whole point is where it is. Open fx in the toolbar below and scroll to Community: that group, and its sign-in row, is the entire surface this section is about.
What they grant is reading their installed indicator list, bound to your site and to ten minutes at a time, revocable from their account page. Your page cannot read the token and we cannot spend it on anything else. The security model has the detail.
With your own datafeed
Indicators are computed from whatever bars the chart holds, so they work identically when you supply the data yourself. An indicator never fetches anything, it is a function over the series, which is also why it can run in a sandbox with no network at all.
Finding indicator ids
Browse the catalogue at /scripts; an indicator’s id is the last segment of its page URL. Only published indicators can be named in an embed, a private or withdrawn one resolves to nothing and the chart draws without it rather than failing.
For the built-in studies, ask the chart rather than keeping a list: getAvailableStudies returns every id the engine ships, so a picker you build from it cannot drift from what createStudy will accept.
const available = await chart.getAvailableStudies(); // [{ id, name }]
for (const study of available) {
addRow(study.name, () => chart.createStudy(study.id));
}Removing one, rather than all
removeAllStudies clears the chart. To take a single indicator off you need its entity id, and getStudies is where that comes from — it lists what is on the chart right now.
const studies = await chart.getStudies(); // [{ id, name }]
const rsi = studies.find((s) => s.name === 'RSI');
if (rsi) await chart.removeEntity(rsi.id);getStudies is what is DRAWN, getAvailableStudies is what MAY be drawn. Only the first hands back an id removeEntity will accept.