[{"data":1,"prerenderedAt":6719},["ShallowReactive",2],{"indicators:faq/best-practices":3},{"slug":4,"filePath":5,"frontmatter":6,"rawMarkdown":11,"tree":12},"faq/best-practices","faq/best-practices.md",{"title":7,"description":8,"order":9,"section":10},"Best Practices","Guidelines for writing Indicators that are fast, honest about warm-up, and safe to replay: where state lives, what reset() owes the forming bar, why the…",72,"faq","---\ntitle: \"Best Practices\"\ndescription: \"Guidelines for writing Indicators that are fast, honest about warm-up, and safe to replay: where state lives, what reset() owes the forming bar, why the…\"\norder: 72\nsection: \"faq\"\n---\n\n\u003C!-- source: docs/indicators/faq/best-practices.md; generated by packages/cli/scripts/gen-indicator-docs.ts, do not edit -->\n\n# Best Practices\n\nGuidelines for writing Indicators that are fast, honest about warm-up, and safe to replay: where state lives, what `reset()` owes the forming bar, why the generated accessors beat slot literals, and the handful of habits that keep a port from a kScript (legacy) from drifting.\n\n## Code structure\n\n### Variable declarations\n\nAn Indicator has three kinds of state, and each has one right home.\n\n**Module-level `let` for anything that survives between bars.** This is the kScript `persist` and the kScript `static` at once: accumulators, the previous bar's close, running session highs, the TA objects. Give every one a type and a starting value (`let cvd: f64 = 0.0`, `let prevClose: f64 = NaN`), and restore that starting value in `reset()`.\n\n**Locals inside `state()` for this bar's arithmetic.** A `const typical = (high + low + close) / 3.0` that nothing needs next bar belongs in the function, not at module level. It is cheaper and it cannot go stale.\n\n**A `StaticArray\u003Cf64>` ring buffer for a window.** The kScript `timeseries` you index into (`sma_values[5]`) is a buffer you fill yourself: allocate it once, sized from the param's `max`, walk it with a cursor, and count how full it is. The zone tracker and the [previous-bar FAQ sample](general.md) show the shape.\n\n### Allocate in `init()` or at module start, never in `state()`\n\n`state()` runs once per loaded bar and again on every tick of the forming bar. Anything allocated there is allocated thousands of times, and an array that grows on every call is the one pattern that makes a long history slow. Size buffers from the param's declared `max`, at module start, and let `init()` set the live length:\n\n```typescript\nimport { input, line, lower, ohlcv, output, param } from \"./sdk/declare\";\nimport { in_close } from \"./gen/inputs\";\nimport { emitRow, out_rank } from \"./gen/outputs\";\nimport { p_window } from \"./gen/params\";\n\nparam(\"window\", 100, { min: 10, max: 500, description: \"Bars the rank is measured against\" });\ninput(\"close\", ohlcv.close);\noutput(\"rank\", line, lower, { unit: \"%\", description: \"Share of the window's closes below this bar's close\" });\n\n// Allocate once, at module start, sized from the param's max: never inside state().\nconst MAX_WINDOW = 500;\nconst closes = new StaticArray\u003Cf64>(MAX_WINDOW);\nlet n: i32 = 100;\nlet cursor: i32 = 0;\nlet count: i32 = 0;\nlet rank: f64 = NaN;\n\nexport function init(): void {\n  n = i32(p_window());\n}\n\nexport function state(): i32 {\n  const close = in_close();\n  let below = 0;\n  for (let i = 0; i \u003C count; i++) if (closes[i] \u003C close) below += 1;\n  closes[cursor] = close;\n  cursor = (cursor + 1) % n;\n  if (count \u003C n) count += 1;\n  if (count \u003C n) return 0;\n  rank = (100.0 * f64(below)) / f64(n);\n  return 1;\n}\n\nexport function finalize(): void {\n  out_rank(rank);\n  emitRow();\n}\n\n// Every module-level variable goes back to its starting value: a field this forgets is a stale value\n// the forming bar's replay will read.\nexport function reset(): void {\n  cursor = 0;\n  count = 0;\n  rank = NaN;\n}\n```\n\nThe TA classes follow the same rule: `new Sma(period)` allocates its window in the constructor and `update()` never allocates, which is why they are constructed in `init()` and fed in `state()`.\n\n### `reset()` every field\n\nThe forming bar is replayed on every tick from a snapshot of the module's state after the last closed bar, and the host calls `reset()` first. A variable `reset()` forgets is a stale value the replay reads, and the symptom is subtle: a line that lags by a tick, a gate that fires once and never clears, an accumulator that double-counts. The rule is mechanical: for every module-level `let`, one line in `reset()` restoring its starting value, and `.reset()` on every TA object. The buffer contents themselves need no clearing when a `count` field says how much of the buffer is valid; resetting `count` and `cursor` is enough.\n\n### Accessors over slot literals\n\nParams, inputs, and outputs reach the code by name: `p_period()`, `in_close()`, `out_sma(value)`, generated from the declarations before every build. Underneath, the host passes values positionally, and the raw calls (`getFloat(0)`, `setOutput(0, ...)`) bind by position, so adding a declaration above them silently rebinds them. The build refuses the raw form in your source (`scaffold build blocked: raw positional slot literals silently rebind`) and names the accessor to use instead. The same rule keeps a rename honest: rename `output(\"sma\", ...)` to `output(\"average\", ...)` and the compiler points at every stale `out_sma` ([Script definition](../functions/script-definition.md)).\n\n## Technical indicators\n\n### Read the period once, cast it once\n\nParams are `f64`; a period is `i32`. Read each param in `init()`, cast it there (`new Sma(i32(p_period()))`), and keep the class in a module-level variable. Reading `p_period()` in `state()` works but does the cast on every bar for nothing, and constructing a class in `state()` allocates on every bar.\n\n### Be honest about warm-up\n\nA window that is not full has no value, and the honest outputs are `NaN` or no row at all. Two policies, both correct: return `0` from `state()` to abstain the whole row while nothing on it is meaningful, or write `NaN` to the one output that is still warming while the others draw ([Execution model](../core-concepts/execution-model.md)). What is never correct is a placeholder that draws as if it were true. In a hand-written sheet, `warmup_bars` is the same honesty as a hint to consumers: set it to the real number of bars the module needs, not `1`.\n\n### Name what the module computes, not how it is drawn\n\nA decision is an output too. Emit `1` or `0` from a data-only `none` output and let the sheet turn it into a look (`shape_where`, `color_by`, a box's `when`). That keeps the numeric surface reusable: the same gate that draws a mark is the metric a watch fires on.\n\n## Plotting and visualization\n\n### Describe every declaration\n\n`description` on a param is the settings dialog's label; on an input it is the sheet's documentation; on an output it is the legend and the metric catalog entry. Write them the way you would want to read them a month later: \"Bars of history that define normal volume\" beats \"lookback\". Give small-magnitude series (oscillators, percentages, counts) the `lower` panel and a `unit` (`%`, `price`, or a short label) so the axis formats itself.\n\n### One namespace for shape names\n\nOutputs, boxes, segments, renderers, and drawings share one namespace. A box named `range` beside an output named `range` is refused at the sheet (`box name 'range' is already taken by an output`). Name shapes for what they draw (`demand_zone`, `pdh_line`) and outputs for what they compute (`demand_top`, `pdh`).\n\n## Debugging\n\n### Probe with an output\n\nThere is no `print()`. The debugger is an output: declare the suspect intermediate as `none` (readable in the legend and through `om metric series`, never drawn) or as a `lower` line to see its shape across every bar, then delete the declaration when you are done. [Debugging](debugging.md) is the full workflow.\n\n## Error prevention\n\n### NaN checks and safe division\n\n`NaN` is the only \"nothing here\" value, and it propagates: `NaN + 1` is `NaN`, and `NaN > 0` is `false`. Test with `isNaN(x)` before a comparison that decides something, and guard every division by a value that can be zero. The two helpers most ports need are two lines each:\n\n```typescript\nimport { input, line, lower, ohlcv, output, param } from \"./sdk/declare\";\nimport { in_close, in_volume } from \"./gen/inputs\";\nimport { emitRow, out_ratio, out_smooth } from \"./gen/outputs\";\nimport { p_len } from \"./gen/params\";\nimport { Sma } from \"./sdk/ta\";\n\nparam(\"len\", 20, { min: 1, max: 200 });\ninput(\"close\", ohlcv.close);\ninput(\"volume\", ohlcv.volume);\noutput(\"ratio\", line, lower, { description: \"Volume over its average, 0 while the average warms\" });\noutput(\"smooth\", line, lower, { description: \"Close average, last good value carried across gaps\" });\n\n// nz: a number, or the fallback when it is NaN.\nfunction nz(value: f64, fallback: f64): f64 {\n  return isNaN(value) ? fallback : value;\n}\n\n// Division that refuses to blow up: NaN when the denominator is zero or missing.\nfunction safeDiv(numerator: f64, denominator: f64): f64 {\n  return isNaN(denominator) || denominator == 0.0 ? NaN : numerator / denominator;\n}\n\nlet avgVolume = new Sma(20);\nlet avgClose = new Sma(20);\nlet ratio: f64 = 0.0;\nlet lastGood: f64 = NaN;\n\nexport function init(): void {\n  avgVolume = new Sma(i32(p_len()));\n  avgClose = new Sma(i32(p_len()));\n}\n\nexport function state(): i32 {\n  const volume = in_volume();\n  ratio = nz(safeDiv(volume, avgVolume.update(volume)), 0.0);\n  // fixnan: keep the last non-NaN value instead of showing a gap.\n  const smooth = avgClose.update(in_close());\n  if (!isNaN(smooth)) lastGood = smooth;\n  return 1;\n}\n\nexport function finalize(): void {\n  out_ratio(ratio);\n  out_smooth(lastGood);\n  emitRow();\n}\n\nexport function reset(): void {\n  avgVolume.reset();\n  avgClose.reset();\n  ratio = 0.0;\n  lastGood = NaN;\n}\n```\n\n### Buffer bounds\n\nA ring buffer never reads past what it has been given: keep a `count` beside the `cursor` and only scan `count` entries until the buffer is full. There is no `barIndex` to compare against and no negative index to worry about; the buffer's own bookkeeping is the bound.\n\n### `missing` on sparse primaries\n\nA feed that only has rows when something happened (liquidations, a coarse pin) makes a poor primary input as-is: the grid has holes. Declare `missing: \"zero\"` (or `\"nan\"`) on it and the grid densifies to one row per bar, with the fill on the quiet bars. On a secondary sparse input the same policies decide what the module sees on bars without an observation; the default carries the last value forward, which is right for a coarse candle and wrong for a volume you would double-count ([Data sources](../core-concepts/data-sources.md)).\n\n## Performance optimization\n\n### Avoid redundant calculations\n\nCompute a value once in `state()` and keep it in a module-level variable for `finalize()` to write; do not fold the same input into two classes when one class and a copy will do. Loops are fine when they are bounded by a param with a declared `max`; a loop whose bound comes from history length is the thing to avoid.\n\n### Keep the row cheap\n\n`finalize()` should be writes and arithmetic. Building a string per bar is fine inside the string channel's shared buffer (`sb_clear` / `sb_text` / `sb_f64` allocate nothing), but formatting through `String` concatenation allocates on every bar; reserve it for the newest-bar label you actually read.\n\n## Code organization\n\n### Group related code\n\nRead top to bottom: imports, declarations, state, helpers, then the four exports in the order the host calls them. A complete Indicator laid out that way:\n\n```typescript\n// 1. Imports: the declaring words, the generated accessors, the TA classes.\nimport { input, line, none, ohlcv, output, overlay, param, shape } from \"./sdk/declare\";\nimport { in_close, in_low } from \"./gen/inputs\";\nimport { emitRow, out_entry, out_fast, out_is_entry, out_slow } from \"./gen/outputs\";\nimport { p_fast, p_slow } from \"./gen/params\";\nimport { Cross, Ema } from \"./sdk/ta\";\n\n// 2. Declarations: settings, feeds, outputs, each with the description the dialog and legend show.\nparam(\"fast\", 9, { min: 2, max: 100, description: \"Fast EMA length\" });\nparam(\"slow\", 21, { min: 5, max: 400, description: \"Slow EMA length\" });\ninput(\"close\", ohlcv.close);\ninput(\"low\", ohlcv.low);\noutput(\"fast\", line, overlay, { color: \"#38bdf8\", description: \"Fast EMA\" });\noutput(\"slow\", line, overlay, { color: \"#f59e0b\", width: 2, description: \"Slow EMA\" });\noutput(\"entry\", shape, overlay, { color: \"#22c55e\", shape_where: \"is_entry\", description: \"Fast crossed above slow\" });\noutput(\"is_entry\", none);\n\n// 3. State: everything that lives between bars, with its starting value.\nlet fast = new Ema(9);\nlet slow = new Ema(21);\nlet cross = new Cross();\nlet fastValue: f64 = NaN;\nlet slowValue: f64 = NaN;\nlet low: f64 = NaN;\nlet crossed: i32 = 0;\n\n// 4. Lifecycle: init reads settings, state folds the bar, finalize writes the row, reset restores.\nexport function init(): void {\n  fast = new Ema(i32(p_fast()));\n  slow = new Ema(i32(p_slow()));\n  cross = new Cross();\n}\n\nexport function state(): i32 {\n  const close = in_close();\n  low = in_low();\n  fastValue = fast.update(close);\n  slowValue = slow.update(close);\n  crossed = cross.update(fastValue, slowValue);\n  return isNaN(slowValue) ? 0 : 1;\n}\n\nexport function finalize(): void {\n  out_fast(fastValue);\n  out_slow(slowValue);\n  out_entry(low);\n  out_is_entry(crossed == 1 ? 1.0 : 0.0);\n  emitRow();\n}\n\nexport function reset(): void {\n  fast.reset();\n  slow.reset();\n  cross.reset();\n  fastValue = NaN;\n  slowValue = NaN;\n  low = NaN;\n  crossed = 0;\n}\n```\n\n### Comment the why\n\nThe declarations already say what the Indicator reads and writes, and the accessors keep the code readable, so comments earn their place explaining a decision: why a bucket folds in only on the next bucket's first bar, why a session that was already running stays `NaN`, why a pin is honored on your machine only. The cookbook recipes are written that way.\n\n### Keep the names when you port\n\nWhen porting a kScript, keep its variable names as your declaration names: `param(\"lookback\", ...)`, `input(\"close\", ...)`, `output(\"z\", ...)`. The generated accessors then read like the original (`p_lookback()`, `in_close()`, `out_z(z)`), and comparing the two on the same market is a matter of reading side by side ([From kScript](../migrations/from-kscript.md)).\n",{"type":13,"children":14,"data":6713,"position":6715},"root",[15,25,28,29,66,67,86,87,105,106,121,122,274,275,345,346,479,480,526,527,591,592,1741,1742,1833,1834,1862,1863,2032,2033,2050,2051,2262,2263,2279,2280,2297,2298,2443,2444,2461,2462,2610,2611,2627,2628,2756,2757,2774,2775,2790,2791,2894,2895,2912,2913,3063,3064,3080,3081,3097,3098,3208,3209,3225,3226,3242,3243,3360,3361,4617,4618,4633,4634,4723,4724,4752,4753,4827,4828,4844,4845,4861,4862,4929,4930,4945,4946,5049,5050,5065,5066,5082,5083,5096,5097,6498,6499,6514,6515,6548,6549,6564,6565],{"type":16,"value":17,"position":18},"comment"," source: docs/indicators/faq/best-practices.md; generated by packages/cli/scripts/gen-indicator-docs.ts, do not edit ",{"start":19,"end":22},{"line":20,"column":20,"offset":21},1,0,{"line":20,"column":23,"offset":24},125,124,{"type":26,"value":27},"text","\n",{"type":26,"value":27},{"type":30,"tagName":31,"properties":32,"children":33,"position":63},"element","p",{},[34,43,56],{"type":26,"value":35,"position":36},"Guidelines for writing Indicators that are fast, honest about warm-up, and safe to replay: where state lives, what ",{"start":37,"end":40},{"line":38,"column":20,"offset":39},5,144,{"line":38,"column":41,"offset":42},116,259,{"type":30,"tagName":44,"properties":45,"children":46,"position":53},"code",{},[47],{"type":26,"value":48,"position":49},"reset()",{"start":50,"end":51},{"line":38,"column":41,"offset":42},{"line":38,"column":23,"offset":52},268,{"start":54,"end":55},{"line":38,"column":41,"offset":42},{"line":38,"column":23,"offset":52},{"type":26,"value":57,"position":58}," owes the forming bar, why the generated accessors beat slot literals, and the handful of habits that keep a port from a kScript (legacy) from drifting.",{"start":59,"end":60},{"line":38,"column":23,"offset":52},{"line":38,"column":61,"offset":62},277,420,{"start":64,"end":65},{"line":38,"column":20,"offset":39},{"line":38,"column":61,"offset":62},{"type":26,"value":27},{"type":30,"tagName":68,"properties":69,"children":71,"position":82},"h2",{"id":70},"code-structure",[72],{"type":26,"value":73,"position":74},"Code structure",{"start":75,"end":79},{"line":76,"column":77,"offset":78},7,4,425,{"line":76,"column":80,"offset":81},18,439,{"start":83,"end":85},{"line":76,"column":20,"offset":84},422,{"line":76,"column":80,"offset":81},{"type":26,"value":27},{"type":30,"tagName":88,"properties":89,"children":91,"position":101},"h3",{"id":90},"variable-declarations",[92],{"type":26,"value":93,"position":94},"Variable declarations",{"start":95,"end":98},{"line":96,"column":38,"offset":97},9,445,{"line":96,"column":99,"offset":100},26,466,{"start":102,"end":104},{"line":96,"column":20,"offset":103},441,{"line":96,"column":99,"offset":100},{"type":26,"value":27},{"type":30,"tagName":31,"properties":107,"children":108,"position":118},{},[109],{"type":26,"value":110,"position":111},"An Indicator has three kinds of state, and each has one right home.",{"start":112,"end":115},{"line":113,"column":20,"offset":114},11,468,{"line":113,"column":116,"offset":117},68,535,{"start":119,"end":120},{"line":113,"column":20,"offset":114},{"line":113,"column":116,"offset":117},{"type":26,"value":27},{"type":30,"tagName":31,"properties":123,"children":124,"position":271},{},[125,165,172,185,192,205,212,225,232,245,252,264],{"type":30,"tagName":126,"properties":127,"children":128,"position":159},"strong",{},[129,139,152],{"type":26,"value":130,"position":131},"Module-level ",{"start":132,"end":136},{"line":133,"column":134,"offset":135},13,3,539,{"line":133,"column":137,"offset":138},16,552,{"type":30,"tagName":44,"properties":140,"children":141,"position":149},{},[142],{"type":26,"value":143,"position":144},"let",{"start":145,"end":146},{"line":133,"column":137,"offset":138},{"line":133,"column":147,"offset":148},21,557,{"start":150,"end":151},{"line":133,"column":137,"offset":138},{"line":133,"column":147,"offset":148},{"type":26,"value":153,"position":154}," for anything that survives between bars.",{"start":155,"end":156},{"line":133,"column":147,"offset":148},{"line":133,"column":157,"offset":158},62,598,{"start":160,"end":162},{"line":133,"column":20,"offset":161},537,{"line":133,"column":163,"offset":164},64,600,{"type":26,"value":166,"position":167}," This is the kScript ",{"start":168,"end":169},{"line":133,"column":163,"offset":164},{"line":133,"column":170,"offset":171},85,621,{"type":30,"tagName":44,"properties":173,"children":174,"position":182},{},[175],{"type":26,"value":176,"position":177},"persist",{"start":178,"end":179},{"line":133,"column":170,"offset":171},{"line":133,"column":180,"offset":181},94,630,{"start":183,"end":184},{"line":133,"column":170,"offset":171},{"line":133,"column":180,"offset":181},{"type":26,"value":186,"position":187}," and the kScript ",{"start":188,"end":189},{"line":133,"column":180,"offset":181},{"line":133,"column":190,"offset":191},111,647,{"type":30,"tagName":44,"properties":193,"children":194,"position":202},{},[195],{"type":26,"value":196,"position":197},"static",{"start":198,"end":199},{"line":133,"column":190,"offset":191},{"line":133,"column":200,"offset":201},119,655,{"start":203,"end":204},{"line":133,"column":190,"offset":191},{"line":133,"column":200,"offset":201},{"type":26,"value":206,"position":207}," at once: accumulators, the previous bar's close, running session highs, the TA objects. Give every one a type and a starting value (",{"start":208,"end":209},{"line":133,"column":200,"offset":201},{"line":133,"column":210,"offset":211},252,788,{"type":30,"tagName":44,"properties":213,"children":214,"position":222},{},[215],{"type":26,"value":216,"position":217},"let cvd: f64 = 0.0",{"start":218,"end":219},{"line":133,"column":210,"offset":211},{"line":133,"column":220,"offset":221},272,808,{"start":223,"end":224},{"line":133,"column":210,"offset":211},{"line":133,"column":220,"offset":221},{"type":26,"value":226,"position":227},", ",{"start":228,"end":229},{"line":133,"column":220,"offset":221},{"line":133,"column":230,"offset":231},274,810,{"type":30,"tagName":44,"properties":233,"children":234,"position":242},{},[235],{"type":26,"value":236,"position":237},"let prevClose: f64 = NaN",{"start":238,"end":239},{"line":133,"column":230,"offset":231},{"line":133,"column":240,"offset":241},300,836,{"start":243,"end":244},{"line":133,"column":230,"offset":231},{"line":133,"column":240,"offset":241},{"type":26,"value":246,"position":247},"), and restore that starting value in ",{"start":248,"end":249},{"line":133,"column":240,"offset":241},{"line":133,"column":250,"offset":251},338,874,{"type":30,"tagName":44,"properties":253,"children":254,"position":261},{},[255],{"type":26,"value":48,"position":256},{"start":257,"end":258},{"line":133,"column":250,"offset":251},{"line":133,"column":259,"offset":260},347,883,{"start":262,"end":263},{"line":133,"column":250,"offset":251},{"line":133,"column":259,"offset":260},{"type":26,"value":265,"position":266},".",{"start":267,"end":268},{"line":133,"column":259,"offset":260},{"line":133,"column":269,"offset":270},348,884,{"start":272,"end":273},{"line":133,"column":20,"offset":161},{"line":133,"column":269,"offset":270},{"type":26,"value":27},{"type":30,"tagName":31,"properties":276,"children":277,"position":342},{},[278,315,322,335],{"type":30,"tagName":126,"properties":279,"children":280,"position":309},{},[281,290,302],{"type":26,"value":282,"position":283},"Locals inside ",{"start":284,"end":287},{"line":285,"column":134,"offset":286},15,888,{"line":285,"column":288,"offset":289},17,902,{"type":30,"tagName":44,"properties":291,"children":292,"position":299},{},[293],{"type":26,"value":294,"position":295},"state()",{"start":296,"end":297},{"line":285,"column":288,"offset":289},{"line":285,"column":99,"offset":298},911,{"start":300,"end":301},{"line":285,"column":288,"offset":289},{"line":285,"column":99,"offset":298},{"type":26,"value":303,"position":304}," for this bar's arithmetic.",{"start":305,"end":306},{"line":285,"column":99,"offset":298},{"line":285,"column":307,"offset":308},53,938,{"start":310,"end":312},{"line":285,"column":20,"offset":311},886,{"line":285,"column":313,"offset":314},55,940,{"type":26,"value":316,"position":317}," A ",{"start":318,"end":319},{"line":285,"column":313,"offset":314},{"line":285,"column":320,"offset":321},58,943,{"type":30,"tagName":44,"properties":323,"children":324,"position":332},{},[325],{"type":26,"value":326,"position":327},"const typical = (high + low + close) / 3.0",{"start":328,"end":329},{"line":285,"column":320,"offset":321},{"line":285,"column":330,"offset":331},102,987,{"start":333,"end":334},{"line":285,"column":320,"offset":321},{"line":285,"column":330,"offset":331},{"type":26,"value":336,"position":337}," that nothing needs next bar belongs in the function, not at module level. It is cheaper and it cannot go stale.",{"start":338,"end":339},{"line":285,"column":330,"offset":331},{"line":285,"column":340,"offset":341},214,1099,{"start":343,"end":344},{"line":285,"column":20,"offset":311},{"line":285,"column":340,"offset":341},{"type":26,"value":27},{"type":30,"tagName":31,"properties":347,"children":348,"position":476},{},[349,385,391,404,411,424,431,444,451,469],{"type":30,"tagName":126,"properties":350,"children":351,"position":379},{},[352,359,372],{"type":26,"value":353,"position":354},"A ",{"start":355,"end":357},{"line":288,"column":134,"offset":356},1103,{"line":288,"column":38,"offset":358},1105,{"type":30,"tagName":44,"properties":360,"children":361,"position":369},{},[362],{"type":26,"value":363,"position":364},"StaticArray\u003Cf64>",{"start":365,"end":366},{"line":288,"column":38,"offset":358},{"line":288,"column":367,"offset":368},23,1123,{"start":370,"end":371},{"line":288,"column":38,"offset":358},{"line":288,"column":367,"offset":368},{"type":26,"value":373,"position":374}," ring buffer for a window.",{"start":375,"end":376},{"line":288,"column":367,"offset":368},{"line":288,"column":377,"offset":378},49,1149,{"start":380,"end":382},{"line":288,"column":20,"offset":381},1101,{"line":288,"column":383,"offset":384},51,1151,{"type":26,"value":386,"position":387}," The kScript ",{"start":388,"end":389},{"line":288,"column":383,"offset":384},{"line":288,"column":163,"offset":390},1164,{"type":30,"tagName":44,"properties":392,"children":393,"position":401},{},[394],{"type":26,"value":395,"position":396},"timeseries",{"start":397,"end":398},{"line":288,"column":163,"offset":390},{"line":288,"column":399,"offset":400},76,1176,{"start":402,"end":403},{"line":288,"column":163,"offset":390},{"line":288,"column":399,"offset":400},{"type":26,"value":405,"position":406}," you index into (",{"start":407,"end":408},{"line":288,"column":399,"offset":400},{"line":288,"column":409,"offset":410},93,1193,{"type":30,"tagName":44,"properties":412,"children":413,"position":421},{},[414],{"type":26,"value":415,"position":416},"sma_values[5]",{"start":417,"end":418},{"line":288,"column":409,"offset":410},{"line":288,"column":419,"offset":420},108,1208,{"start":422,"end":423},{"line":288,"column":409,"offset":410},{"line":288,"column":419,"offset":420},{"type":26,"value":425,"position":426},") is a buffer you fill yourself: allocate it once, sized from the param's ",{"start":427,"end":428},{"line":288,"column":419,"offset":420},{"line":288,"column":429,"offset":430},182,1282,{"type":30,"tagName":44,"properties":432,"children":433,"position":441},{},[434],{"type":26,"value":435,"position":436},"max",{"start":437,"end":438},{"line":288,"column":429,"offset":430},{"line":288,"column":439,"offset":440},187,1287,{"start":442,"end":443},{"line":288,"column":429,"offset":430},{"line":288,"column":439,"offset":440},{"type":26,"value":445,"position":446},", walk it with a cursor, and count how full it is. The zone tracker and the ",{"start":447,"end":448},{"line":288,"column":439,"offset":440},{"line":288,"column":449,"offset":450},263,1363,{"type":30,"tagName":452,"properties":453,"children":455,"position":465},"a",{"href":454},"general.md",[456],{"type":26,"value":457,"position":458},"previous-bar FAQ sample",{"start":459,"end":462},{"line":288,"column":460,"offset":461},264,1364,{"line":288,"column":463,"offset":464},287,1387,{"start":466,"end":467},{"line":288,"column":449,"offset":450},{"line":288,"column":240,"offset":468},1400,{"type":26,"value":470,"position":471}," show the shape.",{"start":472,"end":473},{"line":288,"column":240,"offset":468},{"line":288,"column":474,"offset":475},316,1416,{"start":477,"end":478},{"line":288,"column":20,"offset":381},{"line":288,"column":474,"offset":475},{"type":26,"value":27},{"type":30,"tagName":88,"properties":481,"children":483,"position":522},{"id":482},"allocate-in-init-or-at-module-start-never-in-state",[484,492,505,511],{"type":26,"value":485,"position":486},"Allocate in ",{"start":487,"end":490},{"line":488,"column":38,"offset":489},19,1422,{"line":488,"column":288,"offset":491},1434,{"type":30,"tagName":44,"properties":493,"children":494,"position":502},{},[495],{"type":26,"value":496,"position":497},"init()",{"start":498,"end":499},{"line":488,"column":288,"offset":491},{"line":488,"column":500,"offset":501},25,1442,{"start":503,"end":504},{"line":488,"column":288,"offset":491},{"line":488,"column":500,"offset":501},{"type":26,"value":506,"position":507}," or at module start, never in ",{"start":508,"end":509},{"line":488,"column":500,"offset":501},{"line":488,"column":313,"offset":510},1472,{"type":30,"tagName":44,"properties":512,"children":513,"position":519},{},[514],{"type":26,"value":294,"position":515},{"start":516,"end":517},{"line":488,"column":313,"offset":510},{"line":488,"column":163,"offset":518},1481,{"start":520,"end":521},{"line":488,"column":313,"offset":510},{"line":488,"column":163,"offset":518},{"start":523,"end":525},{"line":488,"column":20,"offset":524},1418,{"line":488,"column":163,"offset":518},{"type":26,"value":27},{"type":30,"tagName":31,"properties":528,"children":529,"position":588},{},[530,543,550,562,569,581],{"type":30,"tagName":44,"properties":531,"children":532,"position":540},{},[533],{"type":26,"value":294,"position":534},{"start":535,"end":537},{"line":147,"column":20,"offset":536},1483,{"line":147,"column":538,"offset":539},10,1492,{"start":541,"end":542},{"line":147,"column":20,"offset":536},{"line":147,"column":538,"offset":539},{"type":26,"value":544,"position":545}," runs once per loaded bar and again on every tick of the forming bar. Anything allocated there is allocated thousands of times, and an array that grows on every call is the one pattern that makes a long history slow. Size buffers from the param's declared ",{"start":546,"end":547},{"line":147,"column":538,"offset":539},{"line":147,"column":548,"offset":549},266,1748,{"type":30,"tagName":44,"properties":551,"children":552,"position":559},{},[553],{"type":26,"value":435,"position":554},{"start":555,"end":556},{"line":147,"column":548,"offset":549},{"line":147,"column":557,"offset":558},271,1753,{"start":560,"end":561},{"line":147,"column":548,"offset":549},{"line":147,"column":557,"offset":558},{"type":26,"value":563,"position":564},", at module start, and let ",{"start":565,"end":566},{"line":147,"column":557,"offset":558},{"line":147,"column":567,"offset":568},298,1780,{"type":30,"tagName":44,"properties":570,"children":571,"position":578},{},[572],{"type":26,"value":496,"position":573},{"start":574,"end":575},{"line":147,"column":567,"offset":568},{"line":147,"column":576,"offset":577},306,1788,{"start":579,"end":580},{"line":147,"column":567,"offset":568},{"line":147,"column":576,"offset":577},{"type":26,"value":582,"position":583}," set the live length:",{"start":584,"end":585},{"line":147,"column":576,"offset":577},{"line":147,"column":586,"offset":587},327,1809,{"start":589,"end":590},{"line":147,"column":20,"offset":536},{"line":147,"column":586,"offset":587},{"type":26,"value":27},{"type":13,"children":593},[594],{"type":30,"tagName":595,"properties":596,"children":600,"data":-1},"pre",{"class":597,"style":598,"tabindex":599},"shiki shiki-themes github-dark github-light","--shiki-dark:#e1e4e8;--shiki-light:#24292e;--shiki-dark-bg:#24292e;--shiki-light-bg:#fff","0",[601],{"type":30,"tagName":44,"properties":602,"children":603},{},[604,637,638,663,664,689,690,715,716,719,720,784,785,807,808,848,849,852,853,862,863,890,891,942,943,978,979,1012,1013,1045,1046,1080,1081,1084,1085,1122,1123,1154,1155,1163,1164,1167,1168,1200,1201,1228,1229,1254,1255,1342,1343,1360,1361,1401,1402,1436,1437,1470,1471,1520,1521,1537,1538,1545,1546,1549,1550,1582,1583,1596,1597,1609,1610,1617,1618,1621,1622,1630,1631,1639,1640,1672,1673,1692,1693,1713,1714,1733,1734],{"type":30,"tagName":605,"properties":606,"children":608},"span",{"class":607},"line",[609,615,621,626,632],{"type":30,"tagName":605,"properties":610,"children":612},{"style":611},"--shiki-dark:#F97583;--shiki-light:#D73A49",[613],{"type":26,"value":614},"import",{"type":30,"tagName":605,"properties":616,"children":618},{"style":617},"--shiki-dark:#E1E4E8;--shiki-light:#24292E",[619],{"type":26,"value":620}," { input, line, lower, ohlcv, output, param } ",{"type":30,"tagName":605,"properties":622,"children":623},{"style":611},[624],{"type":26,"value":625},"from",{"type":30,"tagName":605,"properties":627,"children":629},{"style":628},"--shiki-dark:#9ECBFF;--shiki-light:#032F62",[630],{"type":26,"value":631}," \"./sdk/declare\"",{"type":30,"tagName":605,"properties":633,"children":634},{"style":617},[635],{"type":26,"value":636},";",{"type":26,"value":27},{"type":30,"tagName":605,"properties":639,"children":640},{"class":607},[641,645,650,654,659],{"type":30,"tagName":605,"properties":642,"children":643},{"style":611},[644],{"type":26,"value":614},{"type":30,"tagName":605,"properties":646,"children":647},{"style":617},[648],{"type":26,"value":649}," { in_close } ",{"type":30,"tagName":605,"properties":651,"children":652},{"style":611},[653],{"type":26,"value":625},{"type":30,"tagName":605,"properties":655,"children":656},{"style":628},[657],{"type":26,"value":658}," \"./gen/inputs\"",{"type":30,"tagName":605,"properties":660,"children":661},{"style":617},[662],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":665,"children":666},{"class":607},[667,671,676,680,685],{"type":30,"tagName":605,"properties":668,"children":669},{"style":611},[670],{"type":26,"value":614},{"type":30,"tagName":605,"properties":672,"children":673},{"style":617},[674],{"type":26,"value":675}," { emitRow, out_rank } ",{"type":30,"tagName":605,"properties":677,"children":678},{"style":611},[679],{"type":26,"value":625},{"type":30,"tagName":605,"properties":681,"children":682},{"style":628},[683],{"type":26,"value":684}," \"./gen/outputs\"",{"type":30,"tagName":605,"properties":686,"children":687},{"style":617},[688],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":691,"children":692},{"class":607},[693,697,702,706,711],{"type":30,"tagName":605,"properties":694,"children":695},{"style":611},[696],{"type":26,"value":614},{"type":30,"tagName":605,"properties":698,"children":699},{"style":617},[700],{"type":26,"value":701}," { p_window } ",{"type":30,"tagName":605,"properties":703,"children":704},{"style":611},[705],{"type":26,"value":625},{"type":30,"tagName":605,"properties":707,"children":708},{"style":628},[709],{"type":26,"value":710}," \"./gen/params\"",{"type":30,"tagName":605,"properties":712,"children":713},{"style":617},[714],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":717,"children":718},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":721,"children":722},{"class":607},[723,729,734,739,743,749,754,759,764,769,774,779],{"type":30,"tagName":605,"properties":724,"children":726},{"style":725},"--shiki-dark:#B392F0;--shiki-light:#6F42C1",[727],{"type":26,"value":728},"param",{"type":30,"tagName":605,"properties":730,"children":731},{"style":617},[732],{"type":26,"value":733},"(",{"type":30,"tagName":605,"properties":735,"children":736},{"style":628},[737],{"type":26,"value":738},"\"window\"",{"type":30,"tagName":605,"properties":740,"children":741},{"style":617},[742],{"type":26,"value":226},{"type":30,"tagName":605,"properties":744,"children":746},{"style":745},"--shiki-dark:#79B8FF;--shiki-light:#005CC5",[747],{"type":26,"value":748},"100",{"type":30,"tagName":605,"properties":750,"children":751},{"style":617},[752],{"type":26,"value":753},", { min: ",{"type":30,"tagName":605,"properties":755,"children":756},{"style":745},[757],{"type":26,"value":758},"10",{"type":30,"tagName":605,"properties":760,"children":761},{"style":617},[762],{"type":26,"value":763},", max: ",{"type":30,"tagName":605,"properties":765,"children":766},{"style":745},[767],{"type":26,"value":768},"500",{"type":30,"tagName":605,"properties":770,"children":771},{"style":617},[772],{"type":26,"value":773},", description: ",{"type":30,"tagName":605,"properties":775,"children":776},{"style":628},[777],{"type":26,"value":778},"\"Bars the rank is measured against\"",{"type":30,"tagName":605,"properties":780,"children":781},{"style":617},[782],{"type":26,"value":783}," });",{"type":26,"value":27},{"type":30,"tagName":605,"properties":786,"children":787},{"class":607},[788,793,797,802],{"type":30,"tagName":605,"properties":789,"children":790},{"style":725},[791],{"type":26,"value":792},"input",{"type":30,"tagName":605,"properties":794,"children":795},{"style":617},[796],{"type":26,"value":733},{"type":30,"tagName":605,"properties":798,"children":799},{"style":628},[800],{"type":26,"value":801},"\"close\"",{"type":30,"tagName":605,"properties":803,"children":804},{"style":617},[805],{"type":26,"value":806},", ohlcv.close);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":809,"children":810},{"class":607},[811,816,820,825,830,835,839,844],{"type":30,"tagName":605,"properties":812,"children":813},{"style":725},[814],{"type":26,"value":815},"output",{"type":30,"tagName":605,"properties":817,"children":818},{"style":617},[819],{"type":26,"value":733},{"type":30,"tagName":605,"properties":821,"children":822},{"style":628},[823],{"type":26,"value":824},"\"rank\"",{"type":30,"tagName":605,"properties":826,"children":827},{"style":617},[828],{"type":26,"value":829},", line, lower, { unit: ",{"type":30,"tagName":605,"properties":831,"children":832},{"style":628},[833],{"type":26,"value":834},"\"%\"",{"type":30,"tagName":605,"properties":836,"children":837},{"style":617},[838],{"type":26,"value":773},{"type":30,"tagName":605,"properties":840,"children":841},{"style":628},[842],{"type":26,"value":843},"\"Share of the window's closes below this bar's close\"",{"type":30,"tagName":605,"properties":845,"children":846},{"style":617},[847],{"type":26,"value":783},{"type":26,"value":27},{"type":30,"tagName":605,"properties":850,"children":851},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":854,"children":855},{"class":607},[856],{"type":30,"tagName":605,"properties":857,"children":859},{"style":858},"--shiki-dark:#6A737D;--shiki-light:#6A737D",[860],{"type":26,"value":861},"// Allocate once, at module start, sized from the param's max: never inside state().",{"type":26,"value":27},{"type":30,"tagName":605,"properties":864,"children":865},{"class":607},[866,871,876,881,886],{"type":30,"tagName":605,"properties":867,"children":868},{"style":611},[869],{"type":26,"value":870},"const",{"type":30,"tagName":605,"properties":872,"children":873},{"style":745},[874],{"type":26,"value":875}," MAX_WINDOW",{"type":30,"tagName":605,"properties":877,"children":878},{"style":611},[879],{"type":26,"value":880}," =",{"type":30,"tagName":605,"properties":882,"children":883},{"style":745},[884],{"type":26,"value":885}," 500",{"type":30,"tagName":605,"properties":887,"children":888},{"style":617},[889],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":892,"children":893},{"class":607},[894,898,903,907,912,917,922,927,932,937],{"type":30,"tagName":605,"properties":895,"children":896},{"style":611},[897],{"type":26,"value":870},{"type":30,"tagName":605,"properties":899,"children":900},{"style":745},[901],{"type":26,"value":902}," closes",{"type":30,"tagName":605,"properties":904,"children":905},{"style":611},[906],{"type":26,"value":880},{"type":30,"tagName":605,"properties":908,"children":909},{"style":611},[910],{"type":26,"value":911}," new",{"type":30,"tagName":605,"properties":913,"children":914},{"style":725},[915],{"type":26,"value":916}," StaticArray",{"type":30,"tagName":605,"properties":918,"children":919},{"style":617},[920],{"type":26,"value":921},"\u003C",{"type":30,"tagName":605,"properties":923,"children":924},{"style":725},[925],{"type":26,"value":926},"f64",{"type":30,"tagName":605,"properties":928,"children":929},{"style":617},[930],{"type":26,"value":931},">(",{"type":30,"tagName":605,"properties":933,"children":934},{"style":745},[935],{"type":26,"value":936},"MAX_WINDOW",{"type":30,"tagName":605,"properties":938,"children":939},{"style":617},[940],{"type":26,"value":941},");",{"type":26,"value":27},{"type":30,"tagName":605,"properties":944,"children":945},{"class":607},[946,950,955,960,965,969,974],{"type":30,"tagName":605,"properties":947,"children":948},{"style":611},[949],{"type":26,"value":143},{"type":30,"tagName":605,"properties":951,"children":952},{"style":617},[953],{"type":26,"value":954}," n",{"type":30,"tagName":605,"properties":956,"children":957},{"style":611},[958],{"type":26,"value":959},":",{"type":30,"tagName":605,"properties":961,"children":962},{"style":725},[963],{"type":26,"value":964}," i32",{"type":30,"tagName":605,"properties":966,"children":967},{"style":611},[968],{"type":26,"value":880},{"type":30,"tagName":605,"properties":970,"children":971},{"style":745},[972],{"type":26,"value":973}," 100",{"type":30,"tagName":605,"properties":975,"children":976},{"style":617},[977],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":980,"children":981},{"class":607},[982,986,991,995,999,1003,1008],{"type":30,"tagName":605,"properties":983,"children":984},{"style":611},[985],{"type":26,"value":143},{"type":30,"tagName":605,"properties":987,"children":988},{"style":617},[989],{"type":26,"value":990}," cursor",{"type":30,"tagName":605,"properties":992,"children":993},{"style":611},[994],{"type":26,"value":959},{"type":30,"tagName":605,"properties":996,"children":997},{"style":725},[998],{"type":26,"value":964},{"type":30,"tagName":605,"properties":1000,"children":1001},{"style":611},[1002],{"type":26,"value":880},{"type":30,"tagName":605,"properties":1004,"children":1005},{"style":745},[1006],{"type":26,"value":1007}," 0",{"type":30,"tagName":605,"properties":1009,"children":1010},{"style":617},[1011],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1014,"children":1015},{"class":607},[1016,1020,1025,1029,1033,1037,1041],{"type":30,"tagName":605,"properties":1017,"children":1018},{"style":611},[1019],{"type":26,"value":143},{"type":30,"tagName":605,"properties":1021,"children":1022},{"style":617},[1023],{"type":26,"value":1024}," count",{"type":30,"tagName":605,"properties":1026,"children":1027},{"style":611},[1028],{"type":26,"value":959},{"type":30,"tagName":605,"properties":1030,"children":1031},{"style":725},[1032],{"type":26,"value":964},{"type":30,"tagName":605,"properties":1034,"children":1035},{"style":611},[1036],{"type":26,"value":880},{"type":30,"tagName":605,"properties":1038,"children":1039},{"style":745},[1040],{"type":26,"value":1007},{"type":30,"tagName":605,"properties":1042,"children":1043},{"style":617},[1044],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1047,"children":1048},{"class":607},[1049,1053,1058,1062,1067,1071,1076],{"type":30,"tagName":605,"properties":1050,"children":1051},{"style":611},[1052],{"type":26,"value":143},{"type":30,"tagName":605,"properties":1054,"children":1055},{"style":617},[1056],{"type":26,"value":1057}," rank",{"type":30,"tagName":605,"properties":1059,"children":1060},{"style":611},[1061],{"type":26,"value":959},{"type":30,"tagName":605,"properties":1063,"children":1064},{"style":725},[1065],{"type":26,"value":1066}," f64",{"type":30,"tagName":605,"properties":1068,"children":1069},{"style":611},[1070],{"type":26,"value":880},{"type":30,"tagName":605,"properties":1072,"children":1073},{"style":745},[1074],{"type":26,"value":1075}," NaN",{"type":30,"tagName":605,"properties":1077,"children":1078},{"style":617},[1079],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1082,"children":1083},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":1086,"children":1087},{"class":607},[1088,1093,1098,1103,1108,1112,1117],{"type":30,"tagName":605,"properties":1089,"children":1090},{"style":611},[1091],{"type":26,"value":1092},"export",{"type":30,"tagName":605,"properties":1094,"children":1095},{"style":611},[1096],{"type":26,"value":1097}," function",{"type":30,"tagName":605,"properties":1099,"children":1100},{"style":725},[1101],{"type":26,"value":1102}," init",{"type":30,"tagName":605,"properties":1104,"children":1105},{"style":617},[1106],{"type":26,"value":1107},"()",{"type":30,"tagName":605,"properties":1109,"children":1110},{"style":611},[1111],{"type":26,"value":959},{"type":30,"tagName":605,"properties":1113,"children":1114},{"style":745},[1115],{"type":26,"value":1116}," void",{"type":30,"tagName":605,"properties":1118,"children":1119},{"style":617},[1120],{"type":26,"value":1121}," {",{"type":26,"value":27},{"type":30,"tagName":605,"properties":1124,"children":1125},{"class":607},[1126,1131,1136,1140,1144,1149],{"type":30,"tagName":605,"properties":1127,"children":1128},{"style":617},[1129],{"type":26,"value":1130},"  n ",{"type":30,"tagName":605,"properties":1132,"children":1133},{"style":611},[1134],{"type":26,"value":1135},"=",{"type":30,"tagName":605,"properties":1137,"children":1138},{"style":725},[1139],{"type":26,"value":964},{"type":30,"tagName":605,"properties":1141,"children":1142},{"style":617},[1143],{"type":26,"value":733},{"type":30,"tagName":605,"properties":1145,"children":1146},{"style":725},[1147],{"type":26,"value":1148},"p_window",{"type":30,"tagName":605,"properties":1150,"children":1151},{"style":617},[1152],{"type":26,"value":1153},"());",{"type":26,"value":27},{"type":30,"tagName":605,"properties":1156,"children":1157},{"class":607},[1158],{"type":30,"tagName":605,"properties":1159,"children":1160},{"style":617},[1161],{"type":26,"value":1162},"}",{"type":26,"value":27},{"type":30,"tagName":605,"properties":1165,"children":1166},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":1169,"children":1170},{"class":607},[1171,1175,1179,1184,1188,1192,1196],{"type":30,"tagName":605,"properties":1172,"children":1173},{"style":611},[1174],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":1176,"children":1177},{"style":611},[1178],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":1180,"children":1181},{"style":725},[1182],{"type":26,"value":1183}," state",{"type":30,"tagName":605,"properties":1185,"children":1186},{"style":617},[1187],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":1189,"children":1190},{"style":611},[1191],{"type":26,"value":959},{"type":30,"tagName":605,"properties":1193,"children":1194},{"style":725},[1195],{"type":26,"value":964},{"type":30,"tagName":605,"properties":1197,"children":1198},{"style":617},[1199],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1202,"children":1203},{"class":607},[1204,1209,1214,1218,1223],{"type":30,"tagName":605,"properties":1205,"children":1206},{"style":611},[1207],{"type":26,"value":1208},"  const",{"type":30,"tagName":605,"properties":1210,"children":1211},{"style":745},[1212],{"type":26,"value":1213}," close",{"type":30,"tagName":605,"properties":1215,"children":1216},{"style":611},[1217],{"type":26,"value":880},{"type":30,"tagName":605,"properties":1219,"children":1220},{"style":725},[1221],{"type":26,"value":1222}," in_close",{"type":30,"tagName":605,"properties":1224,"children":1225},{"style":617},[1226],{"type":26,"value":1227},"();",{"type":26,"value":27},{"type":30,"tagName":605,"properties":1230,"children":1231},{"class":607},[1232,1237,1242,1246,1250],{"type":30,"tagName":605,"properties":1233,"children":1234},{"style":611},[1235],{"type":26,"value":1236},"  let",{"type":30,"tagName":605,"properties":1238,"children":1239},{"style":617},[1240],{"type":26,"value":1241}," below ",{"type":30,"tagName":605,"properties":1243,"children":1244},{"style":611},[1245],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":1247,"children":1248},{"style":745},[1249],{"type":26,"value":1007},{"type":30,"tagName":605,"properties":1251,"children":1252},{"style":617},[1253],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1256,"children":1257},{"class":607},[1258,1263,1268,1272,1277,1281,1285,1290,1294,1299,1304,1309,1314,1319,1323,1328,1333,1338],{"type":30,"tagName":605,"properties":1259,"children":1260},{"style":611},[1261],{"type":26,"value":1262},"  for",{"type":30,"tagName":605,"properties":1264,"children":1265},{"style":617},[1266],{"type":26,"value":1267}," (",{"type":30,"tagName":605,"properties":1269,"children":1270},{"style":611},[1271],{"type":26,"value":143},{"type":30,"tagName":605,"properties":1273,"children":1274},{"style":617},[1275],{"type":26,"value":1276}," i ",{"type":30,"tagName":605,"properties":1278,"children":1279},{"style":611},[1280],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":1282,"children":1283},{"style":745},[1284],{"type":26,"value":1007},{"type":30,"tagName":605,"properties":1286,"children":1287},{"style":617},[1288],{"type":26,"value":1289},"; i ",{"type":30,"tagName":605,"properties":1291,"children":1292},{"style":611},[1293],{"type":26,"value":921},{"type":30,"tagName":605,"properties":1295,"children":1296},{"style":617},[1297],{"type":26,"value":1298}," count; i",{"type":30,"tagName":605,"properties":1300,"children":1301},{"style":611},[1302],{"type":26,"value":1303},"++",{"type":30,"tagName":605,"properties":1305,"children":1306},{"style":617},[1307],{"type":26,"value":1308},") ",{"type":30,"tagName":605,"properties":1310,"children":1311},{"style":611},[1312],{"type":26,"value":1313},"if",{"type":30,"tagName":605,"properties":1315,"children":1316},{"style":617},[1317],{"type":26,"value":1318}," (closes[i] ",{"type":30,"tagName":605,"properties":1320,"children":1321},{"style":611},[1322],{"type":26,"value":921},{"type":30,"tagName":605,"properties":1324,"children":1325},{"style":617},[1326],{"type":26,"value":1327}," close) below ",{"type":30,"tagName":605,"properties":1329,"children":1330},{"style":611},[1331],{"type":26,"value":1332},"+=",{"type":30,"tagName":605,"properties":1334,"children":1335},{"style":745},[1336],{"type":26,"value":1337}," 1",{"type":30,"tagName":605,"properties":1339,"children":1340},{"style":617},[1341],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1344,"children":1345},{"class":607},[1346,1351,1355],{"type":30,"tagName":605,"properties":1347,"children":1348},{"style":617},[1349],{"type":26,"value":1350},"  closes[cursor] ",{"type":30,"tagName":605,"properties":1352,"children":1353},{"style":611},[1354],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":1356,"children":1357},{"style":617},[1358],{"type":26,"value":1359}," close;",{"type":26,"value":27},{"type":30,"tagName":605,"properties":1362,"children":1363},{"class":607},[1364,1369,1373,1378,1383,1387,1391,1396],{"type":30,"tagName":605,"properties":1365,"children":1366},{"style":617},[1367],{"type":26,"value":1368},"  cursor ",{"type":30,"tagName":605,"properties":1370,"children":1371},{"style":611},[1372],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":1374,"children":1375},{"style":617},[1376],{"type":26,"value":1377}," (cursor ",{"type":30,"tagName":605,"properties":1379,"children":1380},{"style":611},[1381],{"type":26,"value":1382},"+",{"type":30,"tagName":605,"properties":1384,"children":1385},{"style":745},[1386],{"type":26,"value":1337},{"type":30,"tagName":605,"properties":1388,"children":1389},{"style":617},[1390],{"type":26,"value":1308},{"type":30,"tagName":605,"properties":1392,"children":1393},{"style":611},[1394],{"type":26,"value":1395},"%",{"type":30,"tagName":605,"properties":1397,"children":1398},{"style":617},[1399],{"type":26,"value":1400}," n;",{"type":26,"value":27},{"type":30,"tagName":605,"properties":1403,"children":1404},{"class":607},[1405,1410,1415,1419,1424,1428,1432],{"type":30,"tagName":605,"properties":1406,"children":1407},{"style":611},[1408],{"type":26,"value":1409},"  if",{"type":30,"tagName":605,"properties":1411,"children":1412},{"style":617},[1413],{"type":26,"value":1414}," (count ",{"type":30,"tagName":605,"properties":1416,"children":1417},{"style":611},[1418],{"type":26,"value":921},{"type":30,"tagName":605,"properties":1420,"children":1421},{"style":617},[1422],{"type":26,"value":1423}," n) count ",{"type":30,"tagName":605,"properties":1425,"children":1426},{"style":611},[1427],{"type":26,"value":1332},{"type":30,"tagName":605,"properties":1429,"children":1430},{"style":745},[1431],{"type":26,"value":1337},{"type":30,"tagName":605,"properties":1433,"children":1434},{"style":617},[1435],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1438,"children":1439},{"class":607},[1440,1444,1448,1452,1457,1462,1466],{"type":30,"tagName":605,"properties":1441,"children":1442},{"style":611},[1443],{"type":26,"value":1409},{"type":30,"tagName":605,"properties":1445,"children":1446},{"style":617},[1447],{"type":26,"value":1414},{"type":30,"tagName":605,"properties":1449,"children":1450},{"style":611},[1451],{"type":26,"value":921},{"type":30,"tagName":605,"properties":1453,"children":1454},{"style":617},[1455],{"type":26,"value":1456}," n) ",{"type":30,"tagName":605,"properties":1458,"children":1459},{"style":611},[1460],{"type":26,"value":1461},"return",{"type":30,"tagName":605,"properties":1463,"children":1464},{"style":745},[1465],{"type":26,"value":1007},{"type":30,"tagName":605,"properties":1467,"children":1468},{"style":617},[1469],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1472,"children":1473},{"class":607},[1474,1479,1483,1487,1492,1497,1501,1506,1511,1515],{"type":30,"tagName":605,"properties":1475,"children":1476},{"style":617},[1477],{"type":26,"value":1478},"  rank ",{"type":30,"tagName":605,"properties":1480,"children":1481},{"style":611},[1482],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":1484,"children":1485},{"style":617},[1486],{"type":26,"value":1267},{"type":30,"tagName":605,"properties":1488,"children":1489},{"style":745},[1490],{"type":26,"value":1491},"100.0",{"type":30,"tagName":605,"properties":1493,"children":1494},{"style":611},[1495],{"type":26,"value":1496}," *",{"type":30,"tagName":605,"properties":1498,"children":1499},{"style":725},[1500],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":1502,"children":1503},{"style":617},[1504],{"type":26,"value":1505},"(below)) ",{"type":30,"tagName":605,"properties":1507,"children":1508},{"style":611},[1509],{"type":26,"value":1510},"/",{"type":30,"tagName":605,"properties":1512,"children":1513},{"style":725},[1514],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":1516,"children":1517},{"style":617},[1518],{"type":26,"value":1519},"(n);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":1522,"children":1523},{"class":607},[1524,1529,1533],{"type":30,"tagName":605,"properties":1525,"children":1526},{"style":611},[1527],{"type":26,"value":1528},"  return",{"type":30,"tagName":605,"properties":1530,"children":1531},{"style":745},[1532],{"type":26,"value":1337},{"type":30,"tagName":605,"properties":1534,"children":1535},{"style":617},[1536],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1539,"children":1540},{"class":607},[1541],{"type":30,"tagName":605,"properties":1542,"children":1543},{"style":617},[1544],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1547,"children":1548},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":1551,"children":1552},{"class":607},[1553,1557,1561,1566,1570,1574,1578],{"type":30,"tagName":605,"properties":1554,"children":1555},{"style":611},[1556],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":1558,"children":1559},{"style":611},[1560],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":1562,"children":1563},{"style":725},[1564],{"type":26,"value":1565}," finalize",{"type":30,"tagName":605,"properties":1567,"children":1568},{"style":617},[1569],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":1571,"children":1572},{"style":611},[1573],{"type":26,"value":959},{"type":30,"tagName":605,"properties":1575,"children":1576},{"style":745},[1577],{"type":26,"value":1116},{"type":30,"tagName":605,"properties":1579,"children":1580},{"style":617},[1581],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1584,"children":1585},{"class":607},[1586,1591],{"type":30,"tagName":605,"properties":1587,"children":1588},{"style":725},[1589],{"type":26,"value":1590},"  out_rank",{"type":30,"tagName":605,"properties":1592,"children":1593},{"style":617},[1594],{"type":26,"value":1595},"(rank);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":1598,"children":1599},{"class":607},[1600,1605],{"type":30,"tagName":605,"properties":1601,"children":1602},{"style":725},[1603],{"type":26,"value":1604},"  emitRow",{"type":30,"tagName":605,"properties":1606,"children":1607},{"style":617},[1608],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1611,"children":1612},{"class":607},[1613],{"type":30,"tagName":605,"properties":1614,"children":1615},{"style":617},[1616],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1619,"children":1620},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":1623,"children":1624},{"class":607},[1625],{"type":30,"tagName":605,"properties":1626,"children":1627},{"style":858},[1628],{"type":26,"value":1629},"// Every module-level variable goes back to its starting value: a field this forgets is a stale value",{"type":26,"value":27},{"type":30,"tagName":605,"properties":1632,"children":1633},{"class":607},[1634],{"type":30,"tagName":605,"properties":1635,"children":1636},{"style":858},[1637],{"type":26,"value":1638},"// the forming bar's replay will read.",{"type":26,"value":27},{"type":30,"tagName":605,"properties":1641,"children":1642},{"class":607},[1643,1647,1651,1656,1660,1664,1668],{"type":30,"tagName":605,"properties":1644,"children":1645},{"style":611},[1646],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":1648,"children":1649},{"style":611},[1650],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":1652,"children":1653},{"style":725},[1654],{"type":26,"value":1655}," reset",{"type":30,"tagName":605,"properties":1657,"children":1658},{"style":617},[1659],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":1661,"children":1662},{"style":611},[1663],{"type":26,"value":959},{"type":30,"tagName":605,"properties":1665,"children":1666},{"style":745},[1667],{"type":26,"value":1116},{"type":30,"tagName":605,"properties":1669,"children":1670},{"style":617},[1671],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1674,"children":1675},{"class":607},[1676,1680,1684,1688],{"type":30,"tagName":605,"properties":1677,"children":1678},{"style":617},[1679],{"type":26,"value":1368},{"type":30,"tagName":605,"properties":1681,"children":1682},{"style":611},[1683],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":1685,"children":1686},{"style":745},[1687],{"type":26,"value":1007},{"type":30,"tagName":605,"properties":1689,"children":1690},{"style":617},[1691],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1694,"children":1695},{"class":607},[1696,1701,1705,1709],{"type":30,"tagName":605,"properties":1697,"children":1698},{"style":617},[1699],{"type":26,"value":1700},"  count ",{"type":30,"tagName":605,"properties":1702,"children":1703},{"style":611},[1704],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":1706,"children":1707},{"style":745},[1708],{"type":26,"value":1007},{"type":30,"tagName":605,"properties":1710,"children":1711},{"style":617},[1712],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1715,"children":1716},{"class":607},[1717,1721,1725,1729],{"type":30,"tagName":605,"properties":1718,"children":1719},{"style":617},[1720],{"type":26,"value":1478},{"type":30,"tagName":605,"properties":1722,"children":1723},{"style":611},[1724],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":1726,"children":1727},{"style":745},[1728],{"type":26,"value":1075},{"type":30,"tagName":605,"properties":1730,"children":1731},{"style":617},[1732],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":1735,"children":1736},{"class":607},[1737],{"type":30,"tagName":605,"properties":1738,"children":1739},{"style":617},[1740],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":31,"properties":1743,"children":1744,"position":1830},{},[1745,1754,1766,1773,1786,1793,1805,1812,1824],{"type":26,"value":1746,"position":1747},"The TA classes follow the same rule: ",{"start":1748,"end":1751},{"line":1749,"column":20,"offset":1750},71,3167,{"line":1749,"column":1752,"offset":1753},38,3204,{"type":30,"tagName":44,"properties":1755,"children":1756,"position":1763},{},[1757],{"type":26,"value":1758,"position":1759},"new Sma(period)",{"start":1760,"end":1761},{"line":1749,"column":1752,"offset":1753},{"line":1749,"column":313,"offset":1762},3221,{"start":1764,"end":1765},{"line":1749,"column":1752,"offset":1753},{"line":1749,"column":313,"offset":1762},{"type":26,"value":1767,"position":1768}," allocates its window in the constructor and ",{"start":1769,"end":1770},{"line":1749,"column":313,"offset":1762},{"line":1749,"column":1771,"offset":1772},100,3266,{"type":30,"tagName":44,"properties":1774,"children":1775,"position":1783},{},[1776],{"type":26,"value":1777,"position":1778},"update()",{"start":1779,"end":1780},{"line":1749,"column":1771,"offset":1772},{"line":1749,"column":1781,"offset":1782},110,3276,{"start":1784,"end":1785},{"line":1749,"column":1771,"offset":1772},{"line":1749,"column":1781,"offset":1782},{"type":26,"value":1787,"position":1788}," never allocates, which is why they are constructed in ",{"start":1789,"end":1790},{"line":1749,"column":1781,"offset":1782},{"line":1749,"column":1791,"offset":1792},165,3331,{"type":30,"tagName":44,"properties":1794,"children":1795,"position":1802},{},[1796],{"type":26,"value":496,"position":1797},{"start":1798,"end":1799},{"line":1749,"column":1791,"offset":1792},{"line":1749,"column":1800,"offset":1801},173,3339,{"start":1803,"end":1804},{"line":1749,"column":1791,"offset":1792},{"line":1749,"column":1800,"offset":1801},{"type":26,"value":1806,"position":1807}," and fed in ",{"start":1808,"end":1809},{"line":1749,"column":1800,"offset":1801},{"line":1749,"column":1810,"offset":1811},185,3351,{"type":30,"tagName":44,"properties":1813,"children":1814,"position":1821},{},[1815],{"type":26,"value":294,"position":1816},{"start":1817,"end":1818},{"line":1749,"column":1810,"offset":1811},{"line":1749,"column":1819,"offset":1820},194,3360,{"start":1822,"end":1823},{"line":1749,"column":1810,"offset":1811},{"line":1749,"column":1819,"offset":1820},{"type":26,"value":265,"position":1825},{"start":1826,"end":1827},{"line":1749,"column":1819,"offset":1820},{"line":1749,"column":1828,"offset":1829},195,3361,{"start":1831,"end":1832},{"line":1749,"column":20,"offset":1750},{"line":1749,"column":1828,"offset":1829},{"type":26,"value":27},{"type":30,"tagName":88,"properties":1835,"children":1837,"position":1858},{"id":1836},"reset-every-field",[1838,1852],{"type":30,"tagName":44,"properties":1839,"children":1840,"position":1849},{},[1841],{"type":26,"value":48,"position":1842},{"start":1843,"end":1846},{"line":1844,"column":38,"offset":1845},73,3367,{"line":1844,"column":1847,"offset":1848},14,3376,{"start":1850,"end":1851},{"line":1844,"column":38,"offset":1845},{"line":1844,"column":1847,"offset":1848},{"type":26,"value":1853,"position":1854}," every field",{"start":1855,"end":1856},{"line":1844,"column":1847,"offset":1848},{"line":1844,"column":99,"offset":1857},3388,{"start":1859,"end":1861},{"line":1844,"column":20,"offset":1860},3363,{"line":1844,"column":99,"offset":1857},{"type":26,"value":27},{"type":30,"tagName":31,"properties":1864,"children":1865,"position":2029},{},[1866,1875,1887,1894,1906,1913,1925,1932,1944,1951,1964,1970,1983,1990,2002,2009,2022],{"type":26,"value":1867,"position":1868},"The forming bar is replayed on every tick from a snapshot of the module's state after the last closed bar, and the host calls ",{"start":1869,"end":1872},{"line":1870,"column":20,"offset":1871},75,3390,{"line":1870,"column":1873,"offset":1874},127,3516,{"type":30,"tagName":44,"properties":1876,"children":1877,"position":1884},{},[1878],{"type":26,"value":48,"position":1879},{"start":1880,"end":1881},{"line":1870,"column":1873,"offset":1874},{"line":1870,"column":1882,"offset":1883},136,3525,{"start":1885,"end":1886},{"line":1870,"column":1873,"offset":1874},{"line":1870,"column":1882,"offset":1883},{"type":26,"value":1888,"position":1889}," first. A variable ",{"start":1890,"end":1891},{"line":1870,"column":1882,"offset":1883},{"line":1870,"column":1892,"offset":1893},155,3544,{"type":30,"tagName":44,"properties":1895,"children":1896,"position":1903},{},[1897],{"type":26,"value":48,"position":1898},{"start":1899,"end":1900},{"line":1870,"column":1892,"offset":1893},{"line":1870,"column":1901,"offset":1902},164,3553,{"start":1904,"end":1905},{"line":1870,"column":1892,"offset":1893},{"line":1870,"column":1901,"offset":1902},{"type":26,"value":1907,"position":1908}," forgets is a stale value the replay reads, and the symptom is subtle: a line that lags by a tick, a gate that fires once and never clears, an accumulator that double-counts. The rule is mechanical: for every module-level ",{"start":1909,"end":1910},{"line":1870,"column":1901,"offset":1902},{"line":1870,"column":1911,"offset":1912},386,3775,{"type":30,"tagName":44,"properties":1914,"children":1915,"position":1922},{},[1916],{"type":26,"value":143,"position":1917},{"start":1918,"end":1919},{"line":1870,"column":1911,"offset":1912},{"line":1870,"column":1920,"offset":1921},391,3780,{"start":1923,"end":1924},{"line":1870,"column":1911,"offset":1912},{"line":1870,"column":1920,"offset":1921},{"type":26,"value":1926,"position":1927},", one line in ",{"start":1928,"end":1929},{"line":1870,"column":1920,"offset":1921},{"line":1870,"column":1930,"offset":1931},405,3794,{"type":30,"tagName":44,"properties":1933,"children":1934,"position":1941},{},[1935],{"type":26,"value":48,"position":1936},{"start":1937,"end":1938},{"line":1870,"column":1930,"offset":1931},{"line":1870,"column":1939,"offset":1940},414,3803,{"start":1942,"end":1943},{"line":1870,"column":1930,"offset":1931},{"line":1870,"column":1939,"offset":1940},{"type":26,"value":1945,"position":1946}," restoring its starting value, and ",{"start":1947,"end":1948},{"line":1870,"column":1939,"offset":1940},{"line":1870,"column":1949,"offset":1950},449,3838,{"type":30,"tagName":44,"properties":1952,"children":1953,"position":1961},{},[1954],{"type":26,"value":1955,"position":1956},".reset()",{"start":1957,"end":1958},{"line":1870,"column":1949,"offset":1950},{"line":1870,"column":1959,"offset":1960},459,3848,{"start":1962,"end":1963},{"line":1870,"column":1949,"offset":1950},{"line":1870,"column":1959,"offset":1960},{"type":26,"value":1965,"position":1966}," on every TA object. The buffer contents themselves need no clearing when a ",{"start":1967,"end":1968},{"line":1870,"column":1959,"offset":1960},{"line":1870,"column":117,"offset":1969},3924,{"type":30,"tagName":44,"properties":1971,"children":1972,"position":1980},{},[1973],{"type":26,"value":1974,"position":1975},"count",{"start":1976,"end":1977},{"line":1870,"column":117,"offset":1969},{"line":1870,"column":1978,"offset":1979},542,3931,{"start":1981,"end":1982},{"line":1870,"column":117,"offset":1969},{"line":1870,"column":1978,"offset":1979},{"type":26,"value":1984,"position":1985}," field says how much of the buffer is valid; resetting ",{"start":1986,"end":1987},{"line":1870,"column":1978,"offset":1979},{"line":1870,"column":1988,"offset":1989},597,3986,{"type":30,"tagName":44,"properties":1991,"children":1992,"position":1999},{},[1993],{"type":26,"value":1974,"position":1994},{"start":1995,"end":1996},{"line":1870,"column":1988,"offset":1989},{"line":1870,"column":1997,"offset":1998},604,3993,{"start":2000,"end":2001},{"line":1870,"column":1988,"offset":1989},{"line":1870,"column":1997,"offset":1998},{"type":26,"value":2003,"position":2004}," and ",{"start":2005,"end":2006},{"line":1870,"column":1997,"offset":1998},{"line":1870,"column":2007,"offset":2008},609,3998,{"type":30,"tagName":44,"properties":2010,"children":2011,"position":2019},{},[2012],{"type":26,"value":2013,"position":2014},"cursor",{"start":2015,"end":2016},{"line":1870,"column":2007,"offset":2008},{"line":1870,"column":2017,"offset":2018},617,4006,{"start":2020,"end":2021},{"line":1870,"column":2007,"offset":2008},{"line":1870,"column":2017,"offset":2018},{"type":26,"value":2023,"position":2024}," is enough.",{"start":2025,"end":2026},{"line":1870,"column":2017,"offset":2018},{"line":1870,"column":2027,"offset":2028},628,4017,{"start":2030,"end":2031},{"line":1870,"column":20,"offset":1871},{"line":1870,"column":2027,"offset":2028},{"type":26,"value":27},{"type":30,"tagName":88,"properties":2034,"children":2036,"position":2046},{"id":2035},"accessors-over-slot-literals",[2037],{"type":26,"value":2038,"position":2039},"Accessors over slot literals",{"start":2040,"end":2043},{"line":2041,"column":38,"offset":2042},77,4023,{"line":2041,"column":2044,"offset":2045},33,4051,{"start":2047,"end":2049},{"line":2041,"column":20,"offset":2048},4019,{"line":2041,"column":2044,"offset":2045},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2052,"children":2053,"position":2259},{},[2054,2062,2075,2081,2093,2099,2112,2119,2132,2138,2151,2158,2171,2178,2191,2197,2210,2216,2228,2234,2252],{"type":26,"value":2055,"position":2056},"Params, inputs, and outputs reach the code by name: ",{"start":2057,"end":2060},{"line":2058,"column":20,"offset":2059},79,4053,{"line":2058,"column":307,"offset":2061},4105,{"type":30,"tagName":44,"properties":2063,"children":2064,"position":2072},{},[2065],{"type":26,"value":2066,"position":2067},"p_period()",{"start":2068,"end":2069},{"line":2058,"column":307,"offset":2061},{"line":2058,"column":2070,"offset":2071},65,4117,{"start":2073,"end":2074},{"line":2058,"column":307,"offset":2061},{"line":2058,"column":2070,"offset":2071},{"type":26,"value":226,"position":2076},{"start":2077,"end":2078},{"line":2058,"column":2070,"offset":2071},{"line":2058,"column":2079,"offset":2080},67,4119,{"type":30,"tagName":44,"properties":2082,"children":2083,"position":2090},{},[2084],{"type":26,"value":2085,"position":2086},"in_close()",{"start":2087,"end":2088},{"line":2058,"column":2079,"offset":2080},{"line":2058,"column":2058,"offset":2089},4131,{"start":2091,"end":2092},{"line":2058,"column":2079,"offset":2080},{"line":2058,"column":2058,"offset":2089},{"type":26,"value":226,"position":2094},{"start":2095,"end":2096},{"line":2058,"column":2058,"offset":2089},{"line":2058,"column":2097,"offset":2098},81,4133,{"type":30,"tagName":44,"properties":2100,"children":2101,"position":2109},{},[2102],{"type":26,"value":2103,"position":2104},"out_sma(value)",{"start":2105,"end":2106},{"line":2058,"column":2097,"offset":2098},{"line":2058,"column":2107,"offset":2108},97,4149,{"start":2110,"end":2111},{"line":2058,"column":2097,"offset":2098},{"line":2058,"column":2107,"offset":2108},{"type":26,"value":2113,"position":2114},", generated from the declarations before every build. Underneath, the host passes values positionally, and the raw calls (",{"start":2115,"end":2116},{"line":2058,"column":2107,"offset":2108},{"line":2058,"column":2117,"offset":2118},219,4271,{"type":30,"tagName":44,"properties":2120,"children":2121,"position":2129},{},[2122],{"type":26,"value":2123,"position":2124},"getFloat(0)",{"start":2125,"end":2126},{"line":2058,"column":2117,"offset":2118},{"line":2058,"column":2127,"offset":2128},232,4284,{"start":2130,"end":2131},{"line":2058,"column":2117,"offset":2118},{"line":2058,"column":2127,"offset":2128},{"type":26,"value":226,"position":2133},{"start":2134,"end":2135},{"line":2058,"column":2127,"offset":2128},{"line":2058,"column":2136,"offset":2137},234,4286,{"type":30,"tagName":44,"properties":2139,"children":2140,"position":2148},{},[2141],{"type":26,"value":2142,"position":2143},"setOutput(0, ...)",{"start":2144,"end":2145},{"line":2058,"column":2136,"offset":2137},{"line":2058,"column":2146,"offset":2147},253,4305,{"start":2149,"end":2150},{"line":2058,"column":2136,"offset":2137},{"line":2058,"column":2146,"offset":2147},{"type":26,"value":2152,"position":2153},") bind by position, so adding a declaration above them silently rebinds them. The build refuses the raw form in your source (",{"start":2154,"end":2155},{"line":2058,"column":2146,"offset":2147},{"line":2058,"column":2156,"offset":2157},378,4430,{"type":30,"tagName":44,"properties":2159,"children":2160,"position":2168},{},[2161],{"type":26,"value":2162,"position":2163},"scaffold build blocked: raw positional slot literals silently rebind",{"start":2164,"end":2165},{"line":2058,"column":2156,"offset":2157},{"line":2058,"column":2166,"offset":2167},448,4500,{"start":2169,"end":2170},{"line":2058,"column":2156,"offset":2157},{"line":2058,"column":2166,"offset":2167},{"type":26,"value":2172,"position":2173},") and names the accessor to use instead. The same rule keeps a rename honest: rename ",{"start":2174,"end":2175},{"line":2058,"column":2166,"offset":2167},{"line":2058,"column":2176,"offset":2177},533,4585,{"type":30,"tagName":44,"properties":2179,"children":2180,"position":2188},{},[2181],{"type":26,"value":2182,"position":2183},"output(\"sma\", ...)",{"start":2184,"end":2185},{"line":2058,"column":2176,"offset":2177},{"line":2058,"column":2186,"offset":2187},553,4605,{"start":2189,"end":2190},{"line":2058,"column":2176,"offset":2177},{"line":2058,"column":2186,"offset":2187},{"type":26,"value":2192,"position":2193}," to ",{"start":2194,"end":2195},{"line":2058,"column":2186,"offset":2187},{"line":2058,"column":148,"offset":2196},4609,{"type":30,"tagName":44,"properties":2198,"children":2199,"position":2207},{},[2200],{"type":26,"value":2201,"position":2202},"output(\"average\", ...)",{"start":2203,"end":2204},{"line":2058,"column":148,"offset":2196},{"line":2058,"column":2205,"offset":2206},581,4633,{"start":2208,"end":2209},{"line":2058,"column":148,"offset":2196},{"line":2058,"column":2205,"offset":2206},{"type":26,"value":2211,"position":2212}," and the compiler points at every stale ",{"start":2213,"end":2214},{"line":2058,"column":2205,"offset":2206},{"line":2058,"column":171,"offset":2215},4673,{"type":30,"tagName":44,"properties":2217,"children":2218,"position":2225},{},[2219],{"type":26,"value":2220,"position":2221},"out_sma",{"start":2222,"end":2223},{"line":2058,"column":171,"offset":2215},{"line":2058,"column":181,"offset":2224},4682,{"start":2226,"end":2227},{"line":2058,"column":171,"offset":2215},{"line":2058,"column":181,"offset":2224},{"type":26,"value":1267,"position":2229},{"start":2230,"end":2231},{"line":2058,"column":181,"offset":2224},{"line":2058,"column":2232,"offset":2233},632,4684,{"type":30,"tagName":452,"properties":2235,"children":2237,"position":2247},{"href":2236},"../functions/script-definition.md",[2238],{"type":26,"value":2239,"position":2240},"Script definition",{"start":2241,"end":2244},{"line":2058,"column":2242,"offset":2243},633,4685,{"line":2058,"column":2245,"offset":2246},650,4702,{"start":2248,"end":2249},{"line":2058,"column":2232,"offset":2233},{"line":2058,"column":2250,"offset":2251},686,4738,{"type":26,"value":2253,"position":2254},").",{"start":2255,"end":2256},{"line":2058,"column":2250,"offset":2251},{"line":2058,"column":2257,"offset":2258},688,4740,{"start":2260,"end":2261},{"line":2058,"column":20,"offset":2059},{"line":2058,"column":2257,"offset":2258},{"type":26,"value":27},{"type":30,"tagName":68,"properties":2264,"children":2266,"position":2275},{"id":2265},"technical-indicators",[2267],{"type":26,"value":2268,"position":2269},"Technical indicators",{"start":2270,"end":2272},{"line":2097,"column":77,"offset":2271},4745,{"line":2097,"column":2273,"offset":2274},24,4765,{"start":2276,"end":2278},{"line":2097,"column":20,"offset":2277},4742,{"line":2097,"column":2273,"offset":2274},{"type":26,"value":27},{"type":30,"tagName":88,"properties":2281,"children":2283,"position":2293},{"id":2282},"read-the-period-once-cast-it-once",[2284],{"type":26,"value":2285,"position":2286},"Read the period once, cast it once",{"start":2287,"end":2290},{"line":2288,"column":38,"offset":2289},83,4771,{"line":2288,"column":2291,"offset":2292},39,4805,{"start":2294,"end":2296},{"line":2288,"column":20,"offset":2295},4767,{"line":2288,"column":2291,"offset":2292},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2299,"children":2300,"position":2440},{},[2301,2309,2320,2327,2340,2347,2358,2365,2377,2384,2396,2402,2414,2421,2433],{"type":26,"value":2302,"position":2303},"Params are ",{"start":2304,"end":2306},{"line":170,"column":20,"offset":2305},4807,{"line":170,"column":2307,"offset":2308},12,4818,{"type":30,"tagName":44,"properties":2310,"children":2311,"position":2317},{},[2312],{"type":26,"value":926,"position":2313},{"start":2314,"end":2315},{"line":170,"column":2307,"offset":2308},{"line":170,"column":288,"offset":2316},4823,{"start":2318,"end":2319},{"line":170,"column":2307,"offset":2308},{"line":170,"column":288,"offset":2316},{"type":26,"value":2321,"position":2322},"; a period is ",{"start":2323,"end":2324},{"line":170,"column":288,"offset":2316},{"line":170,"column":2325,"offset":2326},31,4837,{"type":30,"tagName":44,"properties":2328,"children":2329,"position":2337},{},[2330],{"type":26,"value":2331,"position":2332},"i32",{"start":2333,"end":2334},{"line":170,"column":2325,"offset":2326},{"line":170,"column":2335,"offset":2336},36,4842,{"start":2338,"end":2339},{"line":170,"column":2325,"offset":2326},{"line":170,"column":2335,"offset":2336},{"type":26,"value":2341,"position":2342},". Read each param in ",{"start":2343,"end":2344},{"line":170,"column":2335,"offset":2336},{"line":170,"column":2345,"offset":2346},57,4863,{"type":30,"tagName":44,"properties":2348,"children":2349,"position":2355},{},[2350],{"type":26,"value":496,"position":2351},{"start":2352,"end":2353},{"line":170,"column":2345,"offset":2346},{"line":170,"column":2070,"offset":2354},4871,{"start":2356,"end":2357},{"line":170,"column":2345,"offset":2346},{"line":170,"column":2070,"offset":2354},{"type":26,"value":2359,"position":2360},", cast it there (",{"start":2361,"end":2362},{"line":170,"column":2070,"offset":2354},{"line":170,"column":2363,"offset":2364},82,4888,{"type":30,"tagName":44,"properties":2366,"children":2367,"position":2374},{},[2368],{"type":26,"value":2369,"position":2370},"new Sma(i32(p_period()))",{"start":2371,"end":2372},{"line":170,"column":2363,"offset":2364},{"line":170,"column":419,"offset":2373},4914,{"start":2375,"end":2376},{"line":170,"column":2363,"offset":2364},{"line":170,"column":419,"offset":2373},{"type":26,"value":2378,"position":2379},"), and keep the class in a module-level variable. Reading ",{"start":2380,"end":2381},{"line":170,"column":419,"offset":2373},{"line":170,"column":2382,"offset":2383},166,4972,{"type":30,"tagName":44,"properties":2385,"children":2386,"position":2393},{},[2387],{"type":26,"value":2066,"position":2388},{"start":2389,"end":2390},{"line":170,"column":2382,"offset":2383},{"line":170,"column":2391,"offset":2392},178,4984,{"start":2394,"end":2395},{"line":170,"column":2382,"offset":2383},{"line":170,"column":2391,"offset":2392},{"type":26,"value":2397,"position":2398}," in ",{"start":2399,"end":2400},{"line":170,"column":2391,"offset":2392},{"line":170,"column":429,"offset":2401},4988,{"type":30,"tagName":44,"properties":2403,"children":2404,"position":2411},{},[2405],{"type":26,"value":294,"position":2406},{"start":2407,"end":2408},{"line":170,"column":429,"offset":2401},{"line":170,"column":2409,"offset":2410},191,4997,{"start":2412,"end":2413},{"line":170,"column":429,"offset":2401},{"line":170,"column":2409,"offset":2410},{"type":26,"value":2415,"position":2416}," works but does the cast on every bar for nothing, and constructing a class in ",{"start":2417,"end":2418},{"line":170,"column":2409,"offset":2410},{"line":170,"column":2419,"offset":2420},270,5076,{"type":30,"tagName":44,"properties":2422,"children":2423,"position":2430},{},[2424],{"type":26,"value":294,"position":2425},{"start":2426,"end":2427},{"line":170,"column":2419,"offset":2420},{"line":170,"column":2428,"offset":2429},279,5085,{"start":2431,"end":2432},{"line":170,"column":2419,"offset":2420},{"line":170,"column":2428,"offset":2429},{"type":26,"value":2434,"position":2435}," allocates on every bar.",{"start":2436,"end":2437},{"line":170,"column":2428,"offset":2429},{"line":170,"column":2438,"offset":2439},303,5109,{"start":2441,"end":2442},{"line":170,"column":20,"offset":2305},{"line":170,"column":2438,"offset":2439},{"type":26,"value":27},{"type":30,"tagName":88,"properties":2445,"children":2447,"position":2457},{"id":2446},"be-honest-about-warm-up",[2448],{"type":26,"value":2449,"position":2450},"Be honest about warm-up",{"start":2451,"end":2454},{"line":2452,"column":38,"offset":2453},87,5115,{"line":2452,"column":2455,"offset":2456},28,5138,{"start":2458,"end":2460},{"line":2452,"column":20,"offset":2459},5111,{"line":2452,"column":2455,"offset":2456},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2463,"children":2464,"position":2607},{},[2465,2473,2485,2491,2503,2509,2521,2528,2540,2547,2563,2570,2582,2589,2601],{"type":26,"value":2466,"position":2467},"A window that is not full has no value, and the honest outputs are ",{"start":2468,"end":2471},{"line":2469,"column":20,"offset":2470},89,5140,{"line":2469,"column":116,"offset":2472},5207,{"type":30,"tagName":44,"properties":2474,"children":2475,"position":2482},{},[2476],{"type":26,"value":2477,"position":2478},"NaN",{"start":2479,"end":2480},{"line":2469,"column":116,"offset":2472},{"line":2469,"column":1844,"offset":2481},5212,{"start":2483,"end":2484},{"line":2469,"column":116,"offset":2472},{"line":2469,"column":1844,"offset":2481},{"type":26,"value":2486,"position":2487}," or no row at all. Two policies, both correct: return ",{"start":2488,"end":2489},{"line":2469,"column":1844,"offset":2481},{"line":2469,"column":1873,"offset":2490},5266,{"type":30,"tagName":44,"properties":2492,"children":2493,"position":2500},{},[2494],{"type":26,"value":599,"position":2495},{"start":2496,"end":2497},{"line":2469,"column":1873,"offset":2490},{"line":2469,"column":2498,"offset":2499},130,5269,{"start":2501,"end":2502},{"line":2469,"column":1873,"offset":2490},{"line":2469,"column":2498,"offset":2499},{"type":26,"value":2504,"position":2505}," from ",{"start":2506,"end":2507},{"line":2469,"column":2498,"offset":2499},{"line":2469,"column":1882,"offset":2508},5275,{"type":30,"tagName":44,"properties":2510,"children":2511,"position":2518},{},[2512],{"type":26,"value":294,"position":2513},{"start":2514,"end":2515},{"line":2469,"column":1882,"offset":2508},{"line":2469,"column":2516,"offset":2517},145,5284,{"start":2519,"end":2520},{"line":2469,"column":1882,"offset":2508},{"line":2469,"column":2516,"offset":2517},{"type":26,"value":2522,"position":2523}," to abstain the whole row while nothing on it is meaningful, or write ",{"start":2524,"end":2525},{"line":2469,"column":2516,"offset":2517},{"line":2469,"column":2526,"offset":2527},215,5354,{"type":30,"tagName":44,"properties":2529,"children":2530,"position":2537},{},[2531],{"type":26,"value":2477,"position":2532},{"start":2533,"end":2534},{"line":2469,"column":2526,"offset":2527},{"line":2469,"column":2535,"offset":2536},220,5359,{"start":2538,"end":2539},{"line":2469,"column":2526,"offset":2527},{"line":2469,"column":2535,"offset":2536},{"type":26,"value":2541,"position":2542}," to the one output that is still warming while the others draw (",{"start":2543,"end":2544},{"line":2469,"column":2535,"offset":2536},{"line":2469,"column":2545,"offset":2546},284,5423,{"type":30,"tagName":452,"properties":2548,"children":2550,"position":2559},{"href":2549},"../core-concepts/execution-model.md",[2551],{"type":26,"value":2552,"position":2553},"Execution model",{"start":2554,"end":2557},{"line":2469,"column":2555,"offset":2556},285,5424,{"line":2469,"column":240,"offset":2558},5439,{"start":2560,"end":2561},{"line":2469,"column":2545,"offset":2546},{"line":2469,"column":250,"offset":2562},5477,{"type":26,"value":2564,"position":2565},"). What is never correct is a placeholder that draws as if it were true. In a hand-written sheet, ",{"start":2566,"end":2567},{"line":2469,"column":250,"offset":2562},{"line":2469,"column":2568,"offset":2569},436,5575,{"type":30,"tagName":44,"properties":2571,"children":2572,"position":2579},{},[2573],{"type":26,"value":2574,"position":2575},"warmup_bars",{"start":2576,"end":2577},{"line":2469,"column":2568,"offset":2569},{"line":2469,"column":1949,"offset":2578},5588,{"start":2580,"end":2581},{"line":2469,"column":2568,"offset":2569},{"line":2469,"column":1949,"offset":2578},{"type":26,"value":2583,"position":2584}," is the same honesty as a hint to consumers: set it to the real number of bars the module needs, not ",{"start":2585,"end":2586},{"line":2469,"column":1949,"offset":2578},{"line":2469,"column":2587,"offset":2588},550,5689,{"type":30,"tagName":44,"properties":2590,"children":2591,"position":2598},{},[2592],{"type":26,"value":2593,"position":2594},"1",{"start":2595,"end":2596},{"line":2469,"column":2587,"offset":2588},{"line":2469,"column":2186,"offset":2597},5692,{"start":2599,"end":2600},{"line":2469,"column":2587,"offset":2588},{"line":2469,"column":2186,"offset":2597},{"type":26,"value":265,"position":2602},{"start":2603,"end":2604},{"line":2469,"column":2186,"offset":2597},{"line":2469,"column":2605,"offset":2606},554,5693,{"start":2608,"end":2609},{"line":2469,"column":20,"offset":2470},{"line":2469,"column":2605,"offset":2606},{"type":26,"value":27},{"type":30,"tagName":88,"properties":2612,"children":2614,"position":2623},{"id":2613},"name-what-the-module-computes-not-how-it-is-drawn",[2615],{"type":26,"value":2616,"position":2617},"Name what the module computes, not how it is drawn",{"start":2618,"end":2621},{"line":2619,"column":38,"offset":2620},91,5699,{"line":2619,"column":313,"offset":2622},5749,{"start":2624,"end":2626},{"line":2619,"column":20,"offset":2625},5695,{"line":2619,"column":313,"offset":2622},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2629,"children":2630,"position":2753},{},[2631,2639,2650,2657,2669,2676,2689,2695,2708,2714,2727,2734,2747],{"type":26,"value":2632,"position":2633},"A decision is an output too. Emit ",{"start":2634,"end":2636},{"line":409,"column":20,"offset":2635},5751,{"line":409,"column":2637,"offset":2638},35,5785,{"type":30,"tagName":44,"properties":2640,"children":2641,"position":2647},{},[2642],{"type":26,"value":2593,"position":2643},{"start":2644,"end":2645},{"line":409,"column":2637,"offset":2638},{"line":409,"column":1752,"offset":2646},5788,{"start":2648,"end":2649},{"line":409,"column":2637,"offset":2638},{"line":409,"column":1752,"offset":2646},{"type":26,"value":2651,"position":2652}," or ",{"start":2653,"end":2654},{"line":409,"column":1752,"offset":2646},{"line":409,"column":2655,"offset":2656},42,5792,{"type":30,"tagName":44,"properties":2658,"children":2659,"position":2666},{},[2660],{"type":26,"value":599,"position":2661},{"start":2662,"end":2663},{"line":409,"column":2655,"offset":2656},{"line":409,"column":2664,"offset":2665},45,5795,{"start":2667,"end":2668},{"line":409,"column":2655,"offset":2656},{"line":409,"column":2664,"offset":2665},{"type":26,"value":2670,"position":2671}," from a data-only ",{"start":2672,"end":2673},{"line":409,"column":2664,"offset":2665},{"line":409,"column":2674,"offset":2675},63,5813,{"type":30,"tagName":44,"properties":2677,"children":2678,"position":2686},{},[2679],{"type":26,"value":2680,"position":2681},"none",{"start":2682,"end":2683},{"line":409,"column":2674,"offset":2675},{"line":409,"column":2684,"offset":2685},69,5819,{"start":2687,"end":2688},{"line":409,"column":2674,"offset":2675},{"line":409,"column":2684,"offset":2685},{"type":26,"value":2690,"position":2691}," output and let the sheet turn it into a look (",{"start":2692,"end":2693},{"line":409,"column":2684,"offset":2685},{"line":409,"column":41,"offset":2694},5866,{"type":30,"tagName":44,"properties":2696,"children":2697,"position":2705},{},[2698],{"type":26,"value":2699,"position":2700},"shape_where",{"start":2701,"end":2702},{"line":409,"column":41,"offset":2694},{"line":409,"column":2703,"offset":2704},129,5879,{"start":2706,"end":2707},{"line":409,"column":41,"offset":2694},{"line":409,"column":2703,"offset":2704},{"type":26,"value":226,"position":2709},{"start":2710,"end":2711},{"line":409,"column":2703,"offset":2704},{"line":409,"column":2712,"offset":2713},131,5881,{"type":30,"tagName":44,"properties":2715,"children":2716,"position":2724},{},[2717],{"type":26,"value":2718,"position":2719},"color_by",{"start":2720,"end":2721},{"line":409,"column":2712,"offset":2713},{"line":409,"column":2722,"offset":2723},141,5891,{"start":2725,"end":2726},{"line":409,"column":2712,"offset":2713},{"line":409,"column":2722,"offset":2723},{"type":26,"value":2728,"position":2729},", a box's ",{"start":2730,"end":2731},{"line":409,"column":2722,"offset":2723},{"line":409,"column":2732,"offset":2733},151,5901,{"type":30,"tagName":44,"properties":2735,"children":2736,"position":2744},{},[2737],{"type":26,"value":2738,"position":2739},"when",{"start":2740,"end":2741},{"line":409,"column":2732,"offset":2733},{"line":409,"column":2742,"offset":2743},157,5907,{"start":2745,"end":2746},{"line":409,"column":2732,"offset":2733},{"line":409,"column":2742,"offset":2743},{"type":26,"value":2748,"position":2749},"). That keeps the numeric surface reusable: the same gate that draws a mark is the metric a watch fires on.",{"start":2750,"end":2751},{"line":409,"column":2742,"offset":2743},{"line":409,"column":460,"offset":2752},6014,{"start":2754,"end":2755},{"line":409,"column":20,"offset":2635},{"line":409,"column":460,"offset":2752},{"type":26,"value":27},{"type":30,"tagName":68,"properties":2758,"children":2760,"position":2770},{"id":2759},"plotting-and-visualization",[2761],{"type":26,"value":2762,"position":2763},"Plotting and visualization",{"start":2764,"end":2767},{"line":2765,"column":77,"offset":2766},95,6019,{"line":2765,"column":2768,"offset":2769},30,6045,{"start":2771,"end":2773},{"line":2765,"column":20,"offset":2772},6016,{"line":2765,"column":2768,"offset":2769},{"type":26,"value":27},{"type":30,"tagName":88,"properties":2776,"children":2778,"position":2786},{"id":2777},"describe-every-declaration",[2779],{"type":26,"value":2780,"position":2781},"Describe every declaration",{"start":2782,"end":2784},{"line":2107,"column":38,"offset":2783},6051,{"line":2107,"column":2325,"offset":2785},6077,{"start":2787,"end":2789},{"line":2107,"column":20,"offset":2788},6047,{"line":2107,"column":2325,"offset":2785},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2792,"children":2793,"position":2891},{},[2794,2808,2815,2828,2835,2848,2854,2866,2872,2885],{"type":30,"tagName":44,"properties":2795,"children":2796,"position":2805},{},[2797],{"type":26,"value":2798,"position":2799},"description",{"start":2800,"end":2803},{"line":2801,"column":20,"offset":2802},99,6079,{"line":2801,"column":1847,"offset":2804},6092,{"start":2806,"end":2807},{"line":2801,"column":20,"offset":2802},{"line":2801,"column":1847,"offset":2804},{"type":26,"value":2809,"position":2810}," on a param is the settings dialog's label; on an input it is the sheet's documentation; on an output it is the legend and the metric catalog entry. Write them the way you would want to read them a month later: \"Bars of history that define normal volume\" beats \"lookback\". Give small-magnitude series (oscillators, percentages, counts) the ",{"start":2811,"end":2812},{"line":2801,"column":1847,"offset":2804},{"line":2801,"column":2813,"offset":2814},354,6432,{"type":30,"tagName":44,"properties":2816,"children":2817,"position":2825},{},[2818],{"type":26,"value":2819,"position":2820},"lower",{"start":2821,"end":2822},{"line":2801,"column":2813,"offset":2814},{"line":2801,"column":2823,"offset":2824},361,6439,{"start":2826,"end":2827},{"line":2801,"column":2813,"offset":2814},{"line":2801,"column":2823,"offset":2824},{"type":26,"value":2829,"position":2830}," panel and a ",{"start":2831,"end":2832},{"line":2801,"column":2823,"offset":2824},{"line":2801,"column":2833,"offset":2834},374,6452,{"type":30,"tagName":44,"properties":2836,"children":2837,"position":2845},{},[2838],{"type":26,"value":2839,"position":2840},"unit",{"start":2841,"end":2842},{"line":2801,"column":2833,"offset":2834},{"line":2801,"column":2843,"offset":2844},380,6458,{"start":2846,"end":2847},{"line":2801,"column":2833,"offset":2834},{"line":2801,"column":2843,"offset":2844},{"type":26,"value":1267,"position":2849},{"start":2850,"end":2851},{"line":2801,"column":2843,"offset":2844},{"line":2801,"column":2852,"offset":2853},382,6460,{"type":30,"tagName":44,"properties":2855,"children":2856,"position":2863},{},[2857],{"type":26,"value":1395,"position":2858},{"start":2859,"end":2860},{"line":2801,"column":2852,"offset":2853},{"line":2801,"column":2861,"offset":2862},385,6463,{"start":2864,"end":2865},{"line":2801,"column":2852,"offset":2853},{"line":2801,"column":2861,"offset":2862},{"type":26,"value":226,"position":2867},{"start":2868,"end":2869},{"line":2801,"column":2861,"offset":2862},{"line":2801,"column":2870,"offset":2871},387,6465,{"type":30,"tagName":44,"properties":2873,"children":2874,"position":2882},{},[2875],{"type":26,"value":2876,"position":2877},"price",{"start":2878,"end":2879},{"line":2801,"column":2870,"offset":2871},{"line":2801,"column":2880,"offset":2881},394,6472,{"start":2883,"end":2884},{"line":2801,"column":2870,"offset":2871},{"line":2801,"column":2880,"offset":2881},{"type":26,"value":2886,"position":2887},", or a short label) so the axis formats itself.",{"start":2888,"end":2889},{"line":2801,"column":2880,"offset":2881},{"line":2801,"column":103,"offset":2890},6519,{"start":2892,"end":2893},{"line":2801,"column":20,"offset":2802},{"line":2801,"column":103,"offset":2890},{"type":26,"value":27},{"type":30,"tagName":88,"properties":2896,"children":2898,"position":2908},{"id":2897},"one-namespace-for-shape-names",[2899],{"type":26,"value":2900,"position":2901},"One namespace for shape names",{"start":2902,"end":2905},{"line":2903,"column":38,"offset":2904},101,6525,{"line":2903,"column":2906,"offset":2907},34,6554,{"start":2909,"end":2911},{"line":2903,"column":20,"offset":2910},6521,{"line":2903,"column":2906,"offset":2907},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2914,"children":2915,"position":3060},{},[2916,2925,2937,2944,2956,2963,2976,2983,2996,3002,3015,3022,3035,3041,3054],{"type":26,"value":2917,"position":2918},"Outputs, boxes, segments, renderers, and drawings share one namespace. A box named ",{"start":2919,"end":2922},{"line":2920,"column":20,"offset":2921},103,6556,{"line":2920,"column":2923,"offset":2924},84,6639,{"type":30,"tagName":44,"properties":2926,"children":2927,"position":2934},{},[2928],{"type":26,"value":2929,"position":2930},"range",{"start":2931,"end":2932},{"line":2920,"column":2923,"offset":2924},{"line":2920,"column":2619,"offset":2933},6646,{"start":2935,"end":2936},{"line":2920,"column":2923,"offset":2924},{"line":2920,"column":2619,"offset":2933},{"type":26,"value":2938,"position":2939}," beside an output named ",{"start":2940,"end":2941},{"line":2920,"column":2619,"offset":2933},{"line":2920,"column":2942,"offset":2943},115,6670,{"type":30,"tagName":44,"properties":2945,"children":2946,"position":2953},{},[2947],{"type":26,"value":2929,"position":2948},{"start":2949,"end":2950},{"line":2920,"column":2942,"offset":2943},{"line":2920,"column":2951,"offset":2952},122,6677,{"start":2954,"end":2955},{"line":2920,"column":2942,"offset":2943},{"line":2920,"column":2951,"offset":2952},{"type":26,"value":2957,"position":2958}," is refused at the sheet (",{"start":2959,"end":2960},{"line":2920,"column":2951,"offset":2952},{"line":2920,"column":2961,"offset":2962},148,6703,{"type":30,"tagName":44,"properties":2964,"children":2965,"position":2973},{},[2966],{"type":26,"value":2967,"position":2968},"box name 'range' is already taken by an output",{"start":2969,"end":2970},{"line":2920,"column":2961,"offset":2962},{"line":2920,"column":2971,"offset":2972},196,6751,{"start":2974,"end":2975},{"line":2920,"column":2961,"offset":2962},{"line":2920,"column":2971,"offset":2972},{"type":26,"value":2977,"position":2978},"). Name shapes for what they draw (",{"start":2979,"end":2980},{"line":2920,"column":2971,"offset":2972},{"line":2920,"column":2981,"offset":2982},231,6786,{"type":30,"tagName":44,"properties":2984,"children":2985,"position":2993},{},[2986],{"type":26,"value":2987,"position":2988},"demand_zone",{"start":2989,"end":2990},{"line":2920,"column":2981,"offset":2982},{"line":2920,"column":2991,"offset":2992},244,6799,{"start":2994,"end":2995},{"line":2920,"column":2981,"offset":2982},{"line":2920,"column":2991,"offset":2992},{"type":26,"value":226,"position":2997},{"start":2998,"end":2999},{"line":2920,"column":2991,"offset":2992},{"line":2920,"column":3000,"offset":3001},246,6801,{"type":30,"tagName":44,"properties":3003,"children":3004,"position":3012},{},[3005],{"type":26,"value":3006,"position":3007},"pdh_line",{"start":3008,"end":3009},{"line":2920,"column":3000,"offset":3001},{"line":2920,"column":3010,"offset":3011},256,6811,{"start":3013,"end":3014},{"line":2920,"column":3000,"offset":3001},{"line":2920,"column":3010,"offset":3011},{"type":26,"value":3016,"position":3017},") and outputs for what they compute (",{"start":3018,"end":3019},{"line":2920,"column":3010,"offset":3011},{"line":2920,"column":3020,"offset":3021},293,6848,{"type":30,"tagName":44,"properties":3023,"children":3024,"position":3032},{},[3025],{"type":26,"value":3026,"position":3027},"demand_top",{"start":3028,"end":3029},{"line":2920,"column":3020,"offset":3021},{"line":2920,"column":3030,"offset":3031},305,6860,{"start":3033,"end":3034},{"line":2920,"column":3020,"offset":3021},{"line":2920,"column":3030,"offset":3031},{"type":26,"value":226,"position":3036},{"start":3037,"end":3038},{"line":2920,"column":3030,"offset":3031},{"line":2920,"column":3039,"offset":3040},307,6862,{"type":30,"tagName":44,"properties":3042,"children":3043,"position":3051},{},[3044],{"type":26,"value":3045,"position":3046},"pdh",{"start":3047,"end":3048},{"line":2920,"column":3039,"offset":3040},{"line":2920,"column":3049,"offset":3050},312,6867,{"start":3052,"end":3053},{"line":2920,"column":3039,"offset":3040},{"line":2920,"column":3049,"offset":3050},{"type":26,"value":2253,"position":3055},{"start":3056,"end":3057},{"line":2920,"column":3049,"offset":3050},{"line":2920,"column":3058,"offset":3059},314,6869,{"start":3061,"end":3062},{"line":2920,"column":20,"offset":2921},{"line":2920,"column":3058,"offset":3059},{"type":26,"value":27},{"type":30,"tagName":68,"properties":3065,"children":3067,"position":3076},{"id":3066},"debugging",[3068],{"type":26,"value":3069,"position":3070},"Debugging",{"start":3071,"end":3074},{"line":3072,"column":77,"offset":3073},105,6874,{"line":3072,"column":133,"offset":3075},6883,{"start":3077,"end":3079},{"line":3072,"column":20,"offset":3078},6871,{"line":3072,"column":133,"offset":3075},{"type":26,"value":27},{"type":30,"tagName":88,"properties":3082,"children":3084,"position":3093},{"id":3083},"probe-with-an-output",[3085],{"type":26,"value":3086,"position":3087},"Probe with an output",{"start":3088,"end":3091},{"line":3089,"column":38,"offset":3090},107,6889,{"line":3089,"column":500,"offset":3092},6909,{"start":3094,"end":3096},{"line":3089,"column":20,"offset":3095},6885,{"line":3089,"column":500,"offset":3092},{"type":26,"value":27},{"type":30,"tagName":31,"properties":3099,"children":3100,"position":3205},{},[3101,3109,3122,3128,3139,3145,3157,3164,3175,3181,3198],{"type":26,"value":3102,"position":3103},"There is no ",{"start":3104,"end":3107},{"line":3105,"column":20,"offset":3106},109,6911,{"line":3105,"column":133,"offset":3108},6923,{"type":30,"tagName":44,"properties":3110,"children":3111,"position":3119},{},[3112],{"type":26,"value":3113,"position":3114},"print()",{"start":3115,"end":3116},{"line":3105,"column":133,"offset":3108},{"line":3105,"column":3117,"offset":3118},22,6932,{"start":3120,"end":3121},{"line":3105,"column":133,"offset":3108},{"line":3105,"column":3117,"offset":3118},{"type":26,"value":3123,"position":3124},". The debugger is an output: declare the suspect intermediate as ",{"start":3125,"end":3126},{"line":3105,"column":3117,"offset":3118},{"line":3105,"column":2452,"offset":3127},6997,{"type":30,"tagName":44,"properties":3129,"children":3130,"position":3136},{},[3131],{"type":26,"value":2680,"position":3132},{"start":3133,"end":3134},{"line":3105,"column":2452,"offset":3127},{"line":3105,"column":409,"offset":3135},7003,{"start":3137,"end":3138},{"line":3105,"column":2452,"offset":3127},{"line":3105,"column":409,"offset":3135},{"type":26,"value":3140,"position":3141}," (readable in the legend and through ",{"start":3142,"end":3143},{"line":3105,"column":409,"offset":3135},{"line":3105,"column":2498,"offset":3144},7040,{"type":30,"tagName":44,"properties":3146,"children":3147,"position":3154},{},[3148],{"type":26,"value":3149,"position":3150},"om metric series",{"start":3151,"end":3152},{"line":3105,"column":2498,"offset":3144},{"line":3105,"column":2961,"offset":3153},7058,{"start":3155,"end":3156},{"line":3105,"column":2498,"offset":3144},{"line":3105,"column":2961,"offset":3153},{"type":26,"value":3158,"position":3159},", never drawn) or as a ",{"start":3160,"end":3161},{"line":3105,"column":2961,"offset":3153},{"line":3105,"column":3162,"offset":3163},171,7081,{"type":30,"tagName":44,"properties":3165,"children":3166,"position":3172},{},[3167],{"type":26,"value":2819,"position":3168},{"start":3169,"end":3170},{"line":3105,"column":3162,"offset":3163},{"line":3105,"column":2391,"offset":3171},7088,{"start":3173,"end":3174},{"line":3105,"column":3162,"offset":3163},{"line":3105,"column":2391,"offset":3171},{"type":26,"value":3176,"position":3177}," line to see its shape across every bar, then delete the declaration when you are done. ",{"start":3178,"end":3179},{"line":3105,"column":2391,"offset":3171},{"line":3105,"column":548,"offset":3180},7176,{"type":30,"tagName":452,"properties":3182,"children":3184,"position":3193},{"href":3183},"debugging.md",[3185],{"type":26,"value":3069,"position":3186},{"start":3187,"end":3190},{"line":3105,"column":3188,"offset":3189},267,7177,{"line":3105,"column":3191,"offset":3192},276,7186,{"start":3194,"end":3195},{"line":3105,"column":548,"offset":3180},{"line":3105,"column":3196,"offset":3197},291,7201,{"type":26,"value":3199,"position":3200}," is the full workflow.",{"start":3201,"end":3202},{"line":3105,"column":3196,"offset":3197},{"line":3105,"column":3203,"offset":3204},313,7223,{"start":3206,"end":3207},{"line":3105,"column":20,"offset":3106},{"line":3105,"column":3203,"offset":3204},{"type":26,"value":27},{"type":30,"tagName":68,"properties":3210,"children":3212,"position":3221},{"id":3211},"error-prevention",[3213],{"type":26,"value":3214,"position":3215},"Error prevention",{"start":3216,"end":3218},{"line":190,"column":77,"offset":3217},7228,{"line":190,"column":3219,"offset":3220},20,7244,{"start":3222,"end":3224},{"line":190,"column":20,"offset":3223},7225,{"line":190,"column":3219,"offset":3220},{"type":26,"value":27},{"type":30,"tagName":88,"properties":3227,"children":3229,"position":3238},{"id":3228},"nan-checks-and-safe-division",[3230],{"type":26,"value":3231,"position":3232},"NaN checks and safe division",{"start":3233,"end":3236},{"line":3234,"column":38,"offset":3235},113,7250,{"line":3234,"column":2044,"offset":3237},7278,{"start":3239,"end":3241},{"line":3234,"column":20,"offset":3240},7246,{"line":3234,"column":2044,"offset":3237},{"type":26,"value":27},{"type":30,"tagName":31,"properties":3244,"children":3245,"position":3357},{},[3246,3259,3266,3278,3284,3296,3302,3314,3319,3332,3338,3351],{"type":30,"tagName":44,"properties":3247,"children":3248,"position":3256},{},[3249],{"type":26,"value":2477,"position":3250},{"start":3251,"end":3253},{"line":2942,"column":20,"offset":3252},7280,{"line":2942,"column":3254,"offset":3255},6,7285,{"start":3257,"end":3258},{"line":2942,"column":20,"offset":3252},{"line":2942,"column":3254,"offset":3255},{"type":26,"value":3260,"position":3261}," is the only \"nothing here\" value, and it propagates: ",{"start":3262,"end":3263},{"line":2942,"column":3254,"offset":3255},{"line":2942,"column":3264,"offset":3265},60,7339,{"type":30,"tagName":44,"properties":3267,"children":3268,"position":3275},{},[3269],{"type":26,"value":3270,"position":3271},"NaN + 1",{"start":3272,"end":3273},{"line":2942,"column":3264,"offset":3265},{"line":2942,"column":2684,"offset":3274},7348,{"start":3276,"end":3277},{"line":2942,"column":3264,"offset":3265},{"line":2942,"column":2684,"offset":3274},{"type":26,"value":3279,"position":3280}," is ",{"start":3281,"end":3282},{"line":2942,"column":2684,"offset":3274},{"line":2942,"column":1844,"offset":3283},7352,{"type":30,"tagName":44,"properties":3285,"children":3286,"position":3293},{},[3287],{"type":26,"value":2477,"position":3288},{"start":3289,"end":3290},{"line":2942,"column":1844,"offset":3283},{"line":2942,"column":3291,"offset":3292},78,7357,{"start":3294,"end":3295},{"line":2942,"column":1844,"offset":3283},{"line":2942,"column":3291,"offset":3292},{"type":26,"value":3297,"position":3298},", and ",{"start":3299,"end":3300},{"line":2942,"column":3291,"offset":3292},{"line":2942,"column":2923,"offset":3301},7363,{"type":30,"tagName":44,"properties":3303,"children":3304,"position":3311},{},[3305],{"type":26,"value":3306,"position":3307},"NaN > 0",{"start":3308,"end":3309},{"line":2942,"column":2923,"offset":3301},{"line":2942,"column":409,"offset":3310},7372,{"start":3312,"end":3313},{"line":2942,"column":2923,"offset":3301},{"line":2942,"column":409,"offset":3310},{"type":26,"value":3279,"position":3315},{"start":3316,"end":3317},{"line":2942,"column":409,"offset":3310},{"line":2942,"column":2107,"offset":3318},7376,{"type":30,"tagName":44,"properties":3320,"children":3321,"position":3329},{},[3322],{"type":26,"value":3323,"position":3324},"false",{"start":3325,"end":3326},{"line":2942,"column":2107,"offset":3318},{"line":2942,"column":3327,"offset":3328},104,7383,{"start":3330,"end":3331},{"line":2942,"column":2107,"offset":3318},{"line":2942,"column":3327,"offset":3328},{"type":26,"value":3333,"position":3334},". Test with ",{"start":3335,"end":3336},{"line":2942,"column":3327,"offset":3328},{"line":2942,"column":41,"offset":3337},7395,{"type":30,"tagName":44,"properties":3339,"children":3340,"position":3348},{},[3341],{"type":26,"value":3342,"position":3343},"isNaN(x)",{"start":3344,"end":3345},{"line":2942,"column":41,"offset":3337},{"line":2942,"column":3346,"offset":3347},126,7405,{"start":3349,"end":3350},{"line":2942,"column":41,"offset":3337},{"line":2942,"column":3346,"offset":3347},{"type":26,"value":3352,"position":3353}," before a comparison that decides something, and guard every division by a value that can be zero. The two helpers most ports need are two lines each:",{"start":3354,"end":3355},{"line":2942,"column":3346,"offset":3347},{"line":2942,"column":3191,"offset":3356},7555,{"start":3358,"end":3359},{"line":2942,"column":20,"offset":3252},{"line":2942,"column":3191,"offset":3356},{"type":26,"value":27},{"type":13,"children":3362},[3363],{"type":30,"tagName":595,"properties":3364,"children":3365,"data":-1},{"class":597,"style":598,"tabindex":599},[3366],{"type":30,"tagName":44,"properties":3367,"children":3368},{},[3369,3392,3393,3417,3418,3442,3443,3467,3468,3493,3494,3497,3498,3544,3545,3564,3565,3586,3587,3617,3618,3647,3648,3651,3652,3660,3661,3726,3727,3763,3764,3771,3772,3775,3776,3784,3785,3847,3848,3912,3913,3920,3921,3924,3925,3962,3963,3999,4000,4032,4033,4065,4066,4069,4070,4101,4102,4144,4145,4185,4186,4193,4194,4197,4198,4229,4230,4255,4256,4305,4306,4314,4315,4353,4354,4389,4390,4405,4406,4413,4414,4417,4418,4449,4450,4463,4464,4477,4478,4489,4490,4497,4498,4501,4502,4533,4534,4551,4552,4568,4569,4588,4589,4609,4610],{"type":30,"tagName":605,"properties":3370,"children":3371},{"class":607},[3372,3376,3380,3384,3388],{"type":30,"tagName":605,"properties":3373,"children":3374},{"style":611},[3375],{"type":26,"value":614},{"type":30,"tagName":605,"properties":3377,"children":3378},{"style":617},[3379],{"type":26,"value":620},{"type":30,"tagName":605,"properties":3381,"children":3382},{"style":611},[3383],{"type":26,"value":625},{"type":30,"tagName":605,"properties":3385,"children":3386},{"style":628},[3387],{"type":26,"value":631},{"type":30,"tagName":605,"properties":3389,"children":3390},{"style":617},[3391],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3394,"children":3395},{"class":607},[3396,3400,3405,3409,3413],{"type":30,"tagName":605,"properties":3397,"children":3398},{"style":611},[3399],{"type":26,"value":614},{"type":30,"tagName":605,"properties":3401,"children":3402},{"style":617},[3403],{"type":26,"value":3404}," { in_close, in_volume } ",{"type":30,"tagName":605,"properties":3406,"children":3407},{"style":611},[3408],{"type":26,"value":625},{"type":30,"tagName":605,"properties":3410,"children":3411},{"style":628},[3412],{"type":26,"value":658},{"type":30,"tagName":605,"properties":3414,"children":3415},{"style":617},[3416],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3419,"children":3420},{"class":607},[3421,3425,3430,3434,3438],{"type":30,"tagName":605,"properties":3422,"children":3423},{"style":611},[3424],{"type":26,"value":614},{"type":30,"tagName":605,"properties":3426,"children":3427},{"style":617},[3428],{"type":26,"value":3429}," { emitRow, out_ratio, out_smooth } ",{"type":30,"tagName":605,"properties":3431,"children":3432},{"style":611},[3433],{"type":26,"value":625},{"type":30,"tagName":605,"properties":3435,"children":3436},{"style":628},[3437],{"type":26,"value":684},{"type":30,"tagName":605,"properties":3439,"children":3440},{"style":617},[3441],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3444,"children":3445},{"class":607},[3446,3450,3455,3459,3463],{"type":30,"tagName":605,"properties":3447,"children":3448},{"style":611},[3449],{"type":26,"value":614},{"type":30,"tagName":605,"properties":3451,"children":3452},{"style":617},[3453],{"type":26,"value":3454}," { p_len } ",{"type":30,"tagName":605,"properties":3456,"children":3457},{"style":611},[3458],{"type":26,"value":625},{"type":30,"tagName":605,"properties":3460,"children":3461},{"style":628},[3462],{"type":26,"value":710},{"type":30,"tagName":605,"properties":3464,"children":3465},{"style":617},[3466],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3469,"children":3470},{"class":607},[3471,3475,3480,3484,3489],{"type":30,"tagName":605,"properties":3472,"children":3473},{"style":611},[3474],{"type":26,"value":614},{"type":30,"tagName":605,"properties":3476,"children":3477},{"style":617},[3478],{"type":26,"value":3479}," { Sma } ",{"type":30,"tagName":605,"properties":3481,"children":3482},{"style":611},[3483],{"type":26,"value":625},{"type":30,"tagName":605,"properties":3485,"children":3486},{"style":628},[3487],{"type":26,"value":3488}," \"./sdk/ta\"",{"type":30,"tagName":605,"properties":3490,"children":3491},{"style":617},[3492],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3495,"children":3496},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":3499,"children":3500},{"class":607},[3501,3505,3509,3514,3518,3523,3527,3531,3535,3540],{"type":30,"tagName":605,"properties":3502,"children":3503},{"style":725},[3504],{"type":26,"value":728},{"type":30,"tagName":605,"properties":3506,"children":3507},{"style":617},[3508],{"type":26,"value":733},{"type":30,"tagName":605,"properties":3510,"children":3511},{"style":628},[3512],{"type":26,"value":3513},"\"len\"",{"type":30,"tagName":605,"properties":3515,"children":3516},{"style":617},[3517],{"type":26,"value":226},{"type":30,"tagName":605,"properties":3519,"children":3520},{"style":745},[3521],{"type":26,"value":3522},"20",{"type":30,"tagName":605,"properties":3524,"children":3525},{"style":617},[3526],{"type":26,"value":753},{"type":30,"tagName":605,"properties":3528,"children":3529},{"style":745},[3530],{"type":26,"value":2593},{"type":30,"tagName":605,"properties":3532,"children":3533},{"style":617},[3534],{"type":26,"value":763},{"type":30,"tagName":605,"properties":3536,"children":3537},{"style":745},[3538],{"type":26,"value":3539},"200",{"type":30,"tagName":605,"properties":3541,"children":3542},{"style":617},[3543],{"type":26,"value":783},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3546,"children":3547},{"class":607},[3548,3552,3556,3560],{"type":30,"tagName":605,"properties":3549,"children":3550},{"style":725},[3551],{"type":26,"value":792},{"type":30,"tagName":605,"properties":3553,"children":3554},{"style":617},[3555],{"type":26,"value":733},{"type":30,"tagName":605,"properties":3557,"children":3558},{"style":628},[3559],{"type":26,"value":801},{"type":30,"tagName":605,"properties":3561,"children":3562},{"style":617},[3563],{"type":26,"value":806},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3566,"children":3567},{"class":607},[3568,3572,3576,3581],{"type":30,"tagName":605,"properties":3569,"children":3570},{"style":725},[3571],{"type":26,"value":792},{"type":30,"tagName":605,"properties":3573,"children":3574},{"style":617},[3575],{"type":26,"value":733},{"type":30,"tagName":605,"properties":3577,"children":3578},{"style":628},[3579],{"type":26,"value":3580},"\"volume\"",{"type":30,"tagName":605,"properties":3582,"children":3583},{"style":617},[3584],{"type":26,"value":3585},", ohlcv.volume);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":3588,"children":3589},{"class":607},[3590,3594,3598,3603,3608,3613],{"type":30,"tagName":605,"properties":3591,"children":3592},{"style":725},[3593],{"type":26,"value":815},{"type":30,"tagName":605,"properties":3595,"children":3596},{"style":617},[3597],{"type":26,"value":733},{"type":30,"tagName":605,"properties":3599,"children":3600},{"style":628},[3601],{"type":26,"value":3602},"\"ratio\"",{"type":30,"tagName":605,"properties":3604,"children":3605},{"style":617},[3606],{"type":26,"value":3607},", line, lower, { description: ",{"type":30,"tagName":605,"properties":3609,"children":3610},{"style":628},[3611],{"type":26,"value":3612},"\"Volume over its average, 0 while the average warms\"",{"type":30,"tagName":605,"properties":3614,"children":3615},{"style":617},[3616],{"type":26,"value":783},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3619,"children":3620},{"class":607},[3621,3625,3629,3634,3638,3643],{"type":30,"tagName":605,"properties":3622,"children":3623},{"style":725},[3624],{"type":26,"value":815},{"type":30,"tagName":605,"properties":3626,"children":3627},{"style":617},[3628],{"type":26,"value":733},{"type":30,"tagName":605,"properties":3630,"children":3631},{"style":628},[3632],{"type":26,"value":3633},"\"smooth\"",{"type":30,"tagName":605,"properties":3635,"children":3636},{"style":617},[3637],{"type":26,"value":3607},{"type":30,"tagName":605,"properties":3639,"children":3640},{"style":628},[3641],{"type":26,"value":3642},"\"Close average, last good value carried across gaps\"",{"type":30,"tagName":605,"properties":3644,"children":3645},{"style":617},[3646],{"type":26,"value":783},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3649,"children":3650},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":3653,"children":3654},{"class":607},[3655],{"type":30,"tagName":605,"properties":3656,"children":3657},{"style":858},[3658],{"type":26,"value":3659},"// nz: a number, or the fallback when it is NaN.",{"type":26,"value":27},{"type":30,"tagName":605,"properties":3662,"children":3663},{"class":607},[3664,3669,3674,3678,3684,3688,3692,3696,3701,3705,3709,3714,3718,3722],{"type":30,"tagName":605,"properties":3665,"children":3666},{"style":611},[3667],{"type":26,"value":3668},"function",{"type":30,"tagName":605,"properties":3670,"children":3671},{"style":725},[3672],{"type":26,"value":3673}," nz",{"type":30,"tagName":605,"properties":3675,"children":3676},{"style":617},[3677],{"type":26,"value":733},{"type":30,"tagName":605,"properties":3679,"children":3681},{"style":3680},"--shiki-dark:#FFAB70;--shiki-light:#E36209",[3682],{"type":26,"value":3683},"value",{"type":30,"tagName":605,"properties":3685,"children":3686},{"style":611},[3687],{"type":26,"value":959},{"type":30,"tagName":605,"properties":3689,"children":3690},{"style":725},[3691],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":3693,"children":3694},{"style":617},[3695],{"type":26,"value":226},{"type":30,"tagName":605,"properties":3697,"children":3698},{"style":3680},[3699],{"type":26,"value":3700},"fallback",{"type":30,"tagName":605,"properties":3702,"children":3703},{"style":611},[3704],{"type":26,"value":959},{"type":30,"tagName":605,"properties":3706,"children":3707},{"style":725},[3708],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":3710,"children":3711},{"style":617},[3712],{"type":26,"value":3713},")",{"type":30,"tagName":605,"properties":3715,"children":3716},{"style":611},[3717],{"type":26,"value":959},{"type":30,"tagName":605,"properties":3719,"children":3720},{"style":725},[3721],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":3723,"children":3724},{"style":617},[3725],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3728,"children":3729},{"class":607},[3730,3734,3739,3744,3749,3754,3758],{"type":30,"tagName":605,"properties":3731,"children":3732},{"style":611},[3733],{"type":26,"value":1528},{"type":30,"tagName":605,"properties":3735,"children":3736},{"style":725},[3737],{"type":26,"value":3738}," isNaN",{"type":30,"tagName":605,"properties":3740,"children":3741},{"style":617},[3742],{"type":26,"value":3743},"(value) ",{"type":30,"tagName":605,"properties":3745,"children":3746},{"style":611},[3747],{"type":26,"value":3748},"?",{"type":30,"tagName":605,"properties":3750,"children":3751},{"style":617},[3752],{"type":26,"value":3753}," fallback ",{"type":30,"tagName":605,"properties":3755,"children":3756},{"style":611},[3757],{"type":26,"value":959},{"type":30,"tagName":605,"properties":3759,"children":3760},{"style":617},[3761],{"type":26,"value":3762}," value;",{"type":26,"value":27},{"type":30,"tagName":605,"properties":3765,"children":3766},{"class":607},[3767],{"type":30,"tagName":605,"properties":3768,"children":3769},{"style":617},[3770],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3773,"children":3774},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":3777,"children":3778},{"class":607},[3779],{"type":30,"tagName":605,"properties":3780,"children":3781},{"style":858},[3782],{"type":26,"value":3783},"// Division that refuses to blow up: NaN when the denominator is zero or missing.",{"type":26,"value":27},{"type":30,"tagName":605,"properties":3786,"children":3787},{"class":607},[3788,3792,3797,3801,3806,3810,3814,3818,3823,3827,3831,3835,3839,3843],{"type":30,"tagName":605,"properties":3789,"children":3790},{"style":611},[3791],{"type":26,"value":3668},{"type":30,"tagName":605,"properties":3793,"children":3794},{"style":725},[3795],{"type":26,"value":3796}," safeDiv",{"type":30,"tagName":605,"properties":3798,"children":3799},{"style":617},[3800],{"type":26,"value":733},{"type":30,"tagName":605,"properties":3802,"children":3803},{"style":3680},[3804],{"type":26,"value":3805},"numerator",{"type":30,"tagName":605,"properties":3807,"children":3808},{"style":611},[3809],{"type":26,"value":959},{"type":30,"tagName":605,"properties":3811,"children":3812},{"style":725},[3813],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":3815,"children":3816},{"style":617},[3817],{"type":26,"value":226},{"type":30,"tagName":605,"properties":3819,"children":3820},{"style":3680},[3821],{"type":26,"value":3822},"denominator",{"type":30,"tagName":605,"properties":3824,"children":3825},{"style":611},[3826],{"type":26,"value":959},{"type":30,"tagName":605,"properties":3828,"children":3829},{"style":725},[3830],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":3832,"children":3833},{"style":617},[3834],{"type":26,"value":3713},{"type":30,"tagName":605,"properties":3836,"children":3837},{"style":611},[3838],{"type":26,"value":959},{"type":30,"tagName":605,"properties":3840,"children":3841},{"style":725},[3842],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":3844,"children":3845},{"style":617},[3846],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3849,"children":3850},{"class":607},[3851,3855,3859,3864,3869,3874,3879,3884,3889,3893,3898,3903,3907],{"type":30,"tagName":605,"properties":3852,"children":3853},{"style":611},[3854],{"type":26,"value":1528},{"type":30,"tagName":605,"properties":3856,"children":3857},{"style":725},[3858],{"type":26,"value":3738},{"type":30,"tagName":605,"properties":3860,"children":3861},{"style":617},[3862],{"type":26,"value":3863},"(denominator) ",{"type":30,"tagName":605,"properties":3865,"children":3866},{"style":611},[3867],{"type":26,"value":3868},"||",{"type":30,"tagName":605,"properties":3870,"children":3871},{"style":617},[3872],{"type":26,"value":3873}," denominator ",{"type":30,"tagName":605,"properties":3875,"children":3876},{"style":611},[3877],{"type":26,"value":3878},"==",{"type":30,"tagName":605,"properties":3880,"children":3881},{"style":745},[3882],{"type":26,"value":3883}," 0.0",{"type":30,"tagName":605,"properties":3885,"children":3886},{"style":611},[3887],{"type":26,"value":3888}," ?",{"type":30,"tagName":605,"properties":3890,"children":3891},{"style":745},[3892],{"type":26,"value":1075},{"type":30,"tagName":605,"properties":3894,"children":3895},{"style":611},[3896],{"type":26,"value":3897}," :",{"type":30,"tagName":605,"properties":3899,"children":3900},{"style":617},[3901],{"type":26,"value":3902}," numerator ",{"type":30,"tagName":605,"properties":3904,"children":3905},{"style":611},[3906],{"type":26,"value":1510},{"type":30,"tagName":605,"properties":3908,"children":3909},{"style":617},[3910],{"type":26,"value":3911}," denominator;",{"type":26,"value":27},{"type":30,"tagName":605,"properties":3914,"children":3915},{"class":607},[3916],{"type":30,"tagName":605,"properties":3917,"children":3918},{"style":617},[3919],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3922,"children":3923},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":3926,"children":3927},{"class":607},[3928,3932,3937,3941,3945,3950,3954,3958],{"type":30,"tagName":605,"properties":3929,"children":3930},{"style":611},[3931],{"type":26,"value":143},{"type":30,"tagName":605,"properties":3933,"children":3934},{"style":617},[3935],{"type":26,"value":3936}," avgVolume ",{"type":30,"tagName":605,"properties":3938,"children":3939},{"style":611},[3940],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":3942,"children":3943},{"style":611},[3944],{"type":26,"value":911},{"type":30,"tagName":605,"properties":3946,"children":3947},{"style":725},[3948],{"type":26,"value":3949}," Sma",{"type":30,"tagName":605,"properties":3951,"children":3952},{"style":617},[3953],{"type":26,"value":733},{"type":30,"tagName":605,"properties":3955,"children":3956},{"style":745},[3957],{"type":26,"value":3522},{"type":30,"tagName":605,"properties":3959,"children":3960},{"style":617},[3961],{"type":26,"value":941},{"type":26,"value":27},{"type":30,"tagName":605,"properties":3964,"children":3965},{"class":607},[3966,3970,3975,3979,3983,3987,3991,3995],{"type":30,"tagName":605,"properties":3967,"children":3968},{"style":611},[3969],{"type":26,"value":143},{"type":30,"tagName":605,"properties":3971,"children":3972},{"style":617},[3973],{"type":26,"value":3974}," avgClose ",{"type":30,"tagName":605,"properties":3976,"children":3977},{"style":611},[3978],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":3980,"children":3981},{"style":611},[3982],{"type":26,"value":911},{"type":30,"tagName":605,"properties":3984,"children":3985},{"style":725},[3986],{"type":26,"value":3949},{"type":30,"tagName":605,"properties":3988,"children":3989},{"style":617},[3990],{"type":26,"value":733},{"type":30,"tagName":605,"properties":3992,"children":3993},{"style":745},[3994],{"type":26,"value":3522},{"type":30,"tagName":605,"properties":3996,"children":3997},{"style":617},[3998],{"type":26,"value":941},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4001,"children":4002},{"class":607},[4003,4007,4012,4016,4020,4024,4028],{"type":30,"tagName":605,"properties":4004,"children":4005},{"style":611},[4006],{"type":26,"value":143},{"type":30,"tagName":605,"properties":4008,"children":4009},{"style":617},[4010],{"type":26,"value":4011}," ratio",{"type":30,"tagName":605,"properties":4013,"children":4014},{"style":611},[4015],{"type":26,"value":959},{"type":30,"tagName":605,"properties":4017,"children":4018},{"style":725},[4019],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":4021,"children":4022},{"style":611},[4023],{"type":26,"value":880},{"type":30,"tagName":605,"properties":4025,"children":4026},{"style":745},[4027],{"type":26,"value":3883},{"type":30,"tagName":605,"properties":4029,"children":4030},{"style":617},[4031],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4034,"children":4035},{"class":607},[4036,4040,4045,4049,4053,4057,4061],{"type":30,"tagName":605,"properties":4037,"children":4038},{"style":611},[4039],{"type":26,"value":143},{"type":30,"tagName":605,"properties":4041,"children":4042},{"style":617},[4043],{"type":26,"value":4044}," lastGood",{"type":30,"tagName":605,"properties":4046,"children":4047},{"style":611},[4048],{"type":26,"value":959},{"type":30,"tagName":605,"properties":4050,"children":4051},{"style":725},[4052],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":4054,"children":4055},{"style":611},[4056],{"type":26,"value":880},{"type":30,"tagName":605,"properties":4058,"children":4059},{"style":745},[4060],{"type":26,"value":1075},{"type":30,"tagName":605,"properties":4062,"children":4063},{"style":617},[4064],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4067,"children":4068},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":4071,"children":4072},{"class":607},[4073,4077,4081,4085,4089,4093,4097],{"type":30,"tagName":605,"properties":4074,"children":4075},{"style":611},[4076],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":4078,"children":4079},{"style":611},[4080],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":4082,"children":4083},{"style":725},[4084],{"type":26,"value":1102},{"type":30,"tagName":605,"properties":4086,"children":4087},{"style":617},[4088],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":4090,"children":4091},{"style":611},[4092],{"type":26,"value":959},{"type":30,"tagName":605,"properties":4094,"children":4095},{"style":745},[4096],{"type":26,"value":1116},{"type":30,"tagName":605,"properties":4098,"children":4099},{"style":617},[4100],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4103,"children":4104},{"class":607},[4105,4110,4114,4118,4122,4126,4130,4134,4139],{"type":30,"tagName":605,"properties":4106,"children":4107},{"style":617},[4108],{"type":26,"value":4109},"  avgVolume ",{"type":30,"tagName":605,"properties":4111,"children":4112},{"style":611},[4113],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":4115,"children":4116},{"style":611},[4117],{"type":26,"value":911},{"type":30,"tagName":605,"properties":4119,"children":4120},{"style":725},[4121],{"type":26,"value":3949},{"type":30,"tagName":605,"properties":4123,"children":4124},{"style":617},[4125],{"type":26,"value":733},{"type":30,"tagName":605,"properties":4127,"children":4128},{"style":725},[4129],{"type":26,"value":2331},{"type":30,"tagName":605,"properties":4131,"children":4132},{"style":617},[4133],{"type":26,"value":733},{"type":30,"tagName":605,"properties":4135,"children":4136},{"style":725},[4137],{"type":26,"value":4138},"p_len",{"type":30,"tagName":605,"properties":4140,"children":4141},{"style":617},[4142],{"type":26,"value":4143},"()));",{"type":26,"value":27},{"type":30,"tagName":605,"properties":4146,"children":4147},{"class":607},[4148,4153,4157,4161,4165,4169,4173,4177,4181],{"type":30,"tagName":605,"properties":4149,"children":4150},{"style":617},[4151],{"type":26,"value":4152},"  avgClose ",{"type":30,"tagName":605,"properties":4154,"children":4155},{"style":611},[4156],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":4158,"children":4159},{"style":611},[4160],{"type":26,"value":911},{"type":30,"tagName":605,"properties":4162,"children":4163},{"style":725},[4164],{"type":26,"value":3949},{"type":30,"tagName":605,"properties":4166,"children":4167},{"style":617},[4168],{"type":26,"value":733},{"type":30,"tagName":605,"properties":4170,"children":4171},{"style":725},[4172],{"type":26,"value":2331},{"type":30,"tagName":605,"properties":4174,"children":4175},{"style":617},[4176],{"type":26,"value":733},{"type":30,"tagName":605,"properties":4178,"children":4179},{"style":725},[4180],{"type":26,"value":4138},{"type":30,"tagName":605,"properties":4182,"children":4183},{"style":617},[4184],{"type":26,"value":4143},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4187,"children":4188},{"class":607},[4189],{"type":30,"tagName":605,"properties":4190,"children":4191},{"style":617},[4192],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4195,"children":4196},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":4199,"children":4200},{"class":607},[4201,4205,4209,4213,4217,4221,4225],{"type":30,"tagName":605,"properties":4202,"children":4203},{"style":611},[4204],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":4206,"children":4207},{"style":611},[4208],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":4210,"children":4211},{"style":725},[4212],{"type":26,"value":1183},{"type":30,"tagName":605,"properties":4214,"children":4215},{"style":617},[4216],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":4218,"children":4219},{"style":611},[4220],{"type":26,"value":959},{"type":30,"tagName":605,"properties":4222,"children":4223},{"style":725},[4224],{"type":26,"value":964},{"type":30,"tagName":605,"properties":4226,"children":4227},{"style":617},[4228],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4231,"children":4232},{"class":607},[4233,4237,4242,4246,4251],{"type":30,"tagName":605,"properties":4234,"children":4235},{"style":611},[4236],{"type":26,"value":1208},{"type":30,"tagName":605,"properties":4238,"children":4239},{"style":745},[4240],{"type":26,"value":4241}," volume",{"type":30,"tagName":605,"properties":4243,"children":4244},{"style":611},[4245],{"type":26,"value":880},{"type":30,"tagName":605,"properties":4247,"children":4248},{"style":725},[4249],{"type":26,"value":4250}," in_volume",{"type":30,"tagName":605,"properties":4252,"children":4253},{"style":617},[4254],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4257,"children":4258},{"class":607},[4259,4264,4268,4272,4276,4281,4286,4291,4296,4301],{"type":30,"tagName":605,"properties":4260,"children":4261},{"style":617},[4262],{"type":26,"value":4263},"  ratio ",{"type":30,"tagName":605,"properties":4265,"children":4266},{"style":611},[4267],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":4269,"children":4270},{"style":725},[4271],{"type":26,"value":3673},{"type":30,"tagName":605,"properties":4273,"children":4274},{"style":617},[4275],{"type":26,"value":733},{"type":30,"tagName":605,"properties":4277,"children":4278},{"style":725},[4279],{"type":26,"value":4280},"safeDiv",{"type":30,"tagName":605,"properties":4282,"children":4283},{"style":617},[4284],{"type":26,"value":4285},"(volume, avgVolume.",{"type":30,"tagName":605,"properties":4287,"children":4288},{"style":725},[4289],{"type":26,"value":4290},"update",{"type":30,"tagName":605,"properties":4292,"children":4293},{"style":617},[4294],{"type":26,"value":4295},"(volume)), ",{"type":30,"tagName":605,"properties":4297,"children":4298},{"style":745},[4299],{"type":26,"value":4300},"0.0",{"type":30,"tagName":605,"properties":4302,"children":4303},{"style":617},[4304],{"type":26,"value":941},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4307,"children":4308},{"class":607},[4309],{"type":30,"tagName":605,"properties":4310,"children":4311},{"style":858},[4312],{"type":26,"value":4313},"  // fixnan: keep the last non-NaN value instead of showing a gap.",{"type":26,"value":27},{"type":30,"tagName":605,"properties":4316,"children":4317},{"class":607},[4318,4322,4327,4331,4336,4340,4344,4349],{"type":30,"tagName":605,"properties":4319,"children":4320},{"style":611},[4321],{"type":26,"value":1208},{"type":30,"tagName":605,"properties":4323,"children":4324},{"style":745},[4325],{"type":26,"value":4326}," smooth",{"type":30,"tagName":605,"properties":4328,"children":4329},{"style":611},[4330],{"type":26,"value":880},{"type":30,"tagName":605,"properties":4332,"children":4333},{"style":617},[4334],{"type":26,"value":4335}," avgClose.",{"type":30,"tagName":605,"properties":4337,"children":4338},{"style":725},[4339],{"type":26,"value":4290},{"type":30,"tagName":605,"properties":4341,"children":4342},{"style":617},[4343],{"type":26,"value":733},{"type":30,"tagName":605,"properties":4345,"children":4346},{"style":725},[4347],{"type":26,"value":4348},"in_close",{"type":30,"tagName":605,"properties":4350,"children":4351},{"style":617},[4352],{"type":26,"value":1153},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4355,"children":4356},{"class":607},[4357,4361,4365,4370,4375,4380,4384],{"type":30,"tagName":605,"properties":4358,"children":4359},{"style":611},[4360],{"type":26,"value":1409},{"type":30,"tagName":605,"properties":4362,"children":4363},{"style":617},[4364],{"type":26,"value":1267},{"type":30,"tagName":605,"properties":4366,"children":4367},{"style":611},[4368],{"type":26,"value":4369},"!",{"type":30,"tagName":605,"properties":4371,"children":4372},{"style":725},[4373],{"type":26,"value":4374},"isNaN",{"type":30,"tagName":605,"properties":4376,"children":4377},{"style":617},[4378],{"type":26,"value":4379},"(smooth)) lastGood ",{"type":30,"tagName":605,"properties":4381,"children":4382},{"style":611},[4383],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":4385,"children":4386},{"style":617},[4387],{"type":26,"value":4388}," smooth;",{"type":26,"value":27},{"type":30,"tagName":605,"properties":4391,"children":4392},{"class":607},[4393,4397,4401],{"type":30,"tagName":605,"properties":4394,"children":4395},{"style":611},[4396],{"type":26,"value":1528},{"type":30,"tagName":605,"properties":4398,"children":4399},{"style":745},[4400],{"type":26,"value":1337},{"type":30,"tagName":605,"properties":4402,"children":4403},{"style":617},[4404],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4407,"children":4408},{"class":607},[4409],{"type":30,"tagName":605,"properties":4410,"children":4411},{"style":617},[4412],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4415,"children":4416},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":4419,"children":4420},{"class":607},[4421,4425,4429,4433,4437,4441,4445],{"type":30,"tagName":605,"properties":4422,"children":4423},{"style":611},[4424],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":4426,"children":4427},{"style":611},[4428],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":4430,"children":4431},{"style":725},[4432],{"type":26,"value":1565},{"type":30,"tagName":605,"properties":4434,"children":4435},{"style":617},[4436],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":4438,"children":4439},{"style":611},[4440],{"type":26,"value":959},{"type":30,"tagName":605,"properties":4442,"children":4443},{"style":745},[4444],{"type":26,"value":1116},{"type":30,"tagName":605,"properties":4446,"children":4447},{"style":617},[4448],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4451,"children":4452},{"class":607},[4453,4458],{"type":30,"tagName":605,"properties":4454,"children":4455},{"style":725},[4456],{"type":26,"value":4457},"  out_ratio",{"type":30,"tagName":605,"properties":4459,"children":4460},{"style":617},[4461],{"type":26,"value":4462},"(ratio);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":4465,"children":4466},{"class":607},[4467,4472],{"type":30,"tagName":605,"properties":4468,"children":4469},{"style":725},[4470],{"type":26,"value":4471},"  out_smooth",{"type":30,"tagName":605,"properties":4473,"children":4474},{"style":617},[4475],{"type":26,"value":4476},"(lastGood);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":4479,"children":4480},{"class":607},[4481,4485],{"type":30,"tagName":605,"properties":4482,"children":4483},{"style":725},[4484],{"type":26,"value":1604},{"type":30,"tagName":605,"properties":4486,"children":4487},{"style":617},[4488],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4491,"children":4492},{"class":607},[4493],{"type":30,"tagName":605,"properties":4494,"children":4495},{"style":617},[4496],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4499,"children":4500},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":4503,"children":4504},{"class":607},[4505,4509,4513,4517,4521,4525,4529],{"type":30,"tagName":605,"properties":4506,"children":4507},{"style":611},[4508],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":4510,"children":4511},{"style":611},[4512],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":4514,"children":4515},{"style":725},[4516],{"type":26,"value":1655},{"type":30,"tagName":605,"properties":4518,"children":4519},{"style":617},[4520],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":4522,"children":4523},{"style":611},[4524],{"type":26,"value":959},{"type":30,"tagName":605,"properties":4526,"children":4527},{"style":745},[4528],{"type":26,"value":1116},{"type":30,"tagName":605,"properties":4530,"children":4531},{"style":617},[4532],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4535,"children":4536},{"class":607},[4537,4542,4547],{"type":30,"tagName":605,"properties":4538,"children":4539},{"style":617},[4540],{"type":26,"value":4541},"  avgVolume.",{"type":30,"tagName":605,"properties":4543,"children":4544},{"style":725},[4545],{"type":26,"value":4546},"reset",{"type":30,"tagName":605,"properties":4548,"children":4549},{"style":617},[4550],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4553,"children":4554},{"class":607},[4555,4560,4564],{"type":30,"tagName":605,"properties":4556,"children":4557},{"style":617},[4558],{"type":26,"value":4559},"  avgClose.",{"type":30,"tagName":605,"properties":4561,"children":4562},{"style":725},[4563],{"type":26,"value":4546},{"type":30,"tagName":605,"properties":4565,"children":4566},{"style":617},[4567],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4570,"children":4571},{"class":607},[4572,4576,4580,4584],{"type":30,"tagName":605,"properties":4573,"children":4574},{"style":617},[4575],{"type":26,"value":4263},{"type":30,"tagName":605,"properties":4577,"children":4578},{"style":611},[4579],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":4581,"children":4582},{"style":745},[4583],{"type":26,"value":3883},{"type":30,"tagName":605,"properties":4585,"children":4586},{"style":617},[4587],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4590,"children":4591},{"class":607},[4592,4597,4601,4605],{"type":30,"tagName":605,"properties":4593,"children":4594},{"style":617},[4595],{"type":26,"value":4596},"  lastGood ",{"type":30,"tagName":605,"properties":4598,"children":4599},{"style":611},[4600],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":4602,"children":4603},{"style":745},[4604],{"type":26,"value":1075},{"type":30,"tagName":605,"properties":4606,"children":4607},{"style":617},[4608],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":4611,"children":4612},{"class":607},[4613],{"type":30,"tagName":605,"properties":4614,"children":4615},{"style":617},[4616],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":88,"properties":4619,"children":4621,"position":4629},{"id":4620},"buffer-bounds",[4622],{"type":26,"value":4623,"position":4624},"Buffer bounds",{"start":4625,"end":4627},{"line":1800,"column":38,"offset":4626},9218,{"line":1800,"column":80,"offset":4628},9231,{"start":4630,"end":4632},{"line":1800,"column":20,"offset":4631},9214,{"line":1800,"column":80,"offset":4628},{"type":26,"value":27},{"type":30,"tagName":31,"properties":4635,"children":4636,"position":4720},{},[4637,4645,4657,4663,4675,4681,4693,4700,4713],{"type":26,"value":4638,"position":4639},"A ring buffer never reads past what it has been given: keep a ",{"start":4640,"end":4643},{"line":4641,"column":20,"offset":4642},175,9233,{"line":4641,"column":2674,"offset":4644},9295,{"type":30,"tagName":44,"properties":4646,"children":4647,"position":4654},{},[4648],{"type":26,"value":1974,"position":4649},{"start":4650,"end":4651},{"line":4641,"column":2674,"offset":4644},{"line":4641,"column":4652,"offset":4653},70,9302,{"start":4655,"end":4656},{"line":4641,"column":2674,"offset":4644},{"line":4641,"column":4652,"offset":4653},{"type":26,"value":4658,"position":4659}," beside the ",{"start":4660,"end":4661},{"line":4641,"column":4652,"offset":4653},{"line":4641,"column":2363,"offset":4662},9314,{"type":30,"tagName":44,"properties":4664,"children":4665,"position":4672},{},[4666],{"type":26,"value":2013,"position":4667},{"start":4668,"end":4669},{"line":4641,"column":2363,"offset":4662},{"line":4641,"column":4670,"offset":4671},90,9322,{"start":4673,"end":4674},{"line":4641,"column":2363,"offset":4662},{"line":4641,"column":4670,"offset":4671},{"type":26,"value":4676,"position":4677}," and only scan ",{"start":4678,"end":4679},{"line":4641,"column":4670,"offset":4671},{"line":4641,"column":3072,"offset":4680},9337,{"type":30,"tagName":44,"properties":4682,"children":4683,"position":4690},{},[4684],{"type":26,"value":1974,"position":4685},{"start":4686,"end":4687},{"line":4641,"column":3072,"offset":4680},{"line":4641,"column":4688,"offset":4689},112,9344,{"start":4691,"end":4692},{"line":4641,"column":3072,"offset":4680},{"line":4641,"column":4688,"offset":4689},{"type":26,"value":4694,"position":4695}," entries until the buffer is full. There is no ",{"start":4696,"end":4697},{"line":4641,"column":4688,"offset":4689},{"line":4641,"column":4698,"offset":4699},159,9391,{"type":30,"tagName":44,"properties":4701,"children":4702,"position":4710},{},[4703],{"type":26,"value":4704,"position":4705},"barIndex",{"start":4706,"end":4707},{"line":4641,"column":4698,"offset":4699},{"line":4641,"column":4708,"offset":4709},169,9401,{"start":4711,"end":4712},{"line":4641,"column":4698,"offset":4699},{"line":4641,"column":4708,"offset":4709},{"type":26,"value":4714,"position":4715}," to compare against and no negative index to worry about; the buffer's own bookkeeping is the bound.",{"start":4716,"end":4717},{"line":4641,"column":4708,"offset":4709},{"line":4641,"column":4718,"offset":4719},269,9501,{"start":4721,"end":4722},{"line":4641,"column":20,"offset":4642},{"line":4641,"column":4718,"offset":4719},{"type":26,"value":27},{"type":30,"tagName":88,"properties":4725,"children":4727,"position":4748},{"id":4726},"missing-on-sparse-primaries",[4728,4742],{"type":30,"tagName":44,"properties":4729,"children":4730,"position":4739},{},[4731],{"type":26,"value":4732,"position":4733},"missing",{"start":4734,"end":4737},{"line":4735,"column":38,"offset":4736},177,9507,{"line":4735,"column":1847,"offset":4738},9516,{"start":4740,"end":4741},{"line":4735,"column":38,"offset":4736},{"line":4735,"column":1847,"offset":4738},{"type":26,"value":4743,"position":4744}," on sparse primaries",{"start":4745,"end":4746},{"line":4735,"column":1847,"offset":4738},{"line":4735,"column":2906,"offset":4747},9536,{"start":4749,"end":4751},{"line":4735,"column":20,"offset":4750},9503,{"line":4735,"column":2906,"offset":4747},{"type":26,"value":27},{"type":30,"tagName":31,"properties":4754,"children":4755,"position":4824},{},[4756,4765,4777,4783,4795,4802,4819],{"type":26,"value":4757,"position":4758},"A feed that only has rows when something happened (liquidations, a coarse pin) makes a poor primary input as-is: the grid has holes. Declare ",{"start":4759,"end":4762},{"line":4760,"column":20,"offset":4761},179,9538,{"line":4760,"column":4763,"offset":4764},142,9679,{"type":30,"tagName":44,"properties":4766,"children":4767,"position":4774},{},[4768],{"type":26,"value":4769,"position":4770},"missing: \"zero\"",{"start":4771,"end":4772},{"line":4760,"column":4763,"offset":4764},{"line":4760,"column":4698,"offset":4773},9696,{"start":4775,"end":4776},{"line":4760,"column":4763,"offset":4764},{"line":4760,"column":4698,"offset":4773},{"type":26,"value":4778,"position":4779}," (or ",{"start":4780,"end":4781},{"line":4760,"column":4698,"offset":4773},{"line":4760,"column":1901,"offset":4782},9701,{"type":30,"tagName":44,"properties":4784,"children":4785,"position":4792},{},[4786],{"type":26,"value":4787,"position":4788},"\"nan\"",{"start":4789,"end":4790},{"line":4760,"column":1901,"offset":4782},{"line":4760,"column":3162,"offset":4791},9708,{"start":4793,"end":4794},{"line":4760,"column":1901,"offset":4782},{"line":4760,"column":3162,"offset":4791},{"type":26,"value":4796,"position":4797},") on it and the grid densifies to one row per bar, with the fill on the quiet bars. On a secondary sparse input the same policies decide what the module sees on bars without an observation; the default carries the last value forward, which is right for a coarse candle and wrong for a volume you would double-count (",{"start":4798,"end":4799},{"line":4760,"column":3162,"offset":4791},{"line":4760,"column":4800,"offset":4801},487,10024,{"type":30,"tagName":452,"properties":4803,"children":4805,"position":4815},{"href":4804},"../core-concepts/data-sources.md",[4806],{"type":26,"value":4807,"position":4808},"Data sources",{"start":4809,"end":4812},{"line":4760,"column":4810,"offset":4811},488,10025,{"line":4760,"column":4813,"offset":4814},500,10037,{"start":4816,"end":4817},{"line":4760,"column":4800,"offset":4801},{"line":4760,"column":117,"offset":4818},10072,{"type":26,"value":2253,"position":4820},{"start":4821,"end":4822},{"line":4760,"column":117,"offset":4818},{"line":4760,"column":161,"offset":4823},10074,{"start":4825,"end":4826},{"line":4760,"column":20,"offset":4761},{"line":4760,"column":161,"offset":4823},{"type":26,"value":27},{"type":30,"tagName":68,"properties":4829,"children":4831,"position":4840},{"id":4830},"performance-optimization",[4832],{"type":26,"value":4833,"position":4834},"Performance optimization",{"start":4835,"end":4838},{"line":4836,"column":77,"offset":4837},181,10079,{"line":4836,"column":2455,"offset":4839},10103,{"start":4841,"end":4843},{"line":4836,"column":20,"offset":4842},10076,{"line":4836,"column":2455,"offset":4839},{"type":26,"value":27},{"type":30,"tagName":88,"properties":4846,"children":4848,"position":4857},{"id":4847},"avoid-redundant-calculations",[4849],{"type":26,"value":4850,"position":4851},"Avoid redundant calculations",{"start":4852,"end":4855},{"line":4853,"column":38,"offset":4854},183,10109,{"line":4853,"column":2044,"offset":4856},10137,{"start":4858,"end":4860},{"line":4853,"column":20,"offset":4859},10105,{"line":4853,"column":2044,"offset":4856},{"type":26,"value":27},{"type":30,"tagName":31,"properties":4863,"children":4864,"position":4926},{},[4865,4872,4883,4889,4901,4907,4919],{"type":26,"value":4866,"position":4867},"Compute a value once in ",{"start":4868,"end":4870},{"line":1810,"column":20,"offset":4869},10139,{"line":1810,"column":500,"offset":4871},10163,{"type":30,"tagName":44,"properties":4873,"children":4874,"position":4880},{},[4875],{"type":26,"value":294,"position":4876},{"start":4877,"end":4878},{"line":1810,"column":500,"offset":4871},{"line":1810,"column":2906,"offset":4879},10172,{"start":4881,"end":4882},{"line":1810,"column":500,"offset":4871},{"line":1810,"column":2906,"offset":4879},{"type":26,"value":4884,"position":4885}," and keep it in a module-level variable for ",{"start":4886,"end":4887},{"line":1810,"column":2906,"offset":4879},{"line":1810,"column":3291,"offset":4888},10216,{"type":30,"tagName":44,"properties":4890,"children":4891,"position":4898},{},[4892],{"type":26,"value":4893,"position":4894},"finalize()",{"start":4895,"end":4896},{"line":1810,"column":3291,"offset":4888},{"line":1810,"column":4670,"offset":4897},10228,{"start":4899,"end":4900},{"line":1810,"column":3291,"offset":4888},{"line":1810,"column":4670,"offset":4897},{"type":26,"value":4902,"position":4903}," to write; do not fold the same input into two classes when one class and a copy will do. Loops are fine when they are bounded by a param with a declared ",{"start":4904,"end":4905},{"line":1810,"column":4670,"offset":4897},{"line":1810,"column":2991,"offset":4906},10382,{"type":30,"tagName":44,"properties":4908,"children":4909,"position":4916},{},[4910],{"type":26,"value":435,"position":4911},{"start":4912,"end":4913},{"line":1810,"column":2991,"offset":4906},{"line":1810,"column":4914,"offset":4915},249,10387,{"start":4917,"end":4918},{"line":1810,"column":2991,"offset":4906},{"line":1810,"column":4914,"offset":4915},{"type":26,"value":4920,"position":4921},"; a loop whose bound comes from history length is the thing to avoid.",{"start":4922,"end":4923},{"line":1810,"column":4914,"offset":4915},{"line":1810,"column":4924,"offset":4925},318,10456,{"start":4927,"end":4928},{"line":1810,"column":20,"offset":4869},{"line":1810,"column":4924,"offset":4925},{"type":26,"value":27},{"type":30,"tagName":88,"properties":4931,"children":4933,"position":4941},{"id":4932},"keep-the-row-cheap",[4934],{"type":26,"value":4935,"position":4936},"Keep the row cheap",{"start":4937,"end":4939},{"line":439,"column":38,"offset":4938},10462,{"line":439,"column":367,"offset":4940},10480,{"start":4942,"end":4944},{"line":439,"column":20,"offset":4943},10458,{"line":439,"column":367,"offset":4940},{"type":26,"value":27},{"type":30,"tagName":31,"properties":4947,"children":4948,"position":5046},{},[4949,4962,4968,4981,4988,5001,5007,5019,5026,5039],{"type":30,"tagName":44,"properties":4950,"children":4951,"position":4959},{},[4952],{"type":26,"value":4893,"position":4953},{"start":4954,"end":4957},{"line":4955,"column":20,"offset":4956},189,10482,{"line":4955,"column":133,"offset":4958},10494,{"start":4960,"end":4961},{"line":4955,"column":20,"offset":4956},{"line":4955,"column":133,"offset":4958},{"type":26,"value":4963,"position":4964}," should be writes and arithmetic. Building a string per bar is fine inside the string channel's shared buffer (",{"start":4965,"end":4966},{"line":4955,"column":133,"offset":4958},{"line":4955,"column":24,"offset":4967},10605,{"type":30,"tagName":44,"properties":4969,"children":4970,"position":4978},{},[4971],{"type":26,"value":4972,"position":4973},"sb_clear",{"start":4974,"end":4975},{"line":4955,"column":24,"offset":4967},{"line":4955,"column":4976,"offset":4977},134,10615,{"start":4979,"end":4980},{"line":4955,"column":24,"offset":4967},{"line":4955,"column":4976,"offset":4977},{"type":26,"value":4982,"position":4983}," / ",{"start":4984,"end":4985},{"line":4955,"column":4976,"offset":4977},{"line":4955,"column":4986,"offset":4987},137,10618,{"type":30,"tagName":44,"properties":4989,"children":4990,"position":4998},{},[4991],{"type":26,"value":4992,"position":4993},"sb_text",{"start":4994,"end":4995},{"line":4955,"column":4986,"offset":4987},{"line":4955,"column":4996,"offset":4997},146,10627,{"start":4999,"end":5000},{"line":4955,"column":4986,"offset":4987},{"line":4955,"column":4996,"offset":4997},{"type":26,"value":4982,"position":5002},{"start":5003,"end":5004},{"line":4955,"column":4996,"offset":4997},{"line":4955,"column":5005,"offset":5006},149,10630,{"type":30,"tagName":44,"properties":5008,"children":5009,"position":5016},{},[5010],{"type":26,"value":5011,"position":5012},"sb_f64",{"start":5013,"end":5014},{"line":4955,"column":5005,"offset":5006},{"line":4955,"column":2742,"offset":5015},10638,{"start":5017,"end":5018},{"line":4955,"column":5005,"offset":5006},{"line":4955,"column":2742,"offset":5015},{"type":26,"value":5020,"position":5021}," allocate nothing), but formatting through ",{"start":5022,"end":5023},{"line":4955,"column":2742,"offset":5015},{"line":4955,"column":5024,"offset":5025},200,10681,{"type":30,"tagName":44,"properties":5027,"children":5028,"position":5036},{},[5029],{"type":26,"value":5030,"position":5031},"String",{"start":5032,"end":5033},{"line":4955,"column":5024,"offset":5025},{"line":4955,"column":5034,"offset":5035},208,10689,{"start":5037,"end":5038},{"line":4955,"column":5024,"offset":5025},{"line":4955,"column":5034,"offset":5035},{"type":26,"value":5040,"position":5041}," concatenation allocates on every bar; reserve it for the newest-bar label you actually read.",{"start":5042,"end":5043},{"line":4955,"column":5034,"offset":5035},{"line":4955,"column":5044,"offset":5045},301,10782,{"start":5047,"end":5048},{"line":4955,"column":20,"offset":4956},{"line":4955,"column":5044,"offset":5045},{"type":26,"value":27},{"type":30,"tagName":68,"properties":5051,"children":5053,"position":5061},{"id":5052},"code-organization",[5054],{"type":26,"value":5055,"position":5056},"Code organization",{"start":5057,"end":5059},{"line":2409,"column":77,"offset":5058},10787,{"line":2409,"column":147,"offset":5060},10804,{"start":5062,"end":5064},{"line":2409,"column":20,"offset":5063},10784,{"line":2409,"column":147,"offset":5060},{"type":26,"value":27},{"type":30,"tagName":88,"properties":5067,"children":5069,"position":5078},{"id":5068},"group-related-code",[5070],{"type":26,"value":5071,"position":5072},"Group related code",{"start":5073,"end":5076},{"line":5074,"column":38,"offset":5075},193,10810,{"line":5074,"column":367,"offset":5077},10828,{"start":5079,"end":5081},{"line":5074,"column":20,"offset":5080},10806,{"line":5074,"column":367,"offset":5077},{"type":26,"value":27},{"type":30,"tagName":31,"properties":5084,"children":5085,"position":5093},{},[5086],{"type":26,"value":5087,"position":5088},"Read top to bottom: imports, declarations, state, helpers, then the four exports in the order the host calls them. A complete Indicator laid out that way:",{"start":5089,"end":5091},{"line":1828,"column":20,"offset":5090},10830,{"line":1828,"column":1892,"offset":5092},10984,{"start":5094,"end":5095},{"line":1828,"column":20,"offset":5090},{"line":1828,"column":1892,"offset":5092},{"type":26,"value":27},{"type":13,"children":5098},[5099],{"type":30,"tagName":595,"properties":5100,"children":5101,"data":-1},{"class":597,"style":598,"tabindex":599},[5102],{"type":30,"tagName":44,"properties":5103,"children":5104},{},[5105,5113,5114,5138,5139,5163,5164,5188,5189,5213,5214,5238,5239,5242,5243,5251,5252,5307,5308,5364,5365,5384,5385,5406,5407,5445,5446,5492,5493,5542,5543,5563,5564,5567,5568,5576,5577,5614,5615,5651,5652,5681,5682,5714,5715,5747,5748,5780,5781,5813,5814,5817,5818,5826,5827,5858,5859,5900,5901,5942,5943,5967,5968,5975,5976,5979,5980,6011,6012,6035,6036,6057,6058,6084,6085,6110,6111,6137,6138,6174,6175,6182,6183,6186,6187,6218,6219,6232,6233,6246,6247,6260,6261,6303,6304,6315,6316,6323,6324,6327,6328,6359,6360,6376,6377,6393,6394,6410,6411,6430,6431,6450,6451,6470,6471,6490,6491],{"type":30,"tagName":605,"properties":5106,"children":5107},{"class":607},[5108],{"type":30,"tagName":605,"properties":5109,"children":5110},{"style":858},[5111],{"type":26,"value":5112},"// 1. Imports: the declaring words, the generated accessors, the TA classes.",{"type":26,"value":27},{"type":30,"tagName":605,"properties":5115,"children":5116},{"class":607},[5117,5121,5126,5130,5134],{"type":30,"tagName":605,"properties":5118,"children":5119},{"style":611},[5120],{"type":26,"value":614},{"type":30,"tagName":605,"properties":5122,"children":5123},{"style":617},[5124],{"type":26,"value":5125}," { input, line, none, ohlcv, output, overlay, param, shape } ",{"type":30,"tagName":605,"properties":5127,"children":5128},{"style":611},[5129],{"type":26,"value":625},{"type":30,"tagName":605,"properties":5131,"children":5132},{"style":628},[5133],{"type":26,"value":631},{"type":30,"tagName":605,"properties":5135,"children":5136},{"style":617},[5137],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5140,"children":5141},{"class":607},[5142,5146,5151,5155,5159],{"type":30,"tagName":605,"properties":5143,"children":5144},{"style":611},[5145],{"type":26,"value":614},{"type":30,"tagName":605,"properties":5147,"children":5148},{"style":617},[5149],{"type":26,"value":5150}," { in_close, in_low } ",{"type":30,"tagName":605,"properties":5152,"children":5153},{"style":611},[5154],{"type":26,"value":625},{"type":30,"tagName":605,"properties":5156,"children":5157},{"style":628},[5158],{"type":26,"value":658},{"type":30,"tagName":605,"properties":5160,"children":5161},{"style":617},[5162],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5165,"children":5166},{"class":607},[5167,5171,5176,5180,5184],{"type":30,"tagName":605,"properties":5168,"children":5169},{"style":611},[5170],{"type":26,"value":614},{"type":30,"tagName":605,"properties":5172,"children":5173},{"style":617},[5174],{"type":26,"value":5175}," { emitRow, out_entry, out_fast, out_is_entry, out_slow } ",{"type":30,"tagName":605,"properties":5177,"children":5178},{"style":611},[5179],{"type":26,"value":625},{"type":30,"tagName":605,"properties":5181,"children":5182},{"style":628},[5183],{"type":26,"value":684},{"type":30,"tagName":605,"properties":5185,"children":5186},{"style":617},[5187],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5190,"children":5191},{"class":607},[5192,5196,5201,5205,5209],{"type":30,"tagName":605,"properties":5193,"children":5194},{"style":611},[5195],{"type":26,"value":614},{"type":30,"tagName":605,"properties":5197,"children":5198},{"style":617},[5199],{"type":26,"value":5200}," { p_fast, p_slow } ",{"type":30,"tagName":605,"properties":5202,"children":5203},{"style":611},[5204],{"type":26,"value":625},{"type":30,"tagName":605,"properties":5206,"children":5207},{"style":628},[5208],{"type":26,"value":710},{"type":30,"tagName":605,"properties":5210,"children":5211},{"style":617},[5212],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5215,"children":5216},{"class":607},[5217,5221,5226,5230,5234],{"type":30,"tagName":605,"properties":5218,"children":5219},{"style":611},[5220],{"type":26,"value":614},{"type":30,"tagName":605,"properties":5222,"children":5223},{"style":617},[5224],{"type":26,"value":5225}," { Cross, Ema } ",{"type":30,"tagName":605,"properties":5227,"children":5228},{"style":611},[5229],{"type":26,"value":625},{"type":30,"tagName":605,"properties":5231,"children":5232},{"style":628},[5233],{"type":26,"value":3488},{"type":30,"tagName":605,"properties":5235,"children":5236},{"style":617},[5237],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5240,"children":5241},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":5244,"children":5245},{"class":607},[5246],{"type":30,"tagName":605,"properties":5247,"children":5248},{"style":858},[5249],{"type":26,"value":5250},"// 2. Declarations: settings, feeds, outputs, each with the description the dialog and legend show.",{"type":26,"value":27},{"type":30,"tagName":605,"properties":5253,"children":5254},{"class":607},[5255,5259,5263,5268,5272,5277,5281,5286,5290,5294,5298,5303],{"type":30,"tagName":605,"properties":5256,"children":5257},{"style":725},[5258],{"type":26,"value":728},{"type":30,"tagName":605,"properties":5260,"children":5261},{"style":617},[5262],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5264,"children":5265},{"style":628},[5266],{"type":26,"value":5267},"\"fast\"",{"type":30,"tagName":605,"properties":5269,"children":5270},{"style":617},[5271],{"type":26,"value":226},{"type":30,"tagName":605,"properties":5273,"children":5274},{"style":745},[5275],{"type":26,"value":5276},"9",{"type":30,"tagName":605,"properties":5278,"children":5279},{"style":617},[5280],{"type":26,"value":753},{"type":30,"tagName":605,"properties":5282,"children":5283},{"style":745},[5284],{"type":26,"value":5285},"2",{"type":30,"tagName":605,"properties":5287,"children":5288},{"style":617},[5289],{"type":26,"value":763},{"type":30,"tagName":605,"properties":5291,"children":5292},{"style":745},[5293],{"type":26,"value":748},{"type":30,"tagName":605,"properties":5295,"children":5296},{"style":617},[5297],{"type":26,"value":773},{"type":30,"tagName":605,"properties":5299,"children":5300},{"style":628},[5301],{"type":26,"value":5302},"\"Fast EMA length\"",{"type":30,"tagName":605,"properties":5304,"children":5305},{"style":617},[5306],{"type":26,"value":783},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5309,"children":5310},{"class":607},[5311,5315,5319,5324,5328,5333,5337,5342,5346,5351,5355,5360],{"type":30,"tagName":605,"properties":5312,"children":5313},{"style":725},[5314],{"type":26,"value":728},{"type":30,"tagName":605,"properties":5316,"children":5317},{"style":617},[5318],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5320,"children":5321},{"style":628},[5322],{"type":26,"value":5323},"\"slow\"",{"type":30,"tagName":605,"properties":5325,"children":5326},{"style":617},[5327],{"type":26,"value":226},{"type":30,"tagName":605,"properties":5329,"children":5330},{"style":745},[5331],{"type":26,"value":5332},"21",{"type":30,"tagName":605,"properties":5334,"children":5335},{"style":617},[5336],{"type":26,"value":753},{"type":30,"tagName":605,"properties":5338,"children":5339},{"style":745},[5340],{"type":26,"value":5341},"5",{"type":30,"tagName":605,"properties":5343,"children":5344},{"style":617},[5345],{"type":26,"value":763},{"type":30,"tagName":605,"properties":5347,"children":5348},{"style":745},[5349],{"type":26,"value":5350},"400",{"type":30,"tagName":605,"properties":5352,"children":5353},{"style":617},[5354],{"type":26,"value":773},{"type":30,"tagName":605,"properties":5356,"children":5357},{"style":628},[5358],{"type":26,"value":5359},"\"Slow EMA length\"",{"type":30,"tagName":605,"properties":5361,"children":5362},{"style":617},[5363],{"type":26,"value":783},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5366,"children":5367},{"class":607},[5368,5372,5376,5380],{"type":30,"tagName":605,"properties":5369,"children":5370},{"style":725},[5371],{"type":26,"value":792},{"type":30,"tagName":605,"properties":5373,"children":5374},{"style":617},[5375],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5377,"children":5378},{"style":628},[5379],{"type":26,"value":801},{"type":30,"tagName":605,"properties":5381,"children":5382},{"style":617},[5383],{"type":26,"value":806},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5386,"children":5387},{"class":607},[5388,5392,5396,5401],{"type":30,"tagName":605,"properties":5389,"children":5390},{"style":725},[5391],{"type":26,"value":792},{"type":30,"tagName":605,"properties":5393,"children":5394},{"style":617},[5395],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5397,"children":5398},{"style":628},[5399],{"type":26,"value":5400},"\"low\"",{"type":30,"tagName":605,"properties":5402,"children":5403},{"style":617},[5404],{"type":26,"value":5405},", ohlcv.low);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":5408,"children":5409},{"class":607},[5410,5414,5418,5422,5427,5432,5436,5441],{"type":30,"tagName":605,"properties":5411,"children":5412},{"style":725},[5413],{"type":26,"value":815},{"type":30,"tagName":605,"properties":5415,"children":5416},{"style":617},[5417],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5419,"children":5420},{"style":628},[5421],{"type":26,"value":5267},{"type":30,"tagName":605,"properties":5423,"children":5424},{"style":617},[5425],{"type":26,"value":5426},", line, overlay, { color: ",{"type":30,"tagName":605,"properties":5428,"children":5429},{"style":628},[5430],{"type":26,"value":5431},"\"#38bdf8\"",{"type":30,"tagName":605,"properties":5433,"children":5434},{"style":617},[5435],{"type":26,"value":773},{"type":30,"tagName":605,"properties":5437,"children":5438},{"style":628},[5439],{"type":26,"value":5440},"\"Fast EMA\"",{"type":30,"tagName":605,"properties":5442,"children":5443},{"style":617},[5444],{"type":26,"value":783},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5447,"children":5448},{"class":607},[5449,5453,5457,5461,5465,5470,5475,5479,5483,5488],{"type":30,"tagName":605,"properties":5450,"children":5451},{"style":725},[5452],{"type":26,"value":815},{"type":30,"tagName":605,"properties":5454,"children":5455},{"style":617},[5456],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5458,"children":5459},{"style":628},[5460],{"type":26,"value":5323},{"type":30,"tagName":605,"properties":5462,"children":5463},{"style":617},[5464],{"type":26,"value":5426},{"type":30,"tagName":605,"properties":5466,"children":5467},{"style":628},[5468],{"type":26,"value":5469},"\"#f59e0b\"",{"type":30,"tagName":605,"properties":5471,"children":5472},{"style":617},[5473],{"type":26,"value":5474},", width: ",{"type":30,"tagName":605,"properties":5476,"children":5477},{"style":745},[5478],{"type":26,"value":5285},{"type":30,"tagName":605,"properties":5480,"children":5481},{"style":617},[5482],{"type":26,"value":773},{"type":30,"tagName":605,"properties":5484,"children":5485},{"style":628},[5486],{"type":26,"value":5487},"\"Slow EMA\"",{"type":30,"tagName":605,"properties":5489,"children":5490},{"style":617},[5491],{"type":26,"value":783},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5494,"children":5495},{"class":607},[5496,5500,5504,5509,5514,5519,5524,5529,5533,5538],{"type":30,"tagName":605,"properties":5497,"children":5498},{"style":725},[5499],{"type":26,"value":815},{"type":30,"tagName":605,"properties":5501,"children":5502},{"style":617},[5503],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5505,"children":5506},{"style":628},[5507],{"type":26,"value":5508},"\"entry\"",{"type":30,"tagName":605,"properties":5510,"children":5511},{"style":617},[5512],{"type":26,"value":5513},", shape, overlay, { color: ",{"type":30,"tagName":605,"properties":5515,"children":5516},{"style":628},[5517],{"type":26,"value":5518},"\"#22c55e\"",{"type":30,"tagName":605,"properties":5520,"children":5521},{"style":617},[5522],{"type":26,"value":5523},", shape_where: ",{"type":30,"tagName":605,"properties":5525,"children":5526},{"style":628},[5527],{"type":26,"value":5528},"\"is_entry\"",{"type":30,"tagName":605,"properties":5530,"children":5531},{"style":617},[5532],{"type":26,"value":773},{"type":30,"tagName":605,"properties":5534,"children":5535},{"style":628},[5536],{"type":26,"value":5537},"\"Fast crossed above slow\"",{"type":30,"tagName":605,"properties":5539,"children":5540},{"style":617},[5541],{"type":26,"value":783},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5544,"children":5545},{"class":607},[5546,5550,5554,5558],{"type":30,"tagName":605,"properties":5547,"children":5548},{"style":725},[5549],{"type":26,"value":815},{"type":30,"tagName":605,"properties":5551,"children":5552},{"style":617},[5553],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5555,"children":5556},{"style":628},[5557],{"type":26,"value":5528},{"type":30,"tagName":605,"properties":5559,"children":5560},{"style":617},[5561],{"type":26,"value":5562},", none);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":5565,"children":5566},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":5569,"children":5570},{"class":607},[5571],{"type":30,"tagName":605,"properties":5572,"children":5573},{"style":858},[5574],{"type":26,"value":5575},"// 3. State: everything that lives between bars, with its starting value.",{"type":26,"value":27},{"type":30,"tagName":605,"properties":5578,"children":5579},{"class":607},[5580,5584,5589,5593,5597,5602,5606,5610],{"type":30,"tagName":605,"properties":5581,"children":5582},{"style":611},[5583],{"type":26,"value":143},{"type":30,"tagName":605,"properties":5585,"children":5586},{"style":617},[5587],{"type":26,"value":5588}," fast ",{"type":30,"tagName":605,"properties":5590,"children":5591},{"style":611},[5592],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":5594,"children":5595},{"style":611},[5596],{"type":26,"value":911},{"type":30,"tagName":605,"properties":5598,"children":5599},{"style":725},[5600],{"type":26,"value":5601}," Ema",{"type":30,"tagName":605,"properties":5603,"children":5604},{"style":617},[5605],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5607,"children":5608},{"style":745},[5609],{"type":26,"value":5276},{"type":30,"tagName":605,"properties":5611,"children":5612},{"style":617},[5613],{"type":26,"value":941},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5616,"children":5617},{"class":607},[5618,5622,5627,5631,5635,5639,5643,5647],{"type":30,"tagName":605,"properties":5619,"children":5620},{"style":611},[5621],{"type":26,"value":143},{"type":30,"tagName":605,"properties":5623,"children":5624},{"style":617},[5625],{"type":26,"value":5626}," slow ",{"type":30,"tagName":605,"properties":5628,"children":5629},{"style":611},[5630],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":5632,"children":5633},{"style":611},[5634],{"type":26,"value":911},{"type":30,"tagName":605,"properties":5636,"children":5637},{"style":725},[5638],{"type":26,"value":5601},{"type":30,"tagName":605,"properties":5640,"children":5641},{"style":617},[5642],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5644,"children":5645},{"style":745},[5646],{"type":26,"value":5332},{"type":30,"tagName":605,"properties":5648,"children":5649},{"style":617},[5650],{"type":26,"value":941},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5653,"children":5654},{"class":607},[5655,5659,5664,5668,5672,5677],{"type":30,"tagName":605,"properties":5656,"children":5657},{"style":611},[5658],{"type":26,"value":143},{"type":30,"tagName":605,"properties":5660,"children":5661},{"style":617},[5662],{"type":26,"value":5663}," cross ",{"type":30,"tagName":605,"properties":5665,"children":5666},{"style":611},[5667],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":5669,"children":5670},{"style":611},[5671],{"type":26,"value":911},{"type":30,"tagName":605,"properties":5673,"children":5674},{"style":725},[5675],{"type":26,"value":5676}," Cross",{"type":30,"tagName":605,"properties":5678,"children":5679},{"style":617},[5680],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5683,"children":5684},{"class":607},[5685,5689,5694,5698,5702,5706,5710],{"type":30,"tagName":605,"properties":5686,"children":5687},{"style":611},[5688],{"type":26,"value":143},{"type":30,"tagName":605,"properties":5690,"children":5691},{"style":617},[5692],{"type":26,"value":5693}," fastValue",{"type":30,"tagName":605,"properties":5695,"children":5696},{"style":611},[5697],{"type":26,"value":959},{"type":30,"tagName":605,"properties":5699,"children":5700},{"style":725},[5701],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":5703,"children":5704},{"style":611},[5705],{"type":26,"value":880},{"type":30,"tagName":605,"properties":5707,"children":5708},{"style":745},[5709],{"type":26,"value":1075},{"type":30,"tagName":605,"properties":5711,"children":5712},{"style":617},[5713],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5716,"children":5717},{"class":607},[5718,5722,5727,5731,5735,5739,5743],{"type":30,"tagName":605,"properties":5719,"children":5720},{"style":611},[5721],{"type":26,"value":143},{"type":30,"tagName":605,"properties":5723,"children":5724},{"style":617},[5725],{"type":26,"value":5726}," slowValue",{"type":30,"tagName":605,"properties":5728,"children":5729},{"style":611},[5730],{"type":26,"value":959},{"type":30,"tagName":605,"properties":5732,"children":5733},{"style":725},[5734],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":5736,"children":5737},{"style":611},[5738],{"type":26,"value":880},{"type":30,"tagName":605,"properties":5740,"children":5741},{"style":745},[5742],{"type":26,"value":1075},{"type":30,"tagName":605,"properties":5744,"children":5745},{"style":617},[5746],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5749,"children":5750},{"class":607},[5751,5755,5760,5764,5768,5772,5776],{"type":30,"tagName":605,"properties":5752,"children":5753},{"style":611},[5754],{"type":26,"value":143},{"type":30,"tagName":605,"properties":5756,"children":5757},{"style":617},[5758],{"type":26,"value":5759}," low",{"type":30,"tagName":605,"properties":5761,"children":5762},{"style":611},[5763],{"type":26,"value":959},{"type":30,"tagName":605,"properties":5765,"children":5766},{"style":725},[5767],{"type":26,"value":1066},{"type":30,"tagName":605,"properties":5769,"children":5770},{"style":611},[5771],{"type":26,"value":880},{"type":30,"tagName":605,"properties":5773,"children":5774},{"style":745},[5775],{"type":26,"value":1075},{"type":30,"tagName":605,"properties":5777,"children":5778},{"style":617},[5779],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5782,"children":5783},{"class":607},[5784,5788,5793,5797,5801,5805,5809],{"type":30,"tagName":605,"properties":5785,"children":5786},{"style":611},[5787],{"type":26,"value":143},{"type":30,"tagName":605,"properties":5789,"children":5790},{"style":617},[5791],{"type":26,"value":5792}," crossed",{"type":30,"tagName":605,"properties":5794,"children":5795},{"style":611},[5796],{"type":26,"value":959},{"type":30,"tagName":605,"properties":5798,"children":5799},{"style":725},[5800],{"type":26,"value":964},{"type":30,"tagName":605,"properties":5802,"children":5803},{"style":611},[5804],{"type":26,"value":880},{"type":30,"tagName":605,"properties":5806,"children":5807},{"style":745},[5808],{"type":26,"value":1007},{"type":30,"tagName":605,"properties":5810,"children":5811},{"style":617},[5812],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5815,"children":5816},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":5819,"children":5820},{"class":607},[5821],{"type":30,"tagName":605,"properties":5822,"children":5823},{"style":858},[5824],{"type":26,"value":5825},"// 4. Lifecycle: init reads settings, state folds the bar, finalize writes the row, reset restores.",{"type":26,"value":27},{"type":30,"tagName":605,"properties":5828,"children":5829},{"class":607},[5830,5834,5838,5842,5846,5850,5854],{"type":30,"tagName":605,"properties":5831,"children":5832},{"style":611},[5833],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":5835,"children":5836},{"style":611},[5837],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":5839,"children":5840},{"style":725},[5841],{"type":26,"value":1102},{"type":30,"tagName":605,"properties":5843,"children":5844},{"style":617},[5845],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":5847,"children":5848},{"style":611},[5849],{"type":26,"value":959},{"type":30,"tagName":605,"properties":5851,"children":5852},{"style":745},[5853],{"type":26,"value":1116},{"type":30,"tagName":605,"properties":5855,"children":5856},{"style":617},[5857],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5860,"children":5861},{"class":607},[5862,5867,5871,5875,5879,5883,5887,5891,5896],{"type":30,"tagName":605,"properties":5863,"children":5864},{"style":617},[5865],{"type":26,"value":5866},"  fast ",{"type":30,"tagName":605,"properties":5868,"children":5869},{"style":611},[5870],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":5872,"children":5873},{"style":611},[5874],{"type":26,"value":911},{"type":30,"tagName":605,"properties":5876,"children":5877},{"style":725},[5878],{"type":26,"value":5601},{"type":30,"tagName":605,"properties":5880,"children":5881},{"style":617},[5882],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5884,"children":5885},{"style":725},[5886],{"type":26,"value":2331},{"type":30,"tagName":605,"properties":5888,"children":5889},{"style":617},[5890],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5892,"children":5893},{"style":725},[5894],{"type":26,"value":5895},"p_fast",{"type":30,"tagName":605,"properties":5897,"children":5898},{"style":617},[5899],{"type":26,"value":4143},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5902,"children":5903},{"class":607},[5904,5909,5913,5917,5921,5925,5929,5933,5938],{"type":30,"tagName":605,"properties":5905,"children":5906},{"style":617},[5907],{"type":26,"value":5908},"  slow ",{"type":30,"tagName":605,"properties":5910,"children":5911},{"style":611},[5912],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":5914,"children":5915},{"style":611},[5916],{"type":26,"value":911},{"type":30,"tagName":605,"properties":5918,"children":5919},{"style":725},[5920],{"type":26,"value":5601},{"type":30,"tagName":605,"properties":5922,"children":5923},{"style":617},[5924],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5926,"children":5927},{"style":725},[5928],{"type":26,"value":2331},{"type":30,"tagName":605,"properties":5930,"children":5931},{"style":617},[5932],{"type":26,"value":733},{"type":30,"tagName":605,"properties":5934,"children":5935},{"style":725},[5936],{"type":26,"value":5937},"p_slow",{"type":30,"tagName":605,"properties":5939,"children":5940},{"style":617},[5941],{"type":26,"value":4143},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5944,"children":5945},{"class":607},[5946,5951,5955,5959,5963],{"type":30,"tagName":605,"properties":5947,"children":5948},{"style":617},[5949],{"type":26,"value":5950},"  cross ",{"type":30,"tagName":605,"properties":5952,"children":5953},{"style":611},[5954],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":5956,"children":5957},{"style":611},[5958],{"type":26,"value":911},{"type":30,"tagName":605,"properties":5960,"children":5961},{"style":725},[5962],{"type":26,"value":5676},{"type":30,"tagName":605,"properties":5964,"children":5965},{"style":617},[5966],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5969,"children":5970},{"class":607},[5971],{"type":30,"tagName":605,"properties":5972,"children":5973},{"style":617},[5974],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":605,"properties":5977,"children":5978},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":5981,"children":5982},{"class":607},[5983,5987,5991,5995,5999,6003,6007],{"type":30,"tagName":605,"properties":5984,"children":5985},{"style":611},[5986],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":5988,"children":5989},{"style":611},[5990],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":5992,"children":5993},{"style":725},[5994],{"type":26,"value":1183},{"type":30,"tagName":605,"properties":5996,"children":5997},{"style":617},[5998],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":6000,"children":6001},{"style":611},[6002],{"type":26,"value":959},{"type":30,"tagName":605,"properties":6004,"children":6005},{"style":725},[6006],{"type":26,"value":964},{"type":30,"tagName":605,"properties":6008,"children":6009},{"style":617},[6010],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6013,"children":6014},{"class":607},[6015,6019,6023,6027,6031],{"type":30,"tagName":605,"properties":6016,"children":6017},{"style":611},[6018],{"type":26,"value":1208},{"type":30,"tagName":605,"properties":6020,"children":6021},{"style":745},[6022],{"type":26,"value":1213},{"type":30,"tagName":605,"properties":6024,"children":6025},{"style":611},[6026],{"type":26,"value":880},{"type":30,"tagName":605,"properties":6028,"children":6029},{"style":725},[6030],{"type":26,"value":1222},{"type":30,"tagName":605,"properties":6032,"children":6033},{"style":617},[6034],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6037,"children":6038},{"class":607},[6039,6044,6048,6053],{"type":30,"tagName":605,"properties":6040,"children":6041},{"style":617},[6042],{"type":26,"value":6043},"  low ",{"type":30,"tagName":605,"properties":6045,"children":6046},{"style":611},[6047],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":6049,"children":6050},{"style":725},[6051],{"type":26,"value":6052}," in_low",{"type":30,"tagName":605,"properties":6054,"children":6055},{"style":617},[6056],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6059,"children":6060},{"class":607},[6061,6066,6070,6075,6079],{"type":30,"tagName":605,"properties":6062,"children":6063},{"style":617},[6064],{"type":26,"value":6065},"  fastValue ",{"type":30,"tagName":605,"properties":6067,"children":6068},{"style":611},[6069],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":6071,"children":6072},{"style":617},[6073],{"type":26,"value":6074}," fast.",{"type":30,"tagName":605,"properties":6076,"children":6077},{"style":725},[6078],{"type":26,"value":4290},{"type":30,"tagName":605,"properties":6080,"children":6081},{"style":617},[6082],{"type":26,"value":6083},"(close);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":6086,"children":6087},{"class":607},[6088,6093,6097,6102,6106],{"type":30,"tagName":605,"properties":6089,"children":6090},{"style":617},[6091],{"type":26,"value":6092},"  slowValue ",{"type":30,"tagName":605,"properties":6094,"children":6095},{"style":611},[6096],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":6098,"children":6099},{"style":617},[6100],{"type":26,"value":6101}," slow.",{"type":30,"tagName":605,"properties":6103,"children":6104},{"style":725},[6105],{"type":26,"value":4290},{"type":30,"tagName":605,"properties":6107,"children":6108},{"style":617},[6109],{"type":26,"value":6083},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6112,"children":6113},{"class":607},[6114,6119,6123,6128,6132],{"type":30,"tagName":605,"properties":6115,"children":6116},{"style":617},[6117],{"type":26,"value":6118},"  crossed ",{"type":30,"tagName":605,"properties":6120,"children":6121},{"style":611},[6122],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":6124,"children":6125},{"style":617},[6126],{"type":26,"value":6127}," cross.",{"type":30,"tagName":605,"properties":6129,"children":6130},{"style":725},[6131],{"type":26,"value":4290},{"type":30,"tagName":605,"properties":6133,"children":6134},{"style":617},[6135],{"type":26,"value":6136},"(fastValue, slowValue);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":6139,"children":6140},{"class":607},[6141,6145,6149,6154,6158,6162,6166,6170],{"type":30,"tagName":605,"properties":6142,"children":6143},{"style":611},[6144],{"type":26,"value":1528},{"type":30,"tagName":605,"properties":6146,"children":6147},{"style":725},[6148],{"type":26,"value":3738},{"type":30,"tagName":605,"properties":6150,"children":6151},{"style":617},[6152],{"type":26,"value":6153},"(slowValue) ",{"type":30,"tagName":605,"properties":6155,"children":6156},{"style":611},[6157],{"type":26,"value":3748},{"type":30,"tagName":605,"properties":6159,"children":6160},{"style":745},[6161],{"type":26,"value":1007},{"type":30,"tagName":605,"properties":6163,"children":6164},{"style":611},[6165],{"type":26,"value":3897},{"type":30,"tagName":605,"properties":6167,"children":6168},{"style":745},[6169],{"type":26,"value":1337},{"type":30,"tagName":605,"properties":6171,"children":6172},{"style":617},[6173],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6176,"children":6177},{"class":607},[6178],{"type":30,"tagName":605,"properties":6179,"children":6180},{"style":617},[6181],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6184,"children":6185},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":6188,"children":6189},{"class":607},[6190,6194,6198,6202,6206,6210,6214],{"type":30,"tagName":605,"properties":6191,"children":6192},{"style":611},[6193],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":6195,"children":6196},{"style":611},[6197],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":6199,"children":6200},{"style":725},[6201],{"type":26,"value":1565},{"type":30,"tagName":605,"properties":6203,"children":6204},{"style":617},[6205],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":6207,"children":6208},{"style":611},[6209],{"type":26,"value":959},{"type":30,"tagName":605,"properties":6211,"children":6212},{"style":745},[6213],{"type":26,"value":1116},{"type":30,"tagName":605,"properties":6215,"children":6216},{"style":617},[6217],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6220,"children":6221},{"class":607},[6222,6227],{"type":30,"tagName":605,"properties":6223,"children":6224},{"style":725},[6225],{"type":26,"value":6226},"  out_fast",{"type":30,"tagName":605,"properties":6228,"children":6229},{"style":617},[6230],{"type":26,"value":6231},"(fastValue);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":6234,"children":6235},{"class":607},[6236,6241],{"type":30,"tagName":605,"properties":6237,"children":6238},{"style":725},[6239],{"type":26,"value":6240},"  out_slow",{"type":30,"tagName":605,"properties":6242,"children":6243},{"style":617},[6244],{"type":26,"value":6245},"(slowValue);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":6248,"children":6249},{"class":607},[6250,6255],{"type":30,"tagName":605,"properties":6251,"children":6252},{"style":725},[6253],{"type":26,"value":6254},"  out_entry",{"type":30,"tagName":605,"properties":6256,"children":6257},{"style":617},[6258],{"type":26,"value":6259},"(low);",{"type":26,"value":27},{"type":30,"tagName":605,"properties":6262,"children":6263},{"class":607},[6264,6269,6274,6278,6282,6286,6291,6295,6299],{"type":30,"tagName":605,"properties":6265,"children":6266},{"style":725},[6267],{"type":26,"value":6268},"  out_is_entry",{"type":30,"tagName":605,"properties":6270,"children":6271},{"style":617},[6272],{"type":26,"value":6273},"(crossed ",{"type":30,"tagName":605,"properties":6275,"children":6276},{"style":611},[6277],{"type":26,"value":3878},{"type":30,"tagName":605,"properties":6279,"children":6280},{"style":745},[6281],{"type":26,"value":1337},{"type":30,"tagName":605,"properties":6283,"children":6284},{"style":611},[6285],{"type":26,"value":3888},{"type":30,"tagName":605,"properties":6287,"children":6288},{"style":745},[6289],{"type":26,"value":6290}," 1.0",{"type":30,"tagName":605,"properties":6292,"children":6293},{"style":611},[6294],{"type":26,"value":3897},{"type":30,"tagName":605,"properties":6296,"children":6297},{"style":745},[6298],{"type":26,"value":3883},{"type":30,"tagName":605,"properties":6300,"children":6301},{"style":617},[6302],{"type":26,"value":941},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6305,"children":6306},{"class":607},[6307,6311],{"type":30,"tagName":605,"properties":6308,"children":6309},{"style":725},[6310],{"type":26,"value":1604},{"type":30,"tagName":605,"properties":6312,"children":6313},{"style":617},[6314],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6317,"children":6318},{"class":607},[6319],{"type":30,"tagName":605,"properties":6320,"children":6321},{"style":617},[6322],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6325,"children":6326},{"class":607},[],{"type":26,"value":27},{"type":30,"tagName":605,"properties":6329,"children":6330},{"class":607},[6331,6335,6339,6343,6347,6351,6355],{"type":30,"tagName":605,"properties":6332,"children":6333},{"style":611},[6334],{"type":26,"value":1092},{"type":30,"tagName":605,"properties":6336,"children":6337},{"style":611},[6338],{"type":26,"value":1097},{"type":30,"tagName":605,"properties":6340,"children":6341},{"style":725},[6342],{"type":26,"value":1655},{"type":30,"tagName":605,"properties":6344,"children":6345},{"style":617},[6346],{"type":26,"value":1107},{"type":30,"tagName":605,"properties":6348,"children":6349},{"style":611},[6350],{"type":26,"value":959},{"type":30,"tagName":605,"properties":6352,"children":6353},{"style":745},[6354],{"type":26,"value":1116},{"type":30,"tagName":605,"properties":6356,"children":6357},{"style":617},[6358],{"type":26,"value":1121},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6361,"children":6362},{"class":607},[6363,6368,6372],{"type":30,"tagName":605,"properties":6364,"children":6365},{"style":617},[6366],{"type":26,"value":6367},"  fast.",{"type":30,"tagName":605,"properties":6369,"children":6370},{"style":725},[6371],{"type":26,"value":4546},{"type":30,"tagName":605,"properties":6373,"children":6374},{"style":617},[6375],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6378,"children":6379},{"class":607},[6380,6385,6389],{"type":30,"tagName":605,"properties":6381,"children":6382},{"style":617},[6383],{"type":26,"value":6384},"  slow.",{"type":30,"tagName":605,"properties":6386,"children":6387},{"style":725},[6388],{"type":26,"value":4546},{"type":30,"tagName":605,"properties":6390,"children":6391},{"style":617},[6392],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6395,"children":6396},{"class":607},[6397,6402,6406],{"type":30,"tagName":605,"properties":6398,"children":6399},{"style":617},[6400],{"type":26,"value":6401},"  cross.",{"type":30,"tagName":605,"properties":6403,"children":6404},{"style":725},[6405],{"type":26,"value":4546},{"type":30,"tagName":605,"properties":6407,"children":6408},{"style":617},[6409],{"type":26,"value":1227},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6412,"children":6413},{"class":607},[6414,6418,6422,6426],{"type":30,"tagName":605,"properties":6415,"children":6416},{"style":617},[6417],{"type":26,"value":6065},{"type":30,"tagName":605,"properties":6419,"children":6420},{"style":611},[6421],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":6423,"children":6424},{"style":745},[6425],{"type":26,"value":1075},{"type":30,"tagName":605,"properties":6427,"children":6428},{"style":617},[6429],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6432,"children":6433},{"class":607},[6434,6438,6442,6446],{"type":30,"tagName":605,"properties":6435,"children":6436},{"style":617},[6437],{"type":26,"value":6092},{"type":30,"tagName":605,"properties":6439,"children":6440},{"style":611},[6441],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":6443,"children":6444},{"style":745},[6445],{"type":26,"value":1075},{"type":30,"tagName":605,"properties":6447,"children":6448},{"style":617},[6449],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6452,"children":6453},{"class":607},[6454,6458,6462,6466],{"type":30,"tagName":605,"properties":6455,"children":6456},{"style":617},[6457],{"type":26,"value":6043},{"type":30,"tagName":605,"properties":6459,"children":6460},{"style":611},[6461],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":6463,"children":6464},{"style":745},[6465],{"type":26,"value":1075},{"type":30,"tagName":605,"properties":6467,"children":6468},{"style":617},[6469],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6472,"children":6473},{"class":607},[6474,6478,6482,6486],{"type":30,"tagName":605,"properties":6475,"children":6476},{"style":617},[6477],{"type":26,"value":6118},{"type":30,"tagName":605,"properties":6479,"children":6480},{"style":611},[6481],{"type":26,"value":1135},{"type":30,"tagName":605,"properties":6483,"children":6484},{"style":745},[6485],{"type":26,"value":1007},{"type":30,"tagName":605,"properties":6487,"children":6488},{"style":617},[6489],{"type":26,"value":636},{"type":26,"value":27},{"type":30,"tagName":605,"properties":6492,"children":6493},{"class":607},[6494],{"type":30,"tagName":605,"properties":6495,"children":6496},{"style":617},[6497],{"type":26,"value":1162},{"type":26,"value":27},{"type":30,"tagName":88,"properties":6500,"children":6502,"position":6510},{"id":6501},"comment-the-why",[6503],{"type":26,"value":6504,"position":6505},"Comment the why",{"start":6506,"end":6508},{"line":42,"column":38,"offset":6507},13010,{"line":42,"column":3219,"offset":6509},13025,{"start":6511,"end":6513},{"line":42,"column":20,"offset":6512},13006,{"line":42,"column":3219,"offset":6509},{"type":26,"value":27},{"type":30,"tagName":31,"properties":6516,"children":6517,"position":6545},{},[6518,6527,6538],{"type":26,"value":6519,"position":6520},"The declarations already say what the Indicator reads and writes, and the accessors keep the code readable, so comments earn their place explaining a decision: why a bucket folds in only on the next bucket's first bar, why a session that was already running stays ",{"start":6521,"end":6524},{"line":6522,"column":20,"offset":6523},261,13027,{"line":6522,"column":6525,"offset":6526},265,13291,{"type":30,"tagName":44,"properties":6528,"children":6529,"position":6535},{},[6530],{"type":26,"value":2477,"position":6531},{"start":6532,"end":6533},{"line":6522,"column":6525,"offset":6526},{"line":6522,"column":2419,"offset":6534},13296,{"start":6536,"end":6537},{"line":6522,"column":6525,"offset":6526},{"line":6522,"column":2419,"offset":6534},{"type":26,"value":6539,"position":6540},", why a pin is honored on your machine only. The cookbook recipes are written that way.",{"start":6541,"end":6542},{"line":6522,"column":2419,"offset":6534},{"line":6522,"column":6543,"offset":6544},357,13383,{"start":6546,"end":6547},{"line":6522,"column":20,"offset":6523},{"line":6522,"column":6543,"offset":6544},{"type":26,"value":27},{"type":30,"tagName":88,"properties":6550,"children":6552,"position":6560},{"id":6551},"keep-the-names-when-you-port",[6553],{"type":26,"value":6554,"position":6555},"Keep the names when you port",{"start":6556,"end":6558},{"line":449,"column":38,"offset":6557},13389,{"line":449,"column":2044,"offset":6559},13417,{"start":6561,"end":6563},{"line":449,"column":20,"offset":6562},13385,{"line":449,"column":2044,"offset":6559},{"type":26,"value":27},{"type":30,"tagName":31,"properties":6566,"children":6567,"position":6710},{},[6568,6575,6587,6592,6605,6610,6623,6630,6643,6648,6660,6666,6679,6686,6704],{"type":26,"value":6569,"position":6570},"When porting a kScript, keep its variable names as your declaration names: ",{"start":6571,"end":6573},{"line":6525,"column":20,"offset":6572},13419,{"line":6525,"column":399,"offset":6574},13494,{"type":30,"tagName":44,"properties":6576,"children":6577,"position":6584},{},[6578],{"type":26,"value":6579,"position":6580},"param(\"lookback\", ...)",{"start":6581,"end":6582},{"line":6525,"column":399,"offset":6574},{"line":6525,"column":1771,"offset":6583},13518,{"start":6585,"end":6586},{"line":6525,"column":399,"offset":6574},{"line":6525,"column":1771,"offset":6583},{"type":26,"value":226,"position":6588},{"start":6589,"end":6590},{"line":6525,"column":1771,"offset":6583},{"line":6525,"column":330,"offset":6591},13520,{"type":30,"tagName":44,"properties":6593,"children":6594,"position":6602},{},[6595],{"type":26,"value":6596,"position":6597},"input(\"close\", ...)",{"start":6598,"end":6599},{"line":6525,"column":330,"offset":6591},{"line":6525,"column":6600,"offset":6601},123,13541,{"start":6603,"end":6604},{"line":6525,"column":330,"offset":6591},{"line":6525,"column":6600,"offset":6601},{"type":26,"value":226,"position":6606},{"start":6607,"end":6608},{"line":6525,"column":6600,"offset":6601},{"line":6525,"column":23,"offset":6609},13543,{"type":30,"tagName":44,"properties":6611,"children":6612,"position":6620},{},[6613],{"type":26,"value":6614,"position":6615},"output(\"z\", ...)",{"start":6616,"end":6617},{"line":6525,"column":23,"offset":6609},{"line":6525,"column":6618,"offset":6619},143,13561,{"start":6621,"end":6622},{"line":6525,"column":23,"offset":6609},{"line":6525,"column":6618,"offset":6619},{"type":26,"value":6624,"position":6625},". The generated accessors then read like the original (",{"start":6626,"end":6627},{"line":6525,"column":6618,"offset":6619},{"line":6525,"column":6628,"offset":6629},198,13616,{"type":30,"tagName":44,"properties":6631,"children":6632,"position":6640},{},[6633],{"type":26,"value":6634,"position":6635},"p_lookback()",{"start":6636,"end":6637},{"line":6525,"column":6628,"offset":6629},{"line":6525,"column":6638,"offset":6639},212,13630,{"start":6641,"end":6642},{"line":6525,"column":6628,"offset":6629},{"line":6525,"column":6638,"offset":6639},{"type":26,"value":226,"position":6644},{"start":6645,"end":6646},{"line":6525,"column":6638,"offset":6639},{"line":6525,"column":340,"offset":6647},13632,{"type":30,"tagName":44,"properties":6649,"children":6650,"position":6657},{},[6651],{"type":26,"value":2085,"position":6652},{"start":6653,"end":6654},{"line":6525,"column":340,"offset":6647},{"line":6525,"column":6655,"offset":6656},226,13644,{"start":6658,"end":6659},{"line":6525,"column":340,"offset":6647},{"line":6525,"column":6655,"offset":6656},{"type":26,"value":226,"position":6661},{"start":6662,"end":6663},{"line":6525,"column":6655,"offset":6656},{"line":6525,"column":6664,"offset":6665},228,13646,{"type":30,"tagName":44,"properties":6667,"children":6668,"position":6676},{},[6669],{"type":26,"value":6670,"position":6671},"out_z(z)",{"start":6672,"end":6673},{"line":6525,"column":6664,"offset":6665},{"line":6525,"column":6674,"offset":6675},238,13656,{"start":6677,"end":6678},{"line":6525,"column":6664,"offset":6665},{"line":6525,"column":6674,"offset":6675},{"type":26,"value":6680,"position":6681},"), and comparing the two on the same market is a matter of reading side by side (",{"start":6682,"end":6683},{"line":6525,"column":6674,"offset":6675},{"line":6525,"column":6684,"offset":6685},319,13737,{"type":30,"tagName":452,"properties":6687,"children":6689,"position":6699},{"href":6688},"../migrations/from-kscript.md",[6690],{"type":26,"value":6691,"position":6692},"From kScript",{"start":6693,"end":6696},{"line":6525,"column":6694,"offset":6695},320,13738,{"line":6525,"column":6697,"offset":6698},332,13750,{"start":6700,"end":6701},{"line":6525,"column":6684,"offset":6685},{"line":6525,"column":6702,"offset":6703},364,13782,{"type":26,"value":2253,"position":6705},{"start":6706,"end":6707},{"line":6525,"column":6702,"offset":6703},{"line":6525,"column":6708,"offset":6709},366,13784,{"start":6711,"end":6712},{"line":6525,"column":20,"offset":6572},{"line":6525,"column":6708,"offset":6709},{"quirksMode":6714},false,{"start":6716,"end":6717},{"line":20,"column":20,"offset":21},{"line":548,"column":20,"offset":6718},13785,1790157171367]