Skip to main content
Putting values, shapes, colours, objects and tables on the chart. Each row maps one concept from Lipi to the other languages; the word in a cell is the relation, explained in the language map overview. Each section below gives the Lipi construct first, then the construct in each language, with a note wherever behaviour differs. The language name links to the documentation the row was checked against.

Plot a series

Drawing one value per bar as a line or other style. In Lipi: plot. plot must be called at top level, never in a function, if or loop; make it conditional through its arguments. title must be const.

Plot styles

The ways a plotted series can be drawn: line, histogram, area, circles, steps and others. In Lipi: plotStyle. Members: line, linebr, area, areabr, smoothedArea, stepLine, stepLinebr, stepArea, stepAreabr, bar, histogram, scatter, triangular, cross. No columns member.

Mark bars with a shape

Drawing a shape above, below or on bars where a condition holds. In Lipi: plotshape. The argument is named shape, not style. A size string that is not a size name stops the compiler with internal validator error.

Mark bars with a character

Drawing a text character above, below or on bars where a condition holds. In Lipi: plotchar. Only the first character of char is used.

Up and down arrows

Drawing arrows whose direction follows the sign of a value. In Lipi: plotarrow. Arguments are colorup, colordown, minheight and maxheight; call it at top level only.

Draw your own candles or bars

Drawing open-high-low-close candles or bars from values the script computes. In Lipi: plotcandle, plotbar. plotcandle takes open, high, low, close and a color, plus wickcolor and bordercolor; plotbar takes the same without them.

Horizontal level

A fixed horizontal line at a price or value. In Lipi: hline. price must be an input float, not a series. Style is hlineStyle.solid, dashed or dotted; there is no force_overlay.

Fill between two plots

Shading the area between two plots or two levels. In Lipi: fill. Fill two plots or two hlines, never one of each. The third and fourth arguments swap between the plot form and the hline form.

Colour the background

Colouring the chart background behind chosen bars. In Lipi: bgcolor. An na colour means no background colour. display accepts only display.none and display.all when added to the chart.

Colour the bars

Colouring the price bars themselves. In Lipi: barcolor. No force_overlay argument. An na colour means no bar colour; display accepts only none or all.

Where a plot is shown

Choosing whether a plot appears on the chart, the price scale, the data window or nowhere. In Lipi: display. display.* are bit flags (none 0, pane 1, data_window 2, price_scale 4, status_line 8, all 15) combined with +; the terminal decides what each shows.

Colour with transparency

Making a colour partly see-through. In Lipi: color.new. Alpha is opacity from 0 to 1 (1 solid, 0 invisible), clamped. A literal 50 warns. There is no transp argument.

Colour from red, green, blue

Building a colour from its red, green and blue parts. In Lipi: color.rgb. r, g and b are integers 0 to 255, clamped; the optional a is an opacity from 0 to 1.

Colour on a gradient

Picking a colour between two colours according to where a value sits in a range. In Lipi: color.from_gradient. All five arguments are required. The value is clamped to its bounds; equal bounds or an na argument give na.

Line object

Creating a line between two points that the script can move, restyle or delete later. In Lipi: line.new, line.delete. The overlay argument is forceOverlay on line.new, force_overlay on the other drawings. Setters on an na handle do nothing.

Change a line object

Moving a line’s end points or changing its colour, width, style or extension. In Lipi: line.set_xy1, line.set_xy2, line.set_color, line.set_width, line.set_style, line.set_extend. line.set_xloc with four arguments is function-only; the method form takes just the xloc. A setter on an na or deleted handle does nothing.

Text label object

Creating a text label at a point that the script can move, change or delete later. In Lipi: label.new, label.set_text, label.set_xy, label.delete. Text is limited to 999 characters at run time. size takes size.*; a string that is not a size name stops the compiler.

Rectangle object

Creating a rectangle between two corners that the script can resize, restyle or delete later. In Lipi: box.new, box.set_lefttop, box.set_rightbottom, box.delete. Old argument names (text_halign, text_size, …) compile with a warning; write texthalign, textvalign, size, textcolor, textwrap.

Multi-point line object

Creating one shape that joins many points. In Lipi: polyline.new. At most 1000 points; an empty or larger array returns na with no error. A polyline has only new, delete and all.

Fill between two line objects

Shading the area between two line objects. In Lipi: linefill.new. No max-count argument (fixed at 50) and no copy. Functions: new, delete, get_line1, get_line2, set_color.

Chart point

A position on the chart given by bar or time and by price, used to place objects. In Lipi: chartPoint.new, chartPoint.from_index, chartPoint.from_time. The type is chartPoint, not chart.point. array.from(chartPoint.now(x)) is refused: use array.new<chartPoint> and array.push.

Place objects by time

Positioning an object horizontally by a timestamp instead of a bar number. In Lipi: xloc. xloc.bar_time takes times in milliseconds; xloc.bar_index, the default, takes bar numbers. Any other xloc string stops the script.

Draw beyond the last bar

Placing an object to the right of the most recent bar. In Lipi: xloc. The compiler accepts any future bar index or time and keeps the object; whether the terminal draws it past the last bar is not shown.

How many objects a script keeps

The maximum number of lines, labels, boxes and polylines a script may have on the chart at once. In Lipi: indicator. Default 50 per kind. Maximum 500 lines, labels, boxes and 100 polylines (larger values are clamped); 9 tables; linefills fixed at 50.

List the script’s objects

Getting every object of a kind the script has drawn, for example to delete old ones. In Lipi: line.all, label.all, box.all. The .all arrays hold live drawings only; a drawing trimmed over the limit is gone and its handle does nothing.

Table on the chart

A grid of cells fixed to a corner of the chart, with text and colours the script sets. In Lipi: table.new, table.cell. One table per position.* slot (9). A new table at an occupied slot replaces the old one; a cell outside the grid is ignored.

Change table cells

Changing a table cell’s text, colours, size or alignment, or merging cells. In Lipi: table.cell_set_text, table.cell_set_bgcolor, table.merge_cells. Old names such as text_halign warn; write texthalign. Merge cells with t.merge_cells(0, 0, 1, 0).

Text alignment and size

Choosing how text sits inside a label, box or cell, and how large it is. In Lipi: text, size. text.align_* are the const strings left, center, right, top, bottom; other values stop the script. Labels use textalign, boxes and tables texthalign and textvalign.