[{"data":1,"prerenderedAt":251},["ShallowReactive",2],{"indicators:migrations/v1-vs-v2":3},{"slug":4,"filePath":5,"frontmatter":6,"rawMarkdown":11,"tree":12},"migrations/v1-vs-v2","migrations/v1-vs-v2.md",{"title":7,"description":8,"order":9,"section":10},"kScript (legacy) v1 vs v2","In Indicators this is nothing to migrate: an Indicator has no language versions, only four sheet contracts (abi_version: \"wrun-1\", frozen forever, then the…",89,"migrations","---\ntitle: \"kScript (legacy) v1 vs v2\"\ndescription: \"In Indicators this is nothing to migrate: an Indicator has no language versions, only four sheet contracts (abi_version: \\\"wrun-1\\\", frozen forever, then the…\"\norder: 89\nsection: \"migrations\"\n---\n\n\u003C!-- source: docs/indicators/migrations/v1-vs-v2.md; generated by packages/cli/scripts/gen-indicator-docs.ts, do not edit -->\n\n# kScript (legacy) v1 vs v2\n\nIn Indicators this is nothing to migrate: an Indicator has no language versions, only four sheet contracts (`abi_version: \"wrun-1\"`, frozen forever, then the additive `\"wrun-2\"`, `\"wrun-3\"` and `\"wrun-4\"`), and a module written under any of them keeps computing bit-identically. Everything the kScript (legacy) v2 change introduced (per-bar execution, keyword arguments, compile-time checks, dedicated feeds, scalar TA values, field accessors, functions and loops) is the baseline of an Indicator: the four exports run per bar, options objects name every argument, AssemblyScript type-checks before anything runs, `input(name, source.field)` names a feed, and the TA classes return one number per bar.\n\nNearest form: [Script definition](../functions/script-definition.md) documents the four contracts; a v1 or v2 script ports through the same construct table as a v3 one, on the From kScript (legacy) page beside this one.\n\nWhat stays on kScript (legacy): the v1 engine itself (`buildTimeseries`, `mergeTimeseries`, positional arguments), which the platform still routes a marker-less script to.\n",{"type":13,"children":14,"data":244,"position":246},"root",[15,25,28,29,147,148,189,190],{"type":16,"value":17,"position":18},"comment"," source: docs/indicators/migrations/v1-vs-v2.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},126,125,{"type":26,"value":27},"text","\n",{"type":26,"value":27},{"type":30,"tagName":31,"properties":32,"children":33,"position":144},"element","p",{},[34,43,57,64,77,84,97,104,117,124,137],{"type":26,"value":35,"position":36},"In Indicators this is nothing to migrate: an Indicator has no language versions, only four sheet contracts (",{"start":37,"end":40},{"line":38,"column":20,"offset":39},5,156,{"line":38,"column":41,"offset":42},109,264,{"type":30,"tagName":44,"properties":45,"children":46,"position":54},"code",{},[47],{"type":26,"value":48,"position":49},"abi_version: \"wrun-1\"",{"start":50,"end":51},{"line":38,"column":41,"offset":42},{"line":38,"column":52,"offset":53},132,287,{"start":55,"end":56},{"line":38,"column":41,"offset":42},{"line":38,"column":52,"offset":53},{"type":26,"value":58,"position":59},", frozen forever, then the additive ",{"start":60,"end":61},{"line":38,"column":52,"offset":53},{"line":38,"column":62,"offset":63},168,323,{"type":30,"tagName":44,"properties":65,"children":66,"position":74},{},[67],{"type":26,"value":68,"position":69},"\"wrun-2\"",{"start":70,"end":71},{"line":38,"column":62,"offset":63},{"line":38,"column":72,"offset":73},178,333,{"start":75,"end":76},{"line":38,"column":62,"offset":63},{"line":38,"column":72,"offset":73},{"type":26,"value":78,"position":79},", ",{"start":80,"end":81},{"line":38,"column":72,"offset":73},{"line":38,"column":82,"offset":83},180,335,{"type":30,"tagName":44,"properties":85,"children":86,"position":94},{},[87],{"type":26,"value":88,"position":89},"\"wrun-3\"",{"start":90,"end":91},{"line":38,"column":82,"offset":83},{"line":38,"column":92,"offset":93},190,345,{"start":95,"end":96},{"line":38,"column":82,"offset":83},{"line":38,"column":92,"offset":93},{"type":26,"value":98,"position":99}," and ",{"start":100,"end":101},{"line":38,"column":92,"offset":93},{"line":38,"column":102,"offset":103},195,350,{"type":30,"tagName":44,"properties":105,"children":106,"position":114},{},[107],{"type":26,"value":108,"position":109},"\"wrun-4\"",{"start":110,"end":111},{"line":38,"column":102,"offset":103},{"line":38,"column":112,"offset":113},205,360,{"start":115,"end":116},{"line":38,"column":102,"offset":103},{"line":38,"column":112,"offset":113},{"type":26,"value":118,"position":119},"), and a module written under any of them keeps computing bit-identically. Everything the kScript (legacy) v2 change introduced (per-bar execution, keyword arguments, compile-time checks, dedicated feeds, scalar TA values, field accessors, functions and loops) is the baseline of an Indicator: the four exports run per bar, options objects name every argument, AssemblyScript type-checks before anything runs, ",{"start":120,"end":121},{"line":38,"column":112,"offset":113},{"line":38,"column":122,"offset":123},615,770,{"type":30,"tagName":44,"properties":125,"children":126,"position":134},{},[127],{"type":26,"value":128,"position":129},"input(name, source.field)",{"start":130,"end":131},{"line":38,"column":122,"offset":123},{"line":38,"column":132,"offset":133},642,797,{"start":135,"end":136},{"line":38,"column":122,"offset":123},{"line":38,"column":132,"offset":133},{"type":26,"value":138,"position":139}," names a feed, and the TA classes return one number per bar.",{"start":140,"end":141},{"line":38,"column":132,"offset":133},{"line":38,"column":142,"offset":143},702,857,{"start":145,"end":146},{"line":38,"column":20,"offset":39},{"line":38,"column":142,"offset":143},{"type":26,"value":27},{"type":30,"tagName":31,"properties":149,"children":150,"position":186},{},[151,160,179],{"type":26,"value":152,"position":153},"Nearest form: ",{"start":154,"end":157},{"line":155,"column":20,"offset":156},7,859,{"line":155,"column":158,"offset":159},15,873,{"type":30,"tagName":161,"properties":162,"children":164,"position":174},"a",{"href":163},"../functions/script-definition.md",[165],{"type":26,"value":166,"position":167},"Script definition",{"start":168,"end":171},{"line":155,"column":169,"offset":170},16,874,{"line":155,"column":172,"offset":173},33,891,{"start":175,"end":176},{"line":155,"column":158,"offset":159},{"line":155,"column":177,"offset":178},69,927,{"type":26,"value":180,"position":181}," documents the four contracts; a v1 or v2 script ports through the same construct table as a v3 one, on the From kScript (legacy) page beside this one.",{"start":182,"end":183},{"line":155,"column":177,"offset":178},{"line":155,"column":184,"offset":185},220,1078,{"start":187,"end":188},{"line":155,"column":20,"offset":156},{"line":155,"column":184,"offset":185},{"type":26,"value":27},{"type":30,"tagName":31,"properties":191,"children":192,"position":241},{},[193,202,215,221,234],{"type":26,"value":194,"position":195},"What stays on kScript (legacy): the v1 engine itself (",{"start":196,"end":199},{"line":197,"column":20,"offset":198},9,1080,{"line":197,"column":200,"offset":201},55,1134,{"type":30,"tagName":44,"properties":203,"children":204,"position":212},{},[205],{"type":26,"value":206,"position":207},"buildTimeseries",{"start":208,"end":209},{"line":197,"column":200,"offset":201},{"line":197,"column":210,"offset":211},72,1151,{"start":213,"end":214},{"line":197,"column":200,"offset":201},{"line":197,"column":210,"offset":211},{"type":26,"value":78,"position":216},{"start":217,"end":218},{"line":197,"column":210,"offset":211},{"line":197,"column":219,"offset":220},74,1153,{"type":30,"tagName":44,"properties":222,"children":223,"position":231},{},[224],{"type":26,"value":225,"position":226},"mergeTimeseries",{"start":227,"end":228},{"line":197,"column":219,"offset":220},{"line":197,"column":229,"offset":230},91,1170,{"start":232,"end":233},{"line":197,"column":219,"offset":220},{"line":197,"column":229,"offset":230},{"type":26,"value":235,"position":236},", positional arguments), which the platform still routes a marker-less script to.",{"start":237,"end":238},{"line":197,"column":229,"offset":230},{"line":197,"column":239,"offset":240},172,1251,{"start":242,"end":243},{"line":197,"column":20,"offset":198},{"line":197,"column":239,"offset":240},{"quirksMode":245},false,{"start":247,"end":248},{"line":20,"column":20,"offset":21},{"line":249,"column":20,"offset":250},10,1252,1790157178345]