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.