No difference between ' and " quoting. Escape internal quots of same type with \. No single-line if or else statements. For if/else, the conditional statements must be indented. There is the ?: ternary operatorfor assignments. Displaying bar-specific values (besides the obvious primary bar image presentation): General way to display ONLY boolean or numeric value ONLY in indicator legend + data panel: plot(bar_index, title="Bar Index", display=display.none) // first param is any numeric Display arbitrary string somewhere on the bar image itself: label.new(bar_index, high, "arbitrary str", color=color.blue, textcolor=colorl.white, style=label.style_label_down, size=size.tiny) // bar_index identifies the bar to label. Display atribtrary strings of the chart: var table t = table.new(position.top_right, 1, 1) table.cell( t, 0, 0, "atribrary str", text_color=color.white, bgcolor=color.blue, text_size=size.small) Data typing of series vs. series is fucking stupid. Local vs. global statement scope is fucking stupid and quirky. var variables are persistent (global?) variables. plot(...) statement can apparently only be called in global statement scope. But you call it with a local and global param vals! Here pv is a local series float but the title must be a global constant: plot(pv, title="a title"). if/else bodies are apparently local statement scope bar_index is absolute index over the lifetime of the symbol (0-based) barstate.isnew is true only for script invocation for the first LOADED bar Tactic to draw charts with my own data: You must select primary symbol which has a bar for every frequency interval in the range that you will ultimately display your chart with, because your script will only be called for loaded primary symbol bars. Make an indicator script with default overylay (false) double-click the indicator panel to maximize it, hiding the primary canvas (which we are done with). x value types: times: your input data must use use the same frequency as display (or a multiple) (missing input values are fine but non-zero modulus will not work) integers: bar number where for buffering the first X and last Y will actually not render. For example if goal is to display all the minutes from 10:00 to 11:00, you need to plot from something like 9:50 to 11:10 which are the bars that will actually load, to allow for the edge buffers. 0 → 9:50, 10 → 10:00, 70 → 11:00, 80 → 11:10 vertical lines: Critical for integer input values to add vertical bars to delimit period-of-interest, which you can use to resize the canvas to display just that range. For the example integer mappings above, you would draw vertical lines at the 10 and 70 and then resize canvas so that the LHS line is over 10:00 and the RHS line is over 11:00. TODO: Test that this actually works!