[{"data":1,"prerenderedAt":1923},["ShallowReactive",2],{"kscript:faq/debugging":3},{"slug":4,"filePath":5,"frontmatter":6,"rawMarkdown":9,"tree":10},"faq/debugging","faq/debugging.md",{"title":7,"description":8},"Debugging","A practical workflow for finding out why a kScript script is wrong: plot what you cannot see, read the diagnostics, isolate, and check the usual suspects.","---\ntitle: Debugging\ndescription: \"A practical workflow for finding out why a kScript script is wrong: plot what you cannot see, read the diagnostics, isolate, and check the usual suspects.\"\n---\n\n\u003Cdiv class=\"flex gap-3 mb-6\">\n  \u003Cspan class=\"inline-flex items-center gap-1.5 px-3 py-1 rounded-full bg-yellow-50 text-yellow-600 text-sm font-medium\">\n    Guide\n  \u003C/span>\n  \u003Cspan class=\"inline-flex items-center gap-1.5 px-3 py-1 rounded-full bg-gray-100 text-gray-600 text-sm font-medium\">\n    5 min read\n  \u003C/span>\n\u003C/div>\n\nYour script runs but the signal is wrong, or it draws nothing, or a line is mysteriously flat. There is no `console.log` on a chart, but there is a fast, reliable workflow. Work it in order.\n\n## 1. Plot what you cannot see\n\nThe fastest debugger in kScript is a plot. You cannot step through the bar loop, but you *can* draw any intermediate value and look at it. When a calculation is suspect, put it on the chart.\n\nTwo tools:\n\n- **`plotLine`** the intermediate series. Seeing the shape of a value over every bar usually tells you immediately whether it is doing what you think.\n- **`plotText`** to print the exact number on the latest bar. When you need the precise value, not just the shape, render it as text.\n\n```javascript title=\"scripts/probes/debugging/debug_by_plotting.ks\"\n//@version=2\ndefine(title=\"Debug By Plotting\", position=\"offchart\", axis=true)\n\ntimeseries d = ohlcv(symbol=currentSymbol, exchange=currentExchange)\n\n// When a value looks wrong, plot it directly to see what the engine computes.\ntimeseries spread    = d.high - d.low\ntimeseries spreadPct = d.close > 0 ? spread / d.close * 100 : 0\n\nplotLine(value=spreadPct, colors=[\"#ef4444\"], width=2, label=[\"Bar range %\"], desc=[\"high minus low as a percent of close, plotted to inspect it\"])\n\n// Print the exact latest value as a label so you can read the number off the chart.\nif (isLastBar) {\n  plotText(text=\"\".concat(\"range% = \", math.round(spreadPct[0] * 100) / 100), price=spreadPct[0], color=\"#f59e0b\", size=12)\n}\n```\n\n\nThe red line is the intermediate value (bar range as a percent of close) drawn across every bar, so you can watch how it behaves. The text label on the last bar prints the exact current number, rounded for readability. When your real script misbehaves, lift the suspect expression into its own `timeseries`, plot it like this, and the bug usually becomes visible at a glance: a value pinned at zero, a line that flatlines, a spike where there should be none.\n\nThis works for any expression. Wrap the part you doubt in a `plotLine`, ship it offchart, and read the answer off the chart instead of guessing.\n\n## 2. Read the runtime diagnostics\n\nIf a script compiles and runs but draws nothing, it is usually not a hard error. kScript catches the \"ran but blank\" cases and surfaces a **runtime diagnostic** in the editor instead of leaving you with an empty panel. Each has a code that points straight at the cause:\n\n- `COMPUTE_ZERO_BARS` means no source data reached the bar loop. Nothing iterated, so nothing drew.\n- `COMPUTE_ALL_NAN` means a plotted series was `na` on every bar: an indicator that never warmed up, a wrong source member, or an anchor that never reset.\n- `RENDER_SPARSE_OUTPUT` means very few finite points relative to the bar count, often a condition that almost never fires.\n\nThese codes are the engine telling you exactly where to look. The full table, with every code, its severity, and the matching fix, is in [Common Errors](/kscript/faq/common-errors). Read the diagnostic first; it frequently saves you the whole hunt.\n\n## 3. Isolate\n\nWhen several things are plotted and one is wrong, stop reasoning about all of them at once. Comment out plots until only the suspect series remains, then narrow until the bad value is obvious.\n\n```javascript\n// plotLine(value=fast, ...)\n// plotLine(value=slow, ...)\nplotLine(value=signal, colors=[\"#ef4444\"], width=2, label=[\"Signal\"], desc=[\"the one series under investigation\"])\n```\nReducing the script to a single output removes every distraction and lets the diagnostics speak about exactly the value you care about. Once that one series is correct, bring the others back one at a time. This is the cheapest way to find which input poisoned a calculation downstream.\n\n## 4. The usual suspects\n\nMost \"wrong script\" bugs are one of a handful of patterns. Scan this list against your symptom:\n\n- **Flat or blank line.** A series-returning value got held in a `var` instead of a `timeseries`, so it kept only the current scalar and lost its shape. Promote it to `timeseries`. (See [Variables](/kscript/core-concepts/core-variables) for the `var` vs `timeseries` split.)\n- **Line starts blank, then appears.** The indicator has not warmed up. Anything with a period (a 50-bar EMA, an RSI) is `na` until it has enough bars. That leading gap is expected; make sure your logic tolerates `na` before the period fills.\n- **Flat or blank anchored value.** Too little loaded history. An anchored calculation that never crosses its anchor boundary (a monthly anchor inside a window shorter than a month) stays `na`. Load more bars or pick a shorter anchor.\n- **\"Zero bars to compute.\"** No source reached the loop. An offchart script with no source has no timeline to walk. Add an `ohlcv(symbol=currentSymbol, exchange=currentExchange)` anchor so the bar loop has data, even if the indicator does not obviously use price.\n- **Everything is `na` for no clear reason.** A wrong source member. Member names are not checked at compile time, so reading `funding.close` when the field is `funding.value` silently yields `na` on every bar. Check the member list for that source type in [Data Sources](/kscript/core-concepts/data-sources).\n\nWalk these top to bottom. The fix for each is one line, and the diagnostic from step 2 usually tells you which one you are looking at.\n\n## See also\n\n- [Common Errors](/kscript/faq/common-errors) for the full diagnostic table and every hard-error message.\n- [Execution Model](/kscript/core-concepts/execution-model) for why a script needs a source to reach the bar loop.\n- [Plotting](/kscript/functions/plotting) for `plotLine`, `plotText`, and the rest of the output family.\n",{"type":11,"children":12,"data":1916,"position":1918},"root",[13,100,101,137,138,156,157,196,197,212,213,298,299,805,806,841,842,876,877,894,895,934,935,1051,1052,1091,1092,1108,1109,1124,1125,1233,1234,1249,1250,1266,1267,1282,1283,1743,1744,1759,1760,1776,1777],{"type":14,"tagName":15,"properties":16,"children":21,"position":95},"element","div",{"className":17},[18,19,20],"flex","gap-3","mb-6",[22,34,63,69,88],{"type":23,"value":24,"position":25},"text","\n  ",{"start":26,"end":30},{"line":27,"column":28,"offset":29},1,30,29,{"line":31,"column":32,"offset":33},2,3,32,{"type":14,"tagName":35,"properties":36,"children":48,"position":58},"span",{"className":37},[38,39,40,41,42,43,44,45,46,47],"inline-flex","items-center","gap-1.5","px-3","py-1","rounded-full","bg-yellow-50","text-yellow-600","text-sm","font-medium",[49],{"type":23,"value":50,"position":51},"\n    Guide\n  ",{"start":52,"end":55},{"line":31,"column":53,"offset":54},122,151,{"line":56,"column":32,"offset":57},4,164,{"start":59,"end":60},{"line":31,"column":32,"offset":33},{"line":56,"column":61,"offset":62},10,171,{"type":23,"value":24,"position":64},{"start":65,"end":66},{"line":56,"column":61,"offset":62},{"line":67,"column":32,"offset":68},5,174,{"type":14,"tagName":35,"properties":70,"children":74,"position":84},{"className":71},[38,39,40,41,42,43,72,73,46,47],"bg-gray-100","text-gray-600",[75],{"type":23,"value":76,"position":77},"\n    5 min read\n  ",{"start":78,"end":81},{"line":67,"column":79,"offset":80},119,290,{"line":82,"column":32,"offset":83},7,308,{"start":85,"end":86},{"line":67,"column":32,"offset":68},{"line":82,"column":61,"offset":87},315,{"type":23,"value":89,"position":90},"\n",{"start":91,"end":92},{"line":82,"column":61,"offset":87},{"line":93,"column":27,"offset":94},8,316,{"start":96,"end":98},{"line":27,"column":27,"offset":97},0,{"line":93,"column":82,"offset":99},322,{"type":23,"value":89},{"type":14,"tagName":102,"properties":103,"children":104,"position":134},"p",{},[105,113,127],{"type":23,"value":106,"position":107},"Your script runs but the signal is wrong, or it draws nothing, or a line is mysteriously flat. There is no ",{"start":108,"end":110},{"line":61,"column":27,"offset":109},324,{"line":61,"column":111,"offset":112},108,431,{"type":14,"tagName":114,"properties":115,"children":116,"position":124},"code",{},[117],{"type":23,"value":118,"position":119},"console.log",{"start":120,"end":121},{"line":61,"column":111,"offset":112},{"line":61,"column":122,"offset":123},121,444,{"start":125,"end":126},{"line":61,"column":111,"offset":112},{"line":61,"column":122,"offset":123},{"type":23,"value":128,"position":129}," on a chart, but there is a fast, reliable workflow. Work it in order.",{"start":130,"end":131},{"line":61,"column":122,"offset":123},{"line":61,"column":132,"offset":133},191,514,{"start":135,"end":136},{"line":61,"column":27,"offset":109},{"line":61,"column":132,"offset":133},{"type":23,"value":89},{"type":14,"tagName":139,"properties":140,"children":142,"position":152},"h2",{"id":141},"1.-plot-what-you-cannot-see",[143],{"type":23,"value":144,"position":145},"1. Plot what you cannot see",{"start":146,"end":149},{"line":147,"column":56,"offset":148},12,519,{"line":147,"column":150,"offset":151},31,546,{"start":153,"end":155},{"line":147,"column":27,"offset":154},516,{"line":147,"column":150,"offset":151},{"type":23,"value":89},{"type":14,"tagName":102,"properties":158,"children":159,"position":193},{},[160,169,187],{"type":23,"value":161,"position":162},"The fastest debugger in kScript is a plot. You cannot step through the bar loop, but you ",{"start":163,"end":166},{"line":164,"column":27,"offset":165},14,548,{"line":164,"column":167,"offset":168},90,637,{"type":14,"tagName":170,"properties":171,"children":172,"position":182},"em",{},[173],{"type":23,"value":174,"position":175},"can",{"start":176,"end":179},{"line":164,"column":177,"offset":178},91,638,{"line":164,"column":180,"offset":181},94,641,{"start":183,"end":184},{"line":164,"column":167,"offset":168},{"line":164,"column":185,"offset":186},95,642,{"type":23,"value":188,"position":189}," draw any intermediate value and look at it. When a calculation is suspect, put it on the chart.",{"start":190,"end":191},{"line":164,"column":185,"offset":186},{"line":164,"column":132,"offset":192},738,{"start":194,"end":195},{"line":164,"column":27,"offset":165},{"line":164,"column":132,"offset":192},{"type":23,"value":89},{"type":14,"tagName":102,"properties":198,"children":199,"position":209},{},[200],{"type":23,"value":201,"position":202},"Two tools:",{"start":203,"end":206},{"line":204,"column":27,"offset":205},16,740,{"line":204,"column":207,"offset":208},11,750,{"start":210,"end":211},{"line":204,"column":27,"offset":205},{"line":204,"column":207,"offset":208},{"type":23,"value":89},{"type":14,"tagName":214,"properties":215,"children":216,"position":295},"ul",{},[217,218,257,258,294],{"type":23,"value":89},{"type":14,"tagName":219,"properties":220,"children":221,"position":253},"li",{},[222,247],{"type":14,"tagName":223,"properties":224,"children":225,"position":241},"strong",{},[226],{"type":14,"tagName":114,"properties":227,"children":228,"position":238},{},[229],{"type":23,"value":230,"position":231},"plotLine",{"start":232,"end":235},{"line":233,"column":67,"offset":234},18,756,{"line":233,"column":236,"offset":237},15,766,{"start":239,"end":240},{"line":233,"column":67,"offset":234},{"line":233,"column":236,"offset":237},{"start":242,"end":244},{"line":233,"column":32,"offset":243},754,{"line":233,"column":245,"offset":246},17,768,{"type":23,"value":248,"position":249}," the intermediate series. Seeing the shape of a value over every bar usually tells you immediately whether it is doing what you think.",{"start":250,"end":251},{"line":233,"column":245,"offset":246},{"line":233,"column":54,"offset":252},902,{"start":254,"end":256},{"line":233,"column":27,"offset":255},752,{"line":233,"column":54,"offset":252},{"type":23,"value":89},{"type":14,"tagName":219,"properties":259,"children":260,"position":290},{},[261,283],{"type":14,"tagName":223,"properties":262,"children":263,"position":278},{},[264],{"type":14,"tagName":114,"properties":265,"children":266,"position":275},{},[267],{"type":23,"value":268,"position":269},"plotText",{"start":270,"end":273},{"line":271,"column":67,"offset":272},19,907,{"line":271,"column":236,"offset":274},917,{"start":276,"end":277},{"line":271,"column":67,"offset":272},{"line":271,"column":236,"offset":274},{"start":279,"end":281},{"line":271,"column":32,"offset":280},905,{"line":271,"column":245,"offset":282},919,{"type":23,"value":284,"position":285}," to print the exact number on the latest bar. When you need the precise value, not just the shape, render it as text.",{"start":286,"end":287},{"line":271,"column":245,"offset":282},{"line":271,"column":288,"offset":289},134,1036,{"start":291,"end":293},{"line":271,"column":27,"offset":292},903,{"line":271,"column":288,"offset":289},{"type":23,"value":89},{"start":296,"end":297},{"line":233,"column":27,"offset":255},{"line":271,"column":288,"offset":289},{"type":23,"value":89},{"type":11,"children":300},[301],{"type":14,"tagName":302,"properties":303,"children":308,"data":-1},"pre",{"class":304,"style":305,"tabindex":306,"title":307},"shiki shiki-themes github-dark github-light","--shiki-dark:#e1e4e8;--shiki-light:#24292e;--shiki-dark-bg:#24292e;--shiki-light-bg:#fff","0","scripts/probes/debugging/debug_by_plotting.ks",[309],{"type":14,"tagName":114,"properties":310,"children":311},{},[312,322,323,384,385,388,389,429,430,433,434,442,443,470,471,536,537,540,541,631,632,635,636,644,645,658,659,796,797],{"type":14,"tagName":35,"properties":313,"children":315},{"class":314},"line",[316],{"type":14,"tagName":35,"properties":317,"children":319},{"style":318},"--shiki-dark:#6A737D;--shiki-light:#6A737D",[320],{"type":23,"value":321},"//@version=2",{"type":23,"value":89},{"type":14,"tagName":35,"properties":324,"children":325},{"class":314},[326,332,338,344,350,355,359,364,369,373,379],{"type":14,"tagName":35,"properties":327,"children":329},{"style":328},"--shiki-dark:#B392F0;--shiki-light:#6F42C1",[330],{"type":23,"value":331},"define",{"type":14,"tagName":35,"properties":333,"children":335},{"style":334},"--shiki-dark:#E1E4E8;--shiki-light:#24292E",[336],{"type":23,"value":337},"(title",{"type":14,"tagName":35,"properties":339,"children":341},{"style":340},"--shiki-dark:#F97583;--shiki-light:#D73A49",[342],{"type":23,"value":343},"=",{"type":14,"tagName":35,"properties":345,"children":347},{"style":346},"--shiki-dark:#9ECBFF;--shiki-light:#032F62",[348],{"type":23,"value":349},"\"Debug By Plotting\"",{"type":14,"tagName":35,"properties":351,"children":352},{"style":334},[353],{"type":23,"value":354},", position",{"type":14,"tagName":35,"properties":356,"children":357},{"style":340},[358],{"type":23,"value":343},{"type":14,"tagName":35,"properties":360,"children":361},{"style":346},[362],{"type":23,"value":363},"\"offchart\"",{"type":14,"tagName":35,"properties":365,"children":366},{"style":334},[367],{"type":23,"value":368},", axis",{"type":14,"tagName":35,"properties":370,"children":371},{"style":340},[372],{"type":23,"value":343},{"type":14,"tagName":35,"properties":374,"children":376},{"style":375},"--shiki-dark:#79B8FF;--shiki-light:#005CC5",[377],{"type":23,"value":378},"true",{"type":14,"tagName":35,"properties":380,"children":381},{"style":334},[382],{"type":23,"value":383},")",{"type":23,"value":89},{"type":14,"tagName":35,"properties":386,"children":387},{"class":314},[],{"type":23,"value":89},{"type":14,"tagName":35,"properties":390,"children":391},{"class":314},[392,397,401,406,411,415,420,424],{"type":14,"tagName":35,"properties":393,"children":394},{"style":334},[395],{"type":23,"value":396},"timeseries d ",{"type":14,"tagName":35,"properties":398,"children":399},{"style":340},[400],{"type":23,"value":343},{"type":14,"tagName":35,"properties":402,"children":403},{"style":328},[404],{"type":23,"value":405}," ohlcv",{"type":14,"tagName":35,"properties":407,"children":408},{"style":334},[409],{"type":23,"value":410},"(symbol",{"type":14,"tagName":35,"properties":412,"children":413},{"style":340},[414],{"type":23,"value":343},{"type":14,"tagName":35,"properties":416,"children":417},{"style":334},[418],{"type":23,"value":419},"currentSymbol, exchange",{"type":14,"tagName":35,"properties":421,"children":422},{"style":340},[423],{"type":23,"value":343},{"type":14,"tagName":35,"properties":425,"children":426},{"style":334},[427],{"type":23,"value":428},"currentExchange)",{"type":23,"value":89},{"type":14,"tagName":35,"properties":431,"children":432},{"class":314},[],{"type":23,"value":89},{"type":14,"tagName":35,"properties":435,"children":436},{"class":314},[437],{"type":14,"tagName":35,"properties":438,"children":439},{"style":318},[440],{"type":23,"value":441},"// When a value looks wrong, plot it directly to see what the engine computes.",{"type":23,"value":89},{"type":14,"tagName":35,"properties":444,"children":445},{"class":314},[446,451,455,460,465],{"type":14,"tagName":35,"properties":447,"children":448},{"style":334},[449],{"type":23,"value":450},"timeseries spread    ",{"type":14,"tagName":35,"properties":452,"children":453},{"style":340},[454],{"type":23,"value":343},{"type":14,"tagName":35,"properties":456,"children":457},{"style":334},[458],{"type":23,"value":459}," d.high ",{"type":14,"tagName":35,"properties":461,"children":462},{"style":340},[463],{"type":23,"value":464},"-",{"type":14,"tagName":35,"properties":466,"children":467},{"style":334},[468],{"type":23,"value":469}," d.low",{"type":23,"value":89},{"type":14,"tagName":35,"properties":472,"children":473},{"class":314},[474,479,483,488,493,498,503,508,513,517,522,527,532],{"type":14,"tagName":35,"properties":475,"children":476},{"style":334},[477],{"type":23,"value":478},"timeseries spreadPct ",{"type":14,"tagName":35,"properties":480,"children":481},{"style":340},[482],{"type":23,"value":343},{"type":14,"tagName":35,"properties":484,"children":485},{"style":334},[486],{"type":23,"value":487}," d.close ",{"type":14,"tagName":35,"properties":489,"children":490},{"style":340},[491],{"type":23,"value":492},">",{"type":14,"tagName":35,"properties":494,"children":495},{"style":375},[496],{"type":23,"value":497}," 0",{"type":14,"tagName":35,"properties":499,"children":500},{"style":340},[501],{"type":23,"value":502}," ?",{"type":14,"tagName":35,"properties":504,"children":505},{"style":334},[506],{"type":23,"value":507}," spread ",{"type":14,"tagName":35,"properties":509,"children":510},{"style":340},[511],{"type":23,"value":512},"/",{"type":14,"tagName":35,"properties":514,"children":515},{"style":334},[516],{"type":23,"value":487},{"type":14,"tagName":35,"properties":518,"children":519},{"style":340},[520],{"type":23,"value":521},"*",{"type":14,"tagName":35,"properties":523,"children":524},{"style":375},[525],{"type":23,"value":526}," 100",{"type":14,"tagName":35,"properties":528,"children":529},{"style":340},[530],{"type":23,"value":531}," :",{"type":14,"tagName":35,"properties":533,"children":534},{"style":375},[535],{"type":23,"value":497},{"type":23,"value":89},{"type":14,"tagName":35,"properties":538,"children":539},{"class":314},[],{"type":23,"value":89},{"type":14,"tagName":35,"properties":542,"children":543},{"class":314},[544,548,553,557,562,566,571,576,581,585,590,595,599,603,608,613,617,621,626],{"type":14,"tagName":35,"properties":545,"children":546},{"style":328},[547],{"type":23,"value":230},{"type":14,"tagName":35,"properties":549,"children":550},{"style":334},[551],{"type":23,"value":552},"(value",{"type":14,"tagName":35,"properties":554,"children":555},{"style":340},[556],{"type":23,"value":343},{"type":14,"tagName":35,"properties":558,"children":559},{"style":334},[560],{"type":23,"value":561},"spreadPct, colors",{"type":14,"tagName":35,"properties":563,"children":564},{"style":340},[565],{"type":23,"value":343},{"type":14,"tagName":35,"properties":567,"children":568},{"style":334},[569],{"type":23,"value":570},"[",{"type":14,"tagName":35,"properties":572,"children":573},{"style":346},[574],{"type":23,"value":575},"\"#ef4444\"",{"type":14,"tagName":35,"properties":577,"children":578},{"style":334},[579],{"type":23,"value":580},"], width",{"type":14,"tagName":35,"properties":582,"children":583},{"style":340},[584],{"type":23,"value":343},{"type":14,"tagName":35,"properties":586,"children":587},{"style":375},[588],{"type":23,"value":589},"2",{"type":14,"tagName":35,"properties":591,"children":592},{"style":334},[593],{"type":23,"value":594},", label",{"type":14,"tagName":35,"properties":596,"children":597},{"style":340},[598],{"type":23,"value":343},{"type":14,"tagName":35,"properties":600,"children":601},{"style":334},[602],{"type":23,"value":570},{"type":14,"tagName":35,"properties":604,"children":605},{"style":346},[606],{"type":23,"value":607},"\"Bar range %\"",{"type":14,"tagName":35,"properties":609,"children":610},{"style":334},[611],{"type":23,"value":612},"], desc",{"type":14,"tagName":35,"properties":614,"children":615},{"style":340},[616],{"type":23,"value":343},{"type":14,"tagName":35,"properties":618,"children":619},{"style":334},[620],{"type":23,"value":570},{"type":14,"tagName":35,"properties":622,"children":623},{"style":346},[624],{"type":23,"value":625},"\"high minus low as a percent of close, plotted to inspect it\"",{"type":14,"tagName":35,"properties":627,"children":628},{"style":334},[629],{"type":23,"value":630},"])",{"type":23,"value":89},{"type":14,"tagName":35,"properties":633,"children":634},{"class":314},[],{"type":23,"value":89},{"type":14,"tagName":35,"properties":637,"children":638},{"class":314},[639],{"type":14,"tagName":35,"properties":640,"children":641},{"style":318},[642],{"type":23,"value":643},"// Print the exact latest value as a label so you can read the number off the chart.",{"type":23,"value":89},{"type":14,"tagName":35,"properties":646,"children":647},{"class":314},[648,653],{"type":14,"tagName":35,"properties":649,"children":650},{"style":340},[651],{"type":23,"value":652},"if",{"type":14,"tagName":35,"properties":654,"children":655},{"style":334},[656],{"type":23,"value":657}," (isLastBar) {",{"type":23,"value":89},{"type":14,"tagName":35,"properties":660,"children":661},{"class":314},[662,667,672,676,681,686,691,696,701,706,711,716,720,725,729,733,738,742,746,751,755,760,764,769,773,778,783,787,792],{"type":14,"tagName":35,"properties":663,"children":664},{"style":328},[665],{"type":23,"value":666},"  plotText",{"type":14,"tagName":35,"properties":668,"children":669},{"style":334},[670],{"type":23,"value":671},"(text",{"type":14,"tagName":35,"properties":673,"children":674},{"style":340},[675],{"type":23,"value":343},{"type":14,"tagName":35,"properties":677,"children":678},{"style":346},[679],{"type":23,"value":680},"\"\"",{"type":14,"tagName":35,"properties":682,"children":683},{"style":334},[684],{"type":23,"value":685},".",{"type":14,"tagName":35,"properties":687,"children":688},{"style":328},[689],{"type":23,"value":690},"concat",{"type":14,"tagName":35,"properties":692,"children":693},{"style":334},[694],{"type":23,"value":695},"(",{"type":14,"tagName":35,"properties":697,"children":698},{"style":346},[699],{"type":23,"value":700},"\"range% = \"",{"type":14,"tagName":35,"properties":702,"children":703},{"style":334},[704],{"type":23,"value":705},", math.",{"type":14,"tagName":35,"properties":707,"children":708},{"style":328},[709],{"type":23,"value":710},"round",{"type":14,"tagName":35,"properties":712,"children":713},{"style":334},[714],{"type":23,"value":715},"(spreadPct[",{"type":14,"tagName":35,"properties":717,"children":718},{"style":375},[719],{"type":23,"value":306},{"type":14,"tagName":35,"properties":721,"children":722},{"style":334},[723],{"type":23,"value":724},"] ",{"type":14,"tagName":35,"properties":726,"children":727},{"style":340},[728],{"type":23,"value":521},{"type":14,"tagName":35,"properties":730,"children":731},{"style":375},[732],{"type":23,"value":526},{"type":14,"tagName":35,"properties":734,"children":735},{"style":334},[736],{"type":23,"value":737},") ",{"type":14,"tagName":35,"properties":739,"children":740},{"style":340},[741],{"type":23,"value":512},{"type":14,"tagName":35,"properties":743,"children":744},{"style":375},[745],{"type":23,"value":526},{"type":14,"tagName":35,"properties":747,"children":748},{"style":334},[749],{"type":23,"value":750},"), price",{"type":14,"tagName":35,"properties":752,"children":753},{"style":340},[754],{"type":23,"value":343},{"type":14,"tagName":35,"properties":756,"children":757},{"style":334},[758],{"type":23,"value":759},"spreadPct[",{"type":14,"tagName":35,"properties":761,"children":762},{"style":375},[763],{"type":23,"value":306},{"type":14,"tagName":35,"properties":765,"children":766},{"style":334},[767],{"type":23,"value":768},"], color",{"type":14,"tagName":35,"properties":770,"children":771},{"style":340},[772],{"type":23,"value":343},{"type":14,"tagName":35,"properties":774,"children":775},{"style":346},[776],{"type":23,"value":777},"\"#f59e0b\"",{"type":14,"tagName":35,"properties":779,"children":780},{"style":334},[781],{"type":23,"value":782},", size",{"type":14,"tagName":35,"properties":784,"children":785},{"style":340},[786],{"type":23,"value":343},{"type":14,"tagName":35,"properties":788,"children":789},{"style":375},[790],{"type":23,"value":791},"12",{"type":14,"tagName":35,"properties":793,"children":794},{"style":334},[795],{"type":23,"value":383},{"type":23,"value":89},{"type":14,"tagName":35,"properties":798,"children":799},{"class":314},[800],{"type":14,"tagName":35,"properties":801,"children":802},{"style":334},[803],{"type":23,"value":804},"}",{"type":23,"value":89},{"type":14,"tagName":102,"properties":807,"children":808,"position":838},{},[809,818,831],{"type":23,"value":810,"position":811},"The red line is the intermediate value (bar range as a percent of close) drawn across every bar, so you can watch how it behaves. The text label on the last bar prints the exact current number, rounded for readability. When your real script misbehaves, lift the suspect expression into its own ",{"start":812,"end":815},{"line":813,"column":27,"offset":814},40,1821,{"line":813,"column":816,"offset":817},295,2115,{"type":14,"tagName":114,"properties":819,"children":820,"position":828},{},[821],{"type":23,"value":822,"position":823},"timeseries",{"start":824,"end":825},{"line":813,"column":816,"offset":817},{"line":813,"column":826,"offset":827},307,2127,{"start":829,"end":830},{"line":813,"column":816,"offset":817},{"line":813,"column":826,"offset":827},{"type":23,"value":832,"position":833},", plot it like this, and the bug usually becomes visible at a glance: a value pinned at zero, a line that flatlines, a spike where there should be none.",{"start":834,"end":835},{"line":813,"column":826,"offset":827},{"line":813,"column":836,"offset":837},459,2279,{"start":839,"end":840},{"line":813,"column":27,"offset":814},{"line":813,"column":836,"offset":837},{"type":23,"value":89},{"type":14,"tagName":102,"properties":843,"children":844,"position":873},{},[845,854,866],{"type":23,"value":846,"position":847},"This works for any expression. Wrap the part you doubt in a ",{"start":848,"end":851},{"line":849,"column":27,"offset":850},42,2281,{"line":849,"column":852,"offset":853},61,2341,{"type":14,"tagName":114,"properties":855,"children":856,"position":863},{},[857],{"type":23,"value":230,"position":858},{"start":859,"end":860},{"line":849,"column":852,"offset":853},{"line":849,"column":861,"offset":862},71,2351,{"start":864,"end":865},{"line":849,"column":852,"offset":853},{"line":849,"column":861,"offset":862},{"type":23,"value":867,"position":868},", ship it offchart, and read the answer off the chart instead of guessing.",{"start":869,"end":870},{"line":849,"column":861,"offset":862},{"line":849,"column":871,"offset":872},145,2425,{"start":874,"end":875},{"line":849,"column":27,"offset":850},{"line":849,"column":871,"offset":872},{"type":23,"value":89},{"type":14,"tagName":139,"properties":878,"children":880,"position":890},{"id":879},"2.-read-the-runtime-diagnostics",[881],{"type":23,"value":882,"position":883},"2. Read the runtime diagnostics",{"start":884,"end":887},{"line":885,"column":56,"offset":886},44,2430,{"line":885,"column":888,"offset":889},35,2461,{"start":891,"end":893},{"line":885,"column":27,"offset":892},2427,{"line":885,"column":888,"offset":889},{"type":23,"value":89},{"type":14,"tagName":102,"properties":896,"children":897,"position":931},{},[898,907,924],{"type":23,"value":899,"position":900},"If a script compiles and runs but draws nothing, it is usually not a hard error. kScript catches the \"ran but blank\" cases and surfaces a ",{"start":901,"end":904},{"line":902,"column":27,"offset":903},46,2463,{"line":902,"column":905,"offset":906},139,2601,{"type":14,"tagName":223,"properties":908,"children":909,"position":919},{},[910],{"type":23,"value":911,"position":912},"runtime diagnostic",{"start":913,"end":916},{"line":902,"column":914,"offset":915},141,2603,{"line":902,"column":917,"offset":918},159,2621,{"start":920,"end":921},{"line":902,"column":905,"offset":906},{"line":902,"column":922,"offset":923},161,2623,{"type":23,"value":925,"position":926}," in the editor instead of leaving you with an empty panel. Each has a code that points straight at the cause:",{"start":927,"end":928},{"line":902,"column":922,"offset":923},{"line":902,"column":929,"offset":930},270,2732,{"start":932,"end":933},{"line":902,"column":27,"offset":903},{"line":902,"column":929,"offset":930},{"type":23,"value":89},{"type":14,"tagName":214,"properties":936,"children":937,"position":1048},{},[938,939,968,969,1017,1018,1047],{"type":23,"value":89},{"type":14,"tagName":219,"properties":940,"children":941,"position":964},{},[942,957],{"type":14,"tagName":114,"properties":943,"children":944,"position":954},{},[945],{"type":23,"value":946,"position":947},"COMPUTE_ZERO_BARS",{"start":948,"end":951},{"line":949,"column":32,"offset":950},48,2736,{"line":949,"column":952,"offset":953},22,2755,{"start":955,"end":956},{"line":949,"column":32,"offset":950},{"line":949,"column":952,"offset":953},{"type":23,"value":958,"position":959}," means no source data reached the bar loop. Nothing iterated, so nothing drew.",{"start":960,"end":961},{"line":949,"column":952,"offset":953},{"line":949,"column":962,"offset":963},100,2833,{"start":965,"end":967},{"line":949,"column":27,"offset":966},2734,{"line":949,"column":962,"offset":963},{"type":23,"value":89},{"type":14,"tagName":219,"properties":970,"children":971,"position":1013},{},[972,987,993,1006],{"type":14,"tagName":114,"properties":973,"children":974,"position":984},{},[975],{"type":23,"value":976,"position":977},"COMPUTE_ALL_NAN",{"start":978,"end":981},{"line":979,"column":32,"offset":980},49,2836,{"line":979,"column":982,"offset":983},20,2853,{"start":985,"end":986},{"line":979,"column":32,"offset":980},{"line":979,"column":982,"offset":983},{"type":23,"value":988,"position":989}," means a plotted series was ",{"start":990,"end":991},{"line":979,"column":982,"offset":983},{"line":979,"column":949,"offset":992},2881,{"type":14,"tagName":114,"properties":994,"children":995,"position":1003},{},[996],{"type":23,"value":997,"position":998},"na",{"start":999,"end":1000},{"line":979,"column":949,"offset":992},{"line":979,"column":1001,"offset":1002},52,2885,{"start":1004,"end":1005},{"line":979,"column":949,"offset":992},{"line":979,"column":1001,"offset":1002},{"type":23,"value":1007,"position":1008}," on every bar: an indicator that never warmed up, a wrong source member, or an anchor that never reset.",{"start":1009,"end":1010},{"line":979,"column":1001,"offset":1002},{"line":979,"column":1011,"offset":1012},155,2988,{"start":1014,"end":1016},{"line":979,"column":27,"offset":1015},2834,{"line":979,"column":1011,"offset":1012},{"type":23,"value":89},{"type":14,"tagName":219,"properties":1019,"children":1020,"position":1043},{},[1021,1036],{"type":14,"tagName":114,"properties":1022,"children":1023,"position":1033},{},[1024],{"type":23,"value":1025,"position":1026},"RENDER_SPARSE_OUTPUT",{"start":1027,"end":1030},{"line":1028,"column":32,"offset":1029},50,2991,{"line":1028,"column":1031,"offset":1032},25,3013,{"start":1034,"end":1035},{"line":1028,"column":32,"offset":1029},{"line":1028,"column":1031,"offset":1032},{"type":23,"value":1037,"position":1038}," means very few finite points relative to the bar count, often a condition that almost never fires.",{"start":1039,"end":1040},{"line":1028,"column":1031,"offset":1032},{"line":1028,"column":1041,"offset":1042},124,3112,{"start":1044,"end":1046},{"line":1028,"column":27,"offset":1045},2989,{"line":1028,"column":1041,"offset":1042},{"type":23,"value":89},{"start":1049,"end":1050},{"line":949,"column":27,"offset":966},{"line":1028,"column":1041,"offset":1042},{"type":23,"value":89},{"type":14,"tagName":102,"properties":1053,"children":1054,"position":1088},{},[1055,1063,1081],{"type":23,"value":1056,"position":1057},"These codes are the engine telling you exactly where to look. The full table, with every code, its severity, and the matching fix, is in ",{"start":1058,"end":1060},{"line":1001,"column":27,"offset":1059},3114,{"line":1001,"column":1061,"offset":1062},138,3251,{"type":14,"tagName":1064,"properties":1065,"children":1067,"position":1076},"a",{"href":1066},"/kscript/faq/common-errors",[1068],{"type":23,"value":1069,"position":1070},"Common Errors",{"start":1071,"end":1073},{"line":1001,"column":905,"offset":1072},3252,{"line":1001,"column":1074,"offset":1075},152,3265,{"start":1077,"end":1078},{"line":1001,"column":1061,"offset":1062},{"line":1001,"column":1079,"offset":1080},181,3294,{"type":23,"value":1082,"position":1083},". Read the diagnostic first; it frequently saves you the whole hunt.",{"start":1084,"end":1085},{"line":1001,"column":1079,"offset":1080},{"line":1001,"column":1086,"offset":1087},249,3362,{"start":1089,"end":1090},{"line":1001,"column":27,"offset":1059},{"line":1001,"column":1086,"offset":1087},{"type":23,"value":89},{"type":14,"tagName":139,"properties":1093,"children":1095,"position":1104},{"id":1094},"3.-isolate",[1096],{"type":23,"value":1097,"position":1098},"3. Isolate",{"start":1099,"end":1102},{"line":1100,"column":56,"offset":1101},54,3367,{"line":1100,"column":164,"offset":1103},3377,{"start":1105,"end":1107},{"line":1100,"column":27,"offset":1106},3364,{"line":1100,"column":164,"offset":1103},{"type":23,"value":89},{"type":14,"tagName":102,"properties":1110,"children":1111,"position":1121},{},[1112],{"type":23,"value":1113,"position":1114},"When several things are plotted and one is wrong, stop reasoning about all of them at once. Comment out plots until only the suspect series remains, then narrow until the bad value is obvious.",{"start":1115,"end":1118},{"line":1116,"column":27,"offset":1117},56,3379,{"line":1116,"column":1119,"offset":1120},193,3571,{"start":1122,"end":1123},{"line":1116,"column":27,"offset":1117},{"line":1116,"column":1119,"offset":1120},{"type":23,"value":89},{"type":11,"children":1126},[1127],{"type":14,"tagName":302,"properties":1128,"children":1129,"data":-1},{"class":304,"style":305,"tabindex":306},[1130],{"type":14,"tagName":114,"properties":1131,"children":1132},{},[1133,1141,1142,1150,1151],{"type":14,"tagName":35,"properties":1134,"children":1135},{"class":314},[1136],{"type":14,"tagName":35,"properties":1137,"children":1138},{"style":318},[1139],{"type":23,"value":1140},"// plotLine(value=fast, ...)",{"type":23,"value":89},{"type":14,"tagName":35,"properties":1143,"children":1144},{"class":314},[1145],{"type":14,"tagName":35,"properties":1146,"children":1147},{"style":318},[1148],{"type":23,"value":1149},"// plotLine(value=slow, ...)",{"type":23,"value":89},{"type":14,"tagName":35,"properties":1152,"children":1153},{"class":314},[1154,1158,1162,1166,1171,1175,1179,1183,1187,1191,1195,1199,1203,1207,1212,1216,1220,1224,1229],{"type":14,"tagName":35,"properties":1155,"children":1156},{"style":328},[1157],{"type":23,"value":230},{"type":14,"tagName":35,"properties":1159,"children":1160},{"style":334},[1161],{"type":23,"value":552},{"type":14,"tagName":35,"properties":1163,"children":1164},{"style":340},[1165],{"type":23,"value":343},{"type":14,"tagName":35,"properties":1167,"children":1168},{"style":334},[1169],{"type":23,"value":1170},"signal, colors",{"type":14,"tagName":35,"properties":1172,"children":1173},{"style":340},[1174],{"type":23,"value":343},{"type":14,"tagName":35,"properties":1176,"children":1177},{"style":334},[1178],{"type":23,"value":570},{"type":14,"tagName":35,"properties":1180,"children":1181},{"style":346},[1182],{"type":23,"value":575},{"type":14,"tagName":35,"properties":1184,"children":1185},{"style":334},[1186],{"type":23,"value":580},{"type":14,"tagName":35,"properties":1188,"children":1189},{"style":340},[1190],{"type":23,"value":343},{"type":14,"tagName":35,"properties":1192,"children":1193},{"style":375},[1194],{"type":23,"value":589},{"type":14,"tagName":35,"properties":1196,"children":1197},{"style":334},[1198],{"type":23,"value":594},{"type":14,"tagName":35,"properties":1200,"children":1201},{"style":340},[1202],{"type":23,"value":343},{"type":14,"tagName":35,"properties":1204,"children":1205},{"style":334},[1206],{"type":23,"value":570},{"type":14,"tagName":35,"properties":1208,"children":1209},{"style":346},[1210],{"type":23,"value":1211},"\"Signal\"",{"type":14,"tagName":35,"properties":1213,"children":1214},{"style":334},[1215],{"type":23,"value":612},{"type":14,"tagName":35,"properties":1217,"children":1218},{"style":340},[1219],{"type":23,"value":343},{"type":14,"tagName":35,"properties":1221,"children":1222},{"style":334},[1223],{"type":23,"value":570},{"type":14,"tagName":35,"properties":1225,"children":1226},{"style":346},[1227],{"type":23,"value":1228},"\"the one series under investigation\"",{"type":14,"tagName":35,"properties":1230,"children":1231},{"style":334},[1232],{"type":23,"value":630},{"type":23,"value":89},{"type":14,"tagName":102,"properties":1235,"children":1236,"position":1246},{},[1237],{"type":23,"value":1238,"position":1239},"Reducing the script to a single output removes every distraction and lets the diagnostics speak about exactly the value you care about. Once that one series is correct, bring the others back one at a time. This is the cheapest way to find which input poisoned a calculation downstream.",{"start":1240,"end":1243},{"line":1241,"column":27,"offset":1242},63,3764,{"line":1241,"column":1244,"offset":1245},286,4049,{"start":1247,"end":1248},{"line":1241,"column":27,"offset":1242},{"line":1241,"column":1244,"offset":1245},{"type":23,"value":89},{"type":14,"tagName":139,"properties":1251,"children":1253,"position":1262},{"id":1252},"4.-the-usual-suspects",[1254],{"type":23,"value":1255,"position":1256},"4. The usual suspects",{"start":1257,"end":1260},{"line":1258,"column":56,"offset":1259},65,4054,{"line":1258,"column":1031,"offset":1261},4075,{"start":1263,"end":1265},{"line":1258,"column":27,"offset":1264},4051,{"line":1258,"column":1031,"offset":1261},{"type":23,"value":89},{"type":14,"tagName":102,"properties":1268,"children":1269,"position":1279},{},[1270],{"type":23,"value":1271,"position":1272},"Most \"wrong script\" bugs are one of a handful of patterns. Scan this list against your symptom:",{"start":1273,"end":1276},{"line":1274,"column":27,"offset":1275},67,4077,{"line":1274,"column":1277,"offset":1278},96,4172,{"start":1280,"end":1281},{"line":1274,"column":27,"offset":1275},{"line":1274,"column":1277,"offset":1278},{"type":23,"value":89},{"type":14,"tagName":214,"properties":1284,"children":1285,"position":1740},{},[1286,1287,1439,1440,1509,1510,1559,1560,1610,1611,1739],{"type":23,"value":89},{"type":14,"tagName":219,"properties":1288,"children":1289,"position":1435},{},[1290,1308,1315,1327,1334,1346,1353,1365,1372,1390,1397,1409,1416,1428],{"type":14,"tagName":223,"properties":1291,"children":1292,"position":1302},{},[1293],{"type":23,"value":1294,"position":1295},"Flat or blank line.",{"start":1296,"end":1299},{"line":1297,"column":67,"offset":1298},69,4178,{"line":1297,"column":1300,"offset":1301},24,4197,{"start":1303,"end":1305},{"line":1297,"column":32,"offset":1304},4176,{"line":1297,"column":1306,"offset":1307},26,4199,{"type":23,"value":1309,"position":1310}," A series-returning value got held in a ",{"start":1311,"end":1312},{"line":1297,"column":1306,"offset":1307},{"line":1297,"column":1313,"offset":1314},66,4239,{"type":14,"tagName":114,"properties":1316,"children":1317,"position":1324},{},[1318],{"type":23,"value":1319,"position":1320},"var",{"start":1321,"end":1322},{"line":1297,"column":1313,"offset":1314},{"line":1297,"column":861,"offset":1323},4244,{"start":1325,"end":1326},{"line":1297,"column":1313,"offset":1314},{"line":1297,"column":861,"offset":1323},{"type":23,"value":1328,"position":1329}," instead of a ",{"start":1330,"end":1331},{"line":1297,"column":861,"offset":1323},{"line":1297,"column":1332,"offset":1333},85,4258,{"type":14,"tagName":114,"properties":1335,"children":1336,"position":1343},{},[1337],{"type":23,"value":822,"position":1338},{"start":1339,"end":1340},{"line":1297,"column":1332,"offset":1333},{"line":1297,"column":1341,"offset":1342},97,4270,{"start":1344,"end":1345},{"line":1297,"column":1332,"offset":1333},{"line":1297,"column":1341,"offset":1342},{"type":23,"value":1347,"position":1348},", so it kept only the current scalar and lost its shape. Promote it to ",{"start":1349,"end":1350},{"line":1297,"column":1341,"offset":1342},{"line":1297,"column":1351,"offset":1352},168,4341,{"type":14,"tagName":114,"properties":1354,"children":1355,"position":1362},{},[1356],{"type":23,"value":822,"position":1357},{"start":1358,"end":1359},{"line":1297,"column":1351,"offset":1352},{"line":1297,"column":1360,"offset":1361},180,4353,{"start":1363,"end":1364},{"line":1297,"column":1351,"offset":1352},{"line":1297,"column":1360,"offset":1361},{"type":23,"value":1366,"position":1367},". (See ",{"start":1368,"end":1369},{"line":1297,"column":1360,"offset":1361},{"line":1297,"column":1370,"offset":1371},187,4360,{"type":14,"tagName":1064,"properties":1373,"children":1375,"position":1385},{"href":1374},"/kscript/core-concepts/core-variables",[1376],{"type":23,"value":1377,"position":1378},"Variables",{"start":1379,"end":1382},{"line":1297,"column":1380,"offset":1381},188,4361,{"line":1297,"column":1383,"offset":1384},197,4370,{"start":1386,"end":1387},{"line":1297,"column":1370,"offset":1371},{"line":1297,"column":1388,"offset":1389},237,4410,{"type":23,"value":1391,"position":1392}," for the ",{"start":1393,"end":1394},{"line":1297,"column":1388,"offset":1389},{"line":1297,"column":1395,"offset":1396},246,4419,{"type":14,"tagName":114,"properties":1398,"children":1399,"position":1406},{},[1400],{"type":23,"value":1319,"position":1401},{"start":1402,"end":1403},{"line":1297,"column":1395,"offset":1396},{"line":1297,"column":1404,"offset":1405},251,4424,{"start":1407,"end":1408},{"line":1297,"column":1395,"offset":1396},{"line":1297,"column":1404,"offset":1405},{"type":23,"value":1410,"position":1411}," vs ",{"start":1412,"end":1413},{"line":1297,"column":1404,"offset":1405},{"line":1297,"column":1414,"offset":1415},255,4428,{"type":14,"tagName":114,"properties":1417,"children":1418,"position":1425},{},[1419],{"type":23,"value":822,"position":1420},{"start":1421,"end":1422},{"line":1297,"column":1414,"offset":1415},{"line":1297,"column":1423,"offset":1424},267,4440,{"start":1426,"end":1427},{"line":1297,"column":1414,"offset":1415},{"line":1297,"column":1423,"offset":1424},{"type":23,"value":1429,"position":1430}," split.)",{"start":1431,"end":1432},{"line":1297,"column":1423,"offset":1424},{"line":1297,"column":1433,"offset":1434},275,4448,{"start":1436,"end":1438},{"line":1297,"column":27,"offset":1437},4174,{"line":1297,"column":1433,"offset":1434},{"type":23,"value":89},{"type":14,"tagName":219,"properties":1441,"children":1442,"position":1505},{},[1443,1461,1467,1479,1486,1498],{"type":14,"tagName":223,"properties":1444,"children":1445,"position":1455},{},[1446],{"type":23,"value":1447,"position":1448},"Line starts blank, then appears.",{"start":1449,"end":1452},{"line":1450,"column":67,"offset":1451},70,4453,{"line":1450,"column":1453,"offset":1454},37,4485,{"start":1456,"end":1458},{"line":1450,"column":32,"offset":1457},4451,{"line":1450,"column":1459,"offset":1460},39,4487,{"type":23,"value":1462,"position":1463}," The indicator has not warmed up. Anything with a period (a 50-bar EMA, an RSI) is ",{"start":1464,"end":1465},{"line":1450,"column":1459,"offset":1460},{"line":1450,"column":53,"offset":1466},4570,{"type":14,"tagName":114,"properties":1468,"children":1469,"position":1476},{},[1470],{"type":23,"value":997,"position":1471},{"start":1472,"end":1473},{"line":1450,"column":53,"offset":1466},{"line":1450,"column":1474,"offset":1475},126,4574,{"start":1477,"end":1478},{"line":1450,"column":53,"offset":1466},{"line":1450,"column":1474,"offset":1475},{"type":23,"value":1480,"position":1481}," until it has enough bars. That leading gap is expected; make sure your logic tolerates ",{"start":1482,"end":1483},{"line":1450,"column":1474,"offset":1475},{"line":1450,"column":1484,"offset":1485},214,4662,{"type":14,"tagName":114,"properties":1487,"children":1488,"position":1495},{},[1489],{"type":23,"value":997,"position":1490},{"start":1491,"end":1492},{"line":1450,"column":1484,"offset":1485},{"line":1450,"column":1493,"offset":1494},218,4666,{"start":1496,"end":1497},{"line":1450,"column":1484,"offset":1485},{"line":1450,"column":1493,"offset":1494},{"type":23,"value":1499,"position":1500}," before the period fills.",{"start":1501,"end":1502},{"line":1450,"column":1493,"offset":1494},{"line":1450,"column":1503,"offset":1504},243,4691,{"start":1506,"end":1508},{"line":1450,"column":27,"offset":1507},4449,{"line":1450,"column":1503,"offset":1504},{"type":23,"value":89},{"type":14,"tagName":219,"properties":1511,"children":1512,"position":1555},{},[1513,1530,1537,1548],{"type":14,"tagName":223,"properties":1514,"children":1515,"position":1524},{},[1516],{"type":23,"value":1517,"position":1518},"Flat or blank anchored value.",{"start":1519,"end":1521},{"line":861,"column":67,"offset":1520},4696,{"line":861,"column":1522,"offset":1523},34,4725,{"start":1525,"end":1527},{"line":861,"column":32,"offset":1526},4694,{"line":861,"column":1528,"offset":1529},36,4727,{"type":23,"value":1531,"position":1532}," Too little loaded history. An anchored calculation that never crosses its anchor boundary (a monthly anchor inside a window shorter than a month) stays ",{"start":1533,"end":1534},{"line":861,"column":1528,"offset":1529},{"line":861,"column":1535,"offset":1536},189,4880,{"type":14,"tagName":114,"properties":1538,"children":1539,"position":1545},{},[1540],{"type":23,"value":997,"position":1541},{"start":1542,"end":1543},{"line":861,"column":1535,"offset":1536},{"line":861,"column":1119,"offset":1544},4884,{"start":1546,"end":1547},{"line":861,"column":1535,"offset":1536},{"line":861,"column":1119,"offset":1544},{"type":23,"value":1549,"position":1550},". Load more bars or pick a shorter anchor.",{"start":1551,"end":1552},{"line":861,"column":1119,"offset":1544},{"line":861,"column":1553,"offset":1554},235,4926,{"start":1556,"end":1558},{"line":861,"column":27,"offset":1557},4692,{"line":861,"column":1553,"offset":1554},{"type":23,"value":89},{"type":14,"tagName":219,"properties":1561,"children":1562,"position":1606},{},[1563,1580,1587,1599],{"type":14,"tagName":223,"properties":1564,"children":1565,"position":1575},{},[1566],{"type":23,"value":1567,"position":1568},"\"Zero bars to compute.\"",{"start":1569,"end":1572},{"line":1570,"column":67,"offset":1571},72,4931,{"line":1570,"column":1573,"offset":1574},28,4954,{"start":1576,"end":1578},{"line":1570,"column":32,"offset":1577},4929,{"line":1570,"column":28,"offset":1579},4956,{"type":23,"value":1581,"position":1582}," No source reached the loop. An offchart script with no source has no timeline to walk. Add an ",{"start":1583,"end":1584},{"line":1570,"column":28,"offset":1579},{"line":1570,"column":1585,"offset":1586},125,5051,{"type":14,"tagName":114,"properties":1588,"children":1589,"position":1596},{},[1590],{"type":23,"value":1591,"position":1592},"ohlcv(symbol=currentSymbol, exchange=currentExchange)",{"start":1593,"end":1594},{"line":1570,"column":1585,"offset":1586},{"line":1570,"column":1360,"offset":1595},5106,{"start":1597,"end":1598},{"line":1570,"column":1585,"offset":1586},{"line":1570,"column":1360,"offset":1595},{"type":23,"value":1600,"position":1601}," anchor so the bar loop has data, even if the indicator does not obviously use price.",{"start":1602,"end":1603},{"line":1570,"column":1360,"offset":1595},{"line":1570,"column":1604,"offset":1605},265,5191,{"start":1607,"end":1609},{"line":1570,"column":27,"offset":1608},4927,{"line":1570,"column":1604,"offset":1605},{"type":23,"value":89},{"type":14,"tagName":219,"properties":1612,"children":1613,"position":1735},{},[1614,1648,1655,1668,1674,1687,1693,1704,1711,1729],{"type":14,"tagName":223,"properties":1615,"children":1616,"position":1643},{},[1617,1625,1637],{"type":23,"value":1618,"position":1619},"Everything is ",{"start":1620,"end":1623},{"line":1621,"column":67,"offset":1622},73,5196,{"line":1621,"column":271,"offset":1624},5210,{"type":14,"tagName":114,"properties":1626,"children":1627,"position":1634},{},[1628],{"type":23,"value":997,"position":1629},{"start":1630,"end":1631},{"line":1621,"column":271,"offset":1624},{"line":1621,"column":1632,"offset":1633},23,5214,{"start":1635,"end":1636},{"line":1621,"column":271,"offset":1624},{"line":1621,"column":1632,"offset":1633},{"type":23,"value":1638,"position":1639}," for no clear reason.",{"start":1640,"end":1641},{"line":1621,"column":1632,"offset":1633},{"line":1621,"column":885,"offset":1642},5235,{"start":1644,"end":1646},{"line":1621,"column":32,"offset":1645},5194,{"line":1621,"column":902,"offset":1647},5237,{"type":23,"value":1649,"position":1650}," A wrong source member. Member names are not checked at compile time, so reading ",{"start":1651,"end":1652},{"line":1621,"column":902,"offset":1647},{"line":1621,"column":1653,"offset":1654},127,5318,{"type":14,"tagName":114,"properties":1656,"children":1657,"position":1665},{},[1658],{"type":23,"value":1659,"position":1660},"funding.close",{"start":1661,"end":1662},{"line":1621,"column":1653,"offset":1654},{"line":1621,"column":1663,"offset":1664},142,5333,{"start":1666,"end":1667},{"line":1621,"column":1653,"offset":1654},{"line":1621,"column":1663,"offset":1664},{"type":23,"value":1669,"position":1670}," when the field is ",{"start":1671,"end":1672},{"line":1621,"column":1663,"offset":1664},{"line":1621,"column":922,"offset":1673},5352,{"type":14,"tagName":114,"properties":1675,"children":1676,"position":1684},{},[1677],{"type":23,"value":1678,"position":1679},"funding.value",{"start":1680,"end":1681},{"line":1621,"column":922,"offset":1673},{"line":1621,"column":1682,"offset":1683},176,5367,{"start":1685,"end":1686},{"line":1621,"column":922,"offset":1673},{"line":1621,"column":1682,"offset":1683},{"type":23,"value":1688,"position":1689}," silently yields ",{"start":1690,"end":1691},{"line":1621,"column":1682,"offset":1683},{"line":1621,"column":1119,"offset":1692},5384,{"type":14,"tagName":114,"properties":1694,"children":1695,"position":1701},{},[1696],{"type":23,"value":997,"position":1697},{"start":1698,"end":1699},{"line":1621,"column":1119,"offset":1692},{"line":1621,"column":1383,"offset":1700},5388,{"start":1702,"end":1703},{"line":1621,"column":1119,"offset":1692},{"line":1621,"column":1383,"offset":1700},{"type":23,"value":1705,"position":1706}," on every bar. Check the member list for that source type in ",{"start":1707,"end":1708},{"line":1621,"column":1383,"offset":1700},{"line":1621,"column":1709,"offset":1710},258,5449,{"type":14,"tagName":1064,"properties":1712,"children":1714,"position":1724},{"href":1713},"/kscript/core-concepts/data-sources",[1715],{"type":23,"value":1716,"position":1717},"Data Sources",{"start":1718,"end":1721},{"line":1621,"column":1719,"offset":1720},259,5450,{"line":1621,"column":1722,"offset":1723},271,5462,{"start":1725,"end":1726},{"line":1621,"column":1709,"offset":1710},{"line":1621,"column":1727,"offset":1728},309,5500,{"type":23,"value":685,"position":1730},{"start":1731,"end":1732},{"line":1621,"column":1727,"offset":1728},{"line":1621,"column":1733,"offset":1734},310,5501,{"start":1736,"end":1738},{"line":1621,"column":27,"offset":1737},5192,{"line":1621,"column":1733,"offset":1734},{"type":23,"value":89},{"start":1741,"end":1742},{"line":1297,"column":27,"offset":1437},{"line":1621,"column":1733,"offset":1734},{"type":23,"value":89},{"type":14,"tagName":102,"properties":1745,"children":1746,"position":1756},{},[1747],{"type":23,"value":1748,"position":1749},"Walk these top to bottom. The fix for each is one line, and the diagnostic from step 2 usually tells you which one you are looking at.",{"start":1750,"end":1753},{"line":1751,"column":27,"offset":1752},75,5503,{"line":1751,"column":1754,"offset":1755},135,5637,{"start":1757,"end":1758},{"line":1751,"column":27,"offset":1752},{"line":1751,"column":1754,"offset":1755},{"type":23,"value":89},{"type":14,"tagName":139,"properties":1761,"children":1763,"position":1772},{"id":1762},"see-also",[1764],{"type":23,"value":1765,"position":1766},"See also",{"start":1767,"end":1770},{"line":1768,"column":56,"offset":1769},77,5642,{"line":1768,"column":147,"offset":1771},5650,{"start":1773,"end":1775},{"line":1768,"column":27,"offset":1774},5639,{"line":1768,"column":147,"offset":1771},{"type":23,"value":89},{"type":14,"tagName":214,"properties":1778,"children":1779,"position":1913},{},[1780,1781,1810,1811,1843,1844,1912],{"type":23,"value":89},{"type":14,"tagName":219,"properties":1782,"children":1783,"position":1806},{},[1784,1799],{"type":14,"tagName":1064,"properties":1785,"children":1786,"position":1794},{"href":1066},[1787],{"type":23,"value":1069,"position":1788},{"start":1789,"end":1792},{"line":1790,"column":56,"offset":1791},79,5655,{"line":1790,"column":245,"offset":1793},5668,{"start":1795,"end":1797},{"line":1790,"column":32,"offset":1796},5654,{"line":1790,"column":902,"offset":1798},5697,{"type":23,"value":1800,"position":1801}," for the full diagnostic table and every hard-error message.",{"start":1802,"end":1803},{"line":1790,"column":902,"offset":1798},{"line":1790,"column":1804,"offset":1805},106,5757,{"start":1807,"end":1809},{"line":1790,"column":27,"offset":1808},5652,{"line":1790,"column":1804,"offset":1805},{"type":23,"value":89},{"type":14,"tagName":219,"properties":1812,"children":1813,"position":1839},{},[1814,1832],{"type":14,"tagName":1064,"properties":1815,"children":1817,"position":1826},{"href":1816},"/kscript/core-concepts/execution-model",[1818],{"type":23,"value":1819,"position":1820},"Execution Model",{"start":1821,"end":1824},{"line":1822,"column":56,"offset":1823},80,5761,{"line":1822,"column":271,"offset":1825},5776,{"start":1827,"end":1829},{"line":1822,"column":32,"offset":1828},5760,{"line":1822,"column":1830,"offset":1831},60,5817,{"type":23,"value":1833,"position":1834}," for why a script needs a source to reach the bar loop.",{"start":1835,"end":1836},{"line":1822,"column":1830,"offset":1831},{"line":1822,"column":1837,"offset":1838},115,5872,{"start":1840,"end":1842},{"line":1822,"column":27,"offset":1841},5758,{"line":1822,"column":1837,"offset":1838},{"type":23,"value":89},{"type":14,"tagName":219,"properties":1845,"children":1846,"position":1908},{},[1847,1864,1871,1883,1890,1901],{"type":14,"tagName":1064,"properties":1848,"children":1850,"position":1859},{"href":1849},"/kscript/functions/plotting",[1851],{"type":23,"value":1852,"position":1853},"Plotting",{"start":1854,"end":1857},{"line":1855,"column":56,"offset":1856},81,5876,{"line":1855,"column":147,"offset":1858},5884,{"start":1860,"end":1862},{"line":1855,"column":32,"offset":1861},5875,{"line":1855,"column":849,"offset":1863},5914,{"type":23,"value":1865,"position":1866}," for ",{"start":1867,"end":1868},{"line":1855,"column":849,"offset":1863},{"line":1855,"column":1869,"offset":1870},47,5919,{"type":14,"tagName":114,"properties":1872,"children":1873,"position":1880},{},[1874],{"type":23,"value":230,"position":1875},{"start":1876,"end":1877},{"line":1855,"column":1869,"offset":1870},{"line":1855,"column":1878,"offset":1879},57,5929,{"start":1881,"end":1882},{"line":1855,"column":1869,"offset":1870},{"line":1855,"column":1878,"offset":1879},{"type":23,"value":1884,"position":1885},", ",{"start":1886,"end":1887},{"line":1855,"column":1878,"offset":1879},{"line":1855,"column":1888,"offset":1889},59,5931,{"type":14,"tagName":114,"properties":1891,"children":1892,"position":1898},{},[1893],{"type":23,"value":268,"position":1894},{"start":1895,"end":1896},{"line":1855,"column":1888,"offset":1889},{"line":1855,"column":1297,"offset":1897},5941,{"start":1899,"end":1900},{"line":1855,"column":1888,"offset":1889},{"line":1855,"column":1297,"offset":1897},{"type":23,"value":1902,"position":1903},", and the rest of the output family.",{"start":1904,"end":1905},{"line":1855,"column":1297,"offset":1897},{"line":1855,"column":1906,"offset":1907},105,5977,{"start":1909,"end":1911},{"line":1855,"column":27,"offset":1910},5873,{"line":1855,"column":1906,"offset":1907},{"type":23,"value":89},{"start":1914,"end":1915},{"line":1790,"column":27,"offset":1808},{"line":1855,"column":1906,"offset":1907},{"quirksMode":1917},false,{"start":1919,"end":1920},{"line":27,"column":27,"offset":97},{"line":1921,"column":27,"offset":1922},82,5978,1782471858239]