Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Algocdk’s v2 developer guide describes custom indicators as plain JavaScript object literals: provide a calculation function that returns one value per candle, then let the platform draw a line or add a custom Canvas 2D renderer. Its documented workflow also lets you load indicator files and replay bots against historical data, but those platform features do not establish that a strategy will be profitable.

How an Algocdk indicator file is structured

According to the Algocdk v2 Developer Docs, an indicator file is a JavaScript object literal wrapped in parentheses and braces, with no imports, export default, or build step required. The object needs a display name and a calculate(data, params) function. Optional properties include color, lineWidth, hasWindow2, defaultParams, and draw.

A minimal line indicator can be shaped like this:

({
  name: "Close",
  color: "#2e86de",
  lineWidth: 2,
  calculate(data, params) {
    return data.map(candle => candle.close);
  }
})

This example returns each candle’s closing price; it illustrates the documented object shape rather than a recommended trading signal. The platform combines parameter defaults with user overrides when calling the calculation function.

What candle data the calculation receives

The data argument is an array of candle records sorted from oldest to newest. The last item is the current candle. Documented fields are open, high, low, close, time, and volume.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

One instrument-specific caveat matters: the guide says volume is always zero for Deriv synthetic indices. An indicator that depends on meaningful volume should not treat that field as informative for those instruments.

Return one result for every candle

calculate(data, params) should return an array with the same length as the input candle array. For positions where an indicator has not accumulated enough data to produce a valid value, return null. Keeping the output aligned with the input allows each result to correspond to the candle at the same index.

What the documented RSI example does

The guide’s RSI example works from close-to-close price changes. It seeds average gains and losses, then smooths those averages period by period. Early array positions are null until enough observations are available. This describes the algorithm in the example; the presence of sample code is not an independent validation of its mathematical correctness or trading usefulness.

Choose the rendering approach that fits the indicator

Approach What it does When it fits
Default line If draw() is omitted, Algocdk draws the returned array as a line using color and lineWidth. A simple continuous value series that belongs on the chart.
Custom draw() Uses a Canvas 2D context and receives calculated values, chart offsets and spacing, a price-to-y coordinate function, and parameters. Specialized shapes, bars, oscillators, or a layout that needs more than the default line.

For an indicator that should appear in its own chart pane, set hasWindow2: true. The documented custom-drawing example sets window.window2Bounds = { y, height } at the end of drawing. That makes the pane a rendering choice; the calculation still needs to return its candle-aligned values.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Indicators and bots serve different roles

An indicator calculates and renders values. A bot adds signal behavior and trade-specific methods. In the guide, a bot’s getSignalAt() can return a signal or null, and examples show the platform executing trades from bot signals. Treat that as a distinct step from visualizing an indicator: a plotted value alone is not an order, and bot execution is not proof of a sound strategy.

Documented upload and replay workflow

  1. Prepare the file: create the JavaScript object literal with a name and calculation function; add rendering properties or draw() only if needed.
  2. Load an indicator: the guide directs users to upload custom indicator files from the chart’s Indicators management route.
  3. Load a bot for evaluation: bots can be loaded in Strategy Lab and replayed against historical data. The guide also describes loading bots into Digit Lab and publishing through a bot store.
  4. Interpret replay results cautiously: historical replay is a way to evaluate behavior on past data, not a guarantee of future performance or live trading results.

The official app page displays controls for loading custom JavaScript indicators and bots, alongside demo/real labels and bot loss-setting fields. Those visible interface elements establish that the controls are presented; they do not establish successful account connection, regulatory status, or profitability.

When this authoring model makes sense

  • Choose a default line when the indicator is simply a series of values and the standard line presentation is sufficient.
  • Choose custom drawing when the visual needs bars, non-line shapes, or a second pane.
  • Keep calculation and display separate from a bot’s signal and execution behavior so each part can be reasoned about independently.
  • Use historical replay as an evaluation step, not as a promise about real-world results.

Beginners who need to learn JavaScript syntax first may benefit from a JavaScript programming book, but the guide does not make a book or a separate build tool a requirement.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What the documentation does—and does not—establish

The official guide explains the indicator object shape, candle input, output alignment, rendering options, and several platform workflows. It does not report indicator-accuracy statistics, trading returns, or platform performance measurements. Its examples and upload/backtest descriptions are documentation of how the platform is intended to be used, not evidence of profitable outcomes.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.