Features
Drawings
Arm drawing tools, add drawings in code, and undo, group, template, and save them.
Interactive tools
Arm a tool and the user places it on the chart. The engine handles placement, snapping, editing, and hit testing. Pass null to disarm.
Drawing tools
chart.set_drawing_tool("fibonacci_retracement");
chart.subscribe_drawing_tool_change(() => toolbar.update(chart.active_drawing_tool()));
chart.subscribe_drawing_created(() => chart.set_drawing_tool(null));Drawings in code
add_drawing
const line = chart.add_drawing("trend_line", [
{ logical: 120, price: 104.5 },
{ logical: 180, price: 112.0 },
]);
const level = chart.add_drawing("horizontal_line", [{ logical: 150, price: 108 }]);
const selected = chart.selected_drawing();Anchors are a logical bar index and a price. The number of anchors depends on the kind; an invalid count or non-finite anchor throws.
Drawing kinds
| Family | Kinds |
|---|---|
| Lines | trend_line, horizontal_line, horizontal_ray, vertical_line, ray, extended_line, info_line, trend_angle, cross_line, arrow_line |
| Shapes | rectangle, rotated_rectangle, ellipse, circle, triangle, arc, curve, double_curve, polyline, path, brush, highlighter |
| Measuring and trading | long_position, short_position, price_range, date_range, date_price_range |
| Profiles | fixed_range_volume_profile, anchored_volume_profile, anchored_vwap |
| Channels | parallel_channel, regression_trend, flat_top_channel, flat_bottom_channel, disjoint_channel |
| Fibonacci | fibonacci_retracement, fibonacci_extension, fibonacci_channel, fibonacci_time_zones, fibonacci_trend_time, fibonacci_speed_fan, fibonacci_speed_arcs, fibonacci_circles, fibonacci_spiral, fibonacci_wedge |
| Pitchforks | andrews_pitchfork, schiff_pitchfork, modified_schiff_pitchfork, inside_pitchfork, pitchfan |
| Patterns | pattern_xabcd, pattern_cypher, pattern_abcd, pattern_head_shoulders, pattern_triangle, pattern_three_drives |
| Elliott waves | elliott_impulse, elliott_correction, elliott_triangle, elliott_double_combination, elliott_triple_combination |
| Cycles | cyclic_lines, time_cycles, sine_line |
| Markers | arrow_marker_up, arrow_marker_down, arrow_marker_left, arrow_marker_right, flag_mark, signpost |
| Text | text, note, comment, callout, price_note, price_label, anchored_text |
Managing drawings
| Purpose | Methods |
|---|---|
| History | undo_drawing, redo_drawing, can_undo_drawing, can_redo_drawing, clear_drawings |
| Editing | copy_drawings, paste_drawings, clone_drawing, move_drawing_z_order |
| Groups | set_drawing_group_visibility, set_drawing_group_locked, move_drawing_group |
| Templates | drawing_template, apply_drawing_template |
| Sync | drawing_sync_payload, apply_drawing_sync_payload |
| Properties | drawing_property_schema, drawing_kind_options, drawing_painted_colors |
| Organization | drawings, drawing_object_tree, set_drawing_interval |
| Icons | register_drawing_icon, remove_drawing_icon, builtin_drawing_icons |
Quick measure and saving
Shift-click anywhere to measure price and time distance. The measurement is temporary and never becomes a drawing. To save drawings, use export_state(); see Saving and restoring.