[{"data":1,"prerenderedAt":2105},["ShallowReactive",2],{"kscript:core-concepts/execution-model":3},{"slug":4,"filePath":5,"frontmatter":6,"rawMarkdown":9,"tree":10},"core-concepts/execution-model","core-concepts/execution-model.md",{"title":7,"description":8},"Execution Model","Understanding how kScript v2 processes your code through its three-phase lifecycle for optimal performance and predictable behavior.","---\ntitle: Execution Model\ndescription: >-\n  Understanding how kScript v2 processes your code through its three-phase\n  lifecycle for optimal performance and predictable behavior.\n---\n\n\nEvery indicator follows a simple recipe: **Setup once → Calculate per candle → Display per candle.**\n\n{% stepper %}\n{% step %}\n**Setup Phase**\n\nRuns once when your indicator first loads. Prepare everything your indicator needs before processing any candles.\n\n| Task | Description |\n|------|-------------|\n| Call `define(...)` | Required — tells kScript about your indicator |\n| Create settings with `input(...)` | Optional — let users adjust period, colors, etc. |\n| Get data with `ohlcv(...)` | Create all `timeseries` here |\n\n{% endstep %}\n\n{% step %}\n**Calculate Phase**\n\nRuns for each candle on the chart. Process indicator calculations. This repeats for every candle, computing values based on your defined logic.\n\n| Task | Description |\n|------|-------------|\n| Calculate indicators | `rsi(...)`, `ema(...)`, `sma(...)` |\n| Store temporary values in `var` | For comparisons, colors, or per-candle logic |\n| Make decisions | Use `if/else` to compare values |\n\n{% hint style=\"warning\" %}\nDon't create `timeseries` in the Calculate phase — use the ones from Setup.\n{% endhint %}\n{% endstep %}\n\n{% step %}\n**Display Phase**\n\nRuns for each candle, after calculations. Draw your indicator on the chart using the calculated values.\n\n| Function | Use Case |\n|----------|----------|\n| `plotLine(...)` | Lines for RSI, moving averages, etc. |\n| `plotBar(...)` | Vertical bars for volume, histograms |\n| `plotShape(...)` | Markers, arrows, labels for signals |\n\n{% hint style=\"success\" %}\nYou can use multiple plot functions in one indicator.\n{% endhint %}\n{% endstep %}\n{% endstepper %}\n\n\n## Understanding the Flow\n\n```text\nPhase 1 (Setup runs once)\n    ↓\nPhase 2 (Calculate for candle 1) → Phase 3 (Display candle 1)\n    ↓\nPhase 2 (Calculate for candle 2) → Phase 3 (Display candle 2)\n    ↓\n...and so on for every candle\n```\n\n\n## Key Characteristics\n\n\u003Ctable data-view=\"cards\">\u003Ctbody>\n\u003Ctr>\u003Ctd>Deterministic Results\u003C/td>\u003Ctd>Given the same input data, a script will always produce identical output. Essential for reliable backtesting and strategy validation.\u003C/td>\u003Ctd>\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Immutable Historical Data\u003C/td>\u003Ctd>`timeseries` objects provide read-only access to historical values. Past data cannot be modified, ensuring data integrity.\u003C/td>\u003Ctd>\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Efficient Memory Usage\u003C/td>\u003Ctd>Only current bar calculations are held in memory. Historical data is managed by the runtime with optimized caching.\u003C/td>\u003Ctd>\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Real-time Compatibility\u003C/td>\u003Ctd>The same script logic handles both historical analysis and live data processing without special handling.\u003C/td>\u003Ctd>\u003C/td>\u003C/tr>\n\u003C/tbody>\u003C/table>\n\n\n## Limitations and Constraints\n\n{% hint style=\"warning\" %}\nKeep these constraints in mind when writing your indicators.\n{% endhint %}\n\n- **No Future Data Access** — Scripts cannot access data from future bars (e.g., `ts[-1]` is invalid). This prevents look-ahead bias in analysis.\n- **Global Scope `timeseries` Only** — `timeseries` declarations must be in global scope. They cannot be declared inside functions, loops, or conditional blocks.\n- **Execution Time Limits** — scripts must complete execution within 500ms (excluding data fetch). This ensures responsive chart rendering and prevents infinite loops.\n- **No Cross-Bar Variable Persistence** — `var` variables cannot maintain state between bars. Use `timeseries` for values that need historical access, or `static` for persistent values.\n\n\n## Example: Complete Indicator Structure\n\n```javascript\n//@version=2\n\n// ====== PHASE 1: SETUP ======\ndefine(title=\"RSI Indicator\", position=\"offchart\", axis=true);\n\n// User inputs\nvar period = input(name=\"period\", type=\"number\", defaultValue=14, label=\"RSI Period\");\nvar overbought = input(name=\"overbought\", type=\"number\", defaultValue=70, label=\"Overbought Level\");\nvar oversold = input(name=\"oversold\", type=\"number\", defaultValue=30, label=\"Oversold Level\");\n\n// Data source (timeseries created here)\ntimeseries ohlcvData = ohlcv(symbol=currentSymbol, exchange=currentExchange);\n\n// ====== PHASE 2: CALCULATE ======\n// Calculate RSI\nvar rsiValue = rsi(source=ohlcvData.close, period=period);\n\n// Determine color based on value\nvar colorIndex = rsiValue > overbought ? 0 : (rsiValue \u003C oversold ? 1 : 2);\n\n// ====== PHASE 3: DISPLAY ======\nplotLine(value=rsiValue, width=2, colors=[\"red\", \"green\", \"blue\"], colorIndex=colorIndex, label=[\"RSI\"], desc=[\"Relative Strength Index\"]);\n\n// Draw horizontal reference lines\nhline(overbought, \"red\", 1);\nhline(oversold, \"green\", 1);\n```\n",{"type":11,"children":12,"data":2099,"position":2101},"root",[13,49,51,899,900,918,919,993,994,1010,1011,1045,1046,1062,1063,1081,1082,1323,1324,1339,1340],{"type":14,"tagName":15,"properties":16,"children":17,"position":46},"element","p",{},[18,28],{"type":19,"value":20,"position":21},"text","Every indicator follows a simple recipe: ",{"start":22,"end":25},{"line":23,"column":23,"offset":24},1,0,{"line":23,"column":26,"offset":27},42,41,{"type":14,"tagName":29,"properties":30,"children":31,"position":41},"strong",{},[32],{"type":19,"value":33,"position":34},"Setup once → Calculate per candle → Display per candle.",{"start":35,"end":38},{"line":23,"column":36,"offset":37},44,43,{"line":23,"column":39,"offset":40},99,98,{"start":42,"end":43},{"line":23,"column":26,"offset":27},{"line":23,"column":44,"offset":45},101,100,{"start":47,"end":48},{"line":23,"column":23,"offset":24},{"line":23,"column":44,"offset":45},{"type":19,"value":50},"\n",{"type":14,"tagName":52,"properties":53,"children":54},"stepper",{},[55,343,658],{"type":14,"tagName":56,"properties":57,"children":58},"step",{},[59,84,99,101],{"type":14,"tagName":15,"properties":60,"children":61,"position":81},{},[62],{"type":14,"tagName":29,"properties":63,"children":64,"position":75},{},[65],{"type":19,"value":66,"position":67},"Setup Phase",{"start":68,"end":72},{"line":69,"column":70,"offset":71},9,3,133,{"line":69,"column":73,"offset":74},14,144,{"start":76,"end":78},{"line":69,"column":23,"offset":77},131,{"line":69,"column":79,"offset":80},16,146,{"start":82,"end":83},{"line":69,"column":23,"offset":77},{"line":69,"column":79,"offset":80},{"type":14,"tagName":15,"properties":85,"children":86,"position":96},{},[87],{"type":19,"value":88,"position":89},"Runs once when your indicator first loads. Prepare everything your indicator needs before processing any candles.",{"start":90,"end":93},{"line":91,"column":23,"offset":92},11,148,{"line":91,"column":94,"offset":95},114,261,{"start":97,"end":98},{"line":91,"column":23,"offset":92},{"line":91,"column":94,"offset":95},{"type":19,"value":100},"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",{"type":14,"tagName":102,"properties":103,"children":104,"position":340},"table",{},[105,155],{"type":14,"tagName":106,"properties":107,"children":108,"position":152},"thead",{},[109],{"type":14,"tagName":110,"properties":111,"children":112,"position":149},"tr",{},[113,132],{"type":14,"tagName":114,"properties":115,"children":116,"position":126},"th",{},[117],{"type":19,"value":118,"position":119},"Task",{"start":120,"end":123},{"line":121,"column":70,"offset":122},13,265,{"line":121,"column":124,"offset":125},7,269,{"start":127,"end":129},{"line":121,"column":23,"offset":128},263,{"line":121,"column":130,"offset":131},8,270,{"type":14,"tagName":114,"properties":133,"children":134,"position":144},{},[135],{"type":19,"value":136,"position":137},"Description",{"start":138,"end":141},{"line":121,"column":139,"offset":140},10,272,{"line":121,"column":142,"offset":143},21,283,{"start":145,"end":146},{"line":121,"column":130,"offset":131},{"line":121,"column":147,"offset":148},23,285,{"start":150,"end":151},{"line":121,"column":23,"offset":128},{"line":121,"column":147,"offset":148},{"start":153,"end":154},{"line":121,"column":23,"offset":128},{"line":121,"column":147,"offset":148},{"type":14,"tagName":156,"properties":157,"children":158,"position":337},"tbody",{},[159,213,265],{"type":14,"tagName":110,"properties":160,"children":161,"position":210},{},[162,193],{"type":14,"tagName":163,"properties":164,"children":165,"position":187},"td",{},[166,174],{"type":19,"value":167,"position":168},"Call ",{"start":169,"end":172},{"line":170,"column":70,"offset":171},15,311,{"line":170,"column":130,"offset":173},316,{"type":14,"tagName":175,"properties":176,"children":177,"position":184},"code",{},[178],{"type":19,"value":179,"position":180},"define(...)",{"start":181,"end":182},{"line":170,"column":130,"offset":173},{"line":170,"column":142,"offset":183},329,{"start":185,"end":186},{"line":170,"column":130,"offset":173},{"line":170,"column":142,"offset":183},{"start":188,"end":190},{"line":170,"column":23,"offset":189},309,{"line":170,"column":191,"offset":192},22,330,{"type":14,"tagName":163,"properties":194,"children":195,"position":205},{},[196],{"type":19,"value":197,"position":198},"Required — tells kScript about your indicator",{"start":199,"end":202},{"line":170,"column":200,"offset":201},24,332,{"line":170,"column":203,"offset":204},69,377,{"start":206,"end":207},{"line":170,"column":191,"offset":192},{"line":170,"column":208,"offset":209},71,379,{"start":211,"end":212},{"line":170,"column":23,"offset":189},{"line":170,"column":208,"offset":209},{"type":14,"tagName":110,"properties":214,"children":215,"position":262},{},[216,245],{"type":14,"tagName":163,"properties":217,"children":218,"position":239},{},[219,226],{"type":19,"value":220,"position":221},"Create settings with ",{"start":222,"end":224},{"line":79,"column":70,"offset":223},382,{"line":79,"column":200,"offset":225},403,{"type":14,"tagName":175,"properties":227,"children":228,"position":236},{},[229],{"type":19,"value":230,"position":231},"input(...)",{"start":232,"end":233},{"line":79,"column":200,"offset":225},{"line":79,"column":234,"offset":235},36,415,{"start":237,"end":238},{"line":79,"column":200,"offset":225},{"line":79,"column":234,"offset":235},{"start":240,"end":242},{"line":79,"column":23,"offset":241},380,{"line":79,"column":243,"offset":244},37,416,{"type":14,"tagName":163,"properties":246,"children":247,"position":257},{},[248],{"type":19,"value":249,"position":250},"Optional — let users adjust period, colors, etc.",{"start":251,"end":254},{"line":79,"column":252,"offset":253},39,418,{"line":79,"column":255,"offset":256},87,466,{"start":258,"end":259},{"line":79,"column":243,"offset":244},{"line":79,"column":260,"offset":261},89,468,{"start":263,"end":264},{"line":79,"column":23,"offset":241},{"line":79,"column":260,"offset":261},{"type":14,"tagName":110,"properties":266,"children":267,"position":334},{},[268,298],{"type":14,"tagName":163,"properties":269,"children":270,"position":292},{},[271,279],{"type":19,"value":272,"position":273},"Get data with ",{"start":274,"end":277},{"line":275,"column":70,"offset":276},17,471,{"line":275,"column":275,"offset":278},485,{"type":14,"tagName":175,"properties":280,"children":281,"position":289},{},[282],{"type":19,"value":283,"position":284},"ohlcv(...)",{"start":285,"end":286},{"line":275,"column":275,"offset":278},{"line":275,"column":287,"offset":288},29,497,{"start":290,"end":291},{"line":275,"column":275,"offset":278},{"line":275,"column":287,"offset":288},{"start":293,"end":295},{"line":275,"column":23,"offset":294},469,{"line":275,"column":296,"offset":297},30,498,{"type":14,"tagName":163,"properties":299,"children":300,"position":329},{},[301,309,322],{"type":19,"value":302,"position":303},"Create all ",{"start":304,"end":307},{"line":275,"column":305,"offset":306},32,500,{"line":275,"column":37,"offset":308},511,{"type":14,"tagName":175,"properties":310,"children":311,"position":319},{},[312],{"type":19,"value":313,"position":314},"timeseries",{"start":315,"end":316},{"line":275,"column":37,"offset":308},{"line":275,"column":317,"offset":318},55,523,{"start":320,"end":321},{"line":275,"column":37,"offset":308},{"line":275,"column":317,"offset":318},{"type":19,"value":323,"position":324}," here",{"start":325,"end":326},{"line":275,"column":317,"offset":318},{"line":275,"column":327,"offset":328},60,528,{"start":330,"end":331},{"line":275,"column":296,"offset":297},{"line":275,"column":332,"offset":333},62,530,{"start":335,"end":336},{"line":275,"column":23,"offset":294},{"line":275,"column":332,"offset":333},{"start":338,"end":339},{"line":170,"column":23,"offset":189},{"line":275,"column":332,"offset":333},{"start":341,"end":342},{"line":121,"column":23,"offset":128},{"line":275,"column":332,"offset":333},{"type":14,"tagName":56,"properties":344,"children":345},{},[346,370,384,385,622],{"type":14,"tagName":15,"properties":347,"children":348,"position":367},{},[349],{"type":14,"tagName":29,"properties":350,"children":351,"position":361},{},[352],{"type":19,"value":353,"position":354},"Calculate Phase",{"start":355,"end":358},{"line":356,"column":70,"offset":357},26,564,{"line":356,"column":359,"offset":360},18,579,{"start":362,"end":364},{"line":356,"column":23,"offset":363},562,{"line":356,"column":365,"offset":366},20,581,{"start":368,"end":369},{"line":356,"column":23,"offset":363},{"line":356,"column":365,"offset":366},{"type":14,"tagName":15,"properties":371,"children":372,"position":381},{},[373],{"type":19,"value":374,"position":375},"Runs for each candle on the chart. Process indicator calculations. This repeats for every candle, computing values based on your defined logic.",{"start":376,"end":379},{"line":377,"column":23,"offset":378},28,583,{"line":377,"column":74,"offset":380},726,{"start":382,"end":383},{"line":377,"column":23,"offset":378},{"line":377,"column":74,"offset":380},{"type":19,"value":100},{"type":14,"tagName":102,"properties":386,"children":387,"position":619},{},[388,427],{"type":14,"tagName":106,"properties":389,"children":390,"position":424},{},[391],{"type":14,"tagName":110,"properties":392,"children":393,"position":421},{},[394,408],{"type":14,"tagName":114,"properties":395,"children":396,"position":403},{},[397],{"type":19,"value":118,"position":398},{"start":399,"end":401},{"line":296,"column":70,"offset":400},730,{"line":296,"column":124,"offset":402},734,{"start":404,"end":406},{"line":296,"column":23,"offset":405},728,{"line":296,"column":130,"offset":407},735,{"type":14,"tagName":114,"properties":409,"children":410,"position":417},{},[411],{"type":19,"value":136,"position":412},{"start":413,"end":415},{"line":296,"column":139,"offset":414},737,{"line":296,"column":142,"offset":416},748,{"start":418,"end":419},{"line":296,"column":130,"offset":407},{"line":296,"column":147,"offset":420},750,{"start":422,"end":423},{"line":296,"column":23,"offset":405},{"line":296,"column":147,"offset":420},{"start":425,"end":426},{"line":296,"column":23,"offset":405},{"line":296,"column":147,"offset":420},{"type":14,"tagName":156,"properties":428,"children":429,"position":616},{},[430,509,561],{"type":14,"tagName":110,"properties":431,"children":432,"position":506},{},[433,448],{"type":14,"tagName":163,"properties":434,"children":435,"position":443},{},[436],{"type":19,"value":437,"position":438},"Calculate indicators",{"start":439,"end":441},{"line":305,"column":70,"offset":440},776,{"line":305,"column":147,"offset":442},796,{"start":444,"end":446},{"line":305,"column":23,"offset":445},774,{"line":305,"column":200,"offset":447},797,{"type":14,"tagName":163,"properties":449,"children":450,"position":502},{},[451,464,471,484,490],{"type":14,"tagName":175,"properties":452,"children":453,"position":461},{},[454],{"type":19,"value":455,"position":456},"rsi(...)",{"start":457,"end":459},{"line":305,"column":356,"offset":458},799,{"line":305,"column":234,"offset":460},809,{"start":462,"end":463},{"line":305,"column":356,"offset":458},{"line":305,"column":234,"offset":460},{"type":19,"value":465,"position":466},", ",{"start":467,"end":468},{"line":305,"column":234,"offset":460},{"line":305,"column":469,"offset":470},38,811,{"type":14,"tagName":175,"properties":472,"children":473,"position":481},{},[474],{"type":19,"value":475,"position":476},"ema(...)",{"start":477,"end":478},{"line":305,"column":469,"offset":470},{"line":305,"column":479,"offset":480},48,821,{"start":482,"end":483},{"line":305,"column":469,"offset":470},{"line":305,"column":479,"offset":480},{"type":19,"value":465,"position":485},{"start":486,"end":487},{"line":305,"column":479,"offset":480},{"line":305,"column":488,"offset":489},50,823,{"type":14,"tagName":175,"properties":491,"children":492,"position":499},{},[493],{"type":19,"value":494,"position":495},"sma(...)",{"start":496,"end":497},{"line":305,"column":488,"offset":489},{"line":305,"column":327,"offset":498},833,{"start":500,"end":501},{"line":305,"column":488,"offset":489},{"line":305,"column":327,"offset":498},{"start":503,"end":504},{"line":305,"column":200,"offset":447},{"line":305,"column":332,"offset":505},835,{"start":507,"end":508},{"line":305,"column":23,"offset":445},{"line":305,"column":332,"offset":505},{"type":14,"tagName":110,"properties":510,"children":511,"position":558},{},[512,542],{"type":14,"tagName":163,"properties":513,"children":514,"position":536},{},[515,523],{"type":19,"value":516,"position":517},"Store temporary values in ",{"start":518,"end":521},{"line":519,"column":70,"offset":520},33,838,{"line":519,"column":287,"offset":522},864,{"type":14,"tagName":175,"properties":524,"children":525,"position":533},{},[526],{"type":19,"value":527,"position":528},"var",{"start":529,"end":530},{"line":519,"column":287,"offset":522},{"line":519,"column":531,"offset":532},34,869,{"start":534,"end":535},{"line":519,"column":287,"offset":522},{"line":519,"column":531,"offset":532},{"start":537,"end":539},{"line":519,"column":23,"offset":538},836,{"line":519,"column":540,"offset":541},35,870,{"type":14,"tagName":163,"properties":543,"children":544,"position":553},{},[545],{"type":19,"value":546,"position":547},"For comparisons, colors, or per-candle logic",{"start":548,"end":550},{"line":519,"column":243,"offset":549},872,{"line":519,"column":551,"offset":552},81,916,{"start":554,"end":555},{"line":519,"column":540,"offset":541},{"line":519,"column":556,"offset":557},83,918,{"start":559,"end":560},{"line":519,"column":23,"offset":538},{"line":519,"column":556,"offset":557},{"type":14,"tagName":110,"properties":562,"children":563,"position":613},{},[564,579],{"type":14,"tagName":163,"properties":565,"children":566,"position":574},{},[567],{"type":19,"value":568,"position":569},"Make decisions",{"start":570,"end":572},{"line":531,"column":70,"offset":571},921,{"line":531,"column":275,"offset":573},935,{"start":575,"end":577},{"line":531,"column":23,"offset":576},919,{"line":531,"column":359,"offset":578},936,{"type":14,"tagName":163,"properties":580,"children":581,"position":608},{},[582,589,601],{"type":19,"value":583,"position":584},"Use ",{"start":585,"end":587},{"line":531,"column":365,"offset":586},938,{"line":531,"column":200,"offset":588},942,{"type":14,"tagName":175,"properties":590,"children":591,"position":598},{},[592],{"type":19,"value":593,"position":594},"if/else",{"start":595,"end":596},{"line":531,"column":200,"offset":588},{"line":531,"column":519,"offset":597},951,{"start":599,"end":600},{"line":531,"column":200,"offset":588},{"line":531,"column":519,"offset":597},{"type":19,"value":602,"position":603}," to compare values",{"start":604,"end":605},{"line":531,"column":519,"offset":597},{"line":531,"column":606,"offset":607},51,969,{"start":609,"end":610},{"line":531,"column":359,"offset":578},{"line":531,"column":611,"offset":612},53,971,{"start":614,"end":615},{"line":531,"column":23,"offset":576},{"line":531,"column":611,"offset":612},{"start":617,"end":618},{"line":305,"column":23,"offset":445},{"line":531,"column":611,"offset":612},{"start":620,"end":621},{"line":296,"column":23,"offset":405},{"line":531,"column":611,"offset":612},{"type":14,"tagName":623,"properties":624,"children":626},"hint",{"type":625},"warning",[627],{"type":14,"tagName":15,"properties":628,"children":629,"position":655},{},[630,637,648],{"type":19,"value":631,"position":632},"Don't create ",{"start":633,"end":635},{"line":252,"column":23,"offset":634},1002,{"line":252,"column":73,"offset":636},1015,{"type":14,"tagName":175,"properties":638,"children":639,"position":645},{},[640],{"type":19,"value":313,"position":641},{"start":642,"end":643},{"line":252,"column":73,"offset":636},{"line":252,"column":356,"offset":644},1027,{"start":646,"end":647},{"line":252,"column":73,"offset":636},{"line":252,"column":356,"offset":644},{"type":19,"value":649,"position":650}," in the Calculate phase — use the ones from Setup.",{"start":651,"end":652},{"line":252,"column":356,"offset":644},{"line":252,"column":653,"offset":654},76,1077,{"start":656,"end":657},{"line":252,"column":23,"offset":634},{"line":252,"column":653,"offset":654},{"type":14,"tagName":56,"properties":659,"children":660},{},[661,682,697,698,881],{"type":14,"tagName":15,"properties":662,"children":663,"position":679},{},[664],{"type":14,"tagName":29,"properties":665,"children":666,"position":674},{},[667],{"type":19,"value":668,"position":669},"Display Phase",{"start":670,"end":672},{"line":488,"column":70,"offset":671},1126,{"line":488,"column":79,"offset":673},1139,{"start":675,"end":677},{"line":488,"column":23,"offset":676},1124,{"line":488,"column":359,"offset":678},1141,{"start":680,"end":681},{"line":488,"column":23,"offset":676},{"line":488,"column":359,"offset":678},{"type":14,"tagName":15,"properties":683,"children":684,"position":694},{},[685],{"type":19,"value":686,"position":687},"Runs for each candle, after calculations. Draw your indicator on the chart using the calculated values.",{"start":688,"end":691},{"line":689,"column":23,"offset":690},52,1143,{"line":689,"column":692,"offset":693},104,1246,{"start":695,"end":696},{"line":689,"column":23,"offset":690},{"line":689,"column":692,"offset":693},{"type":19,"value":100},{"type":14,"tagName":102,"properties":699,"children":700,"position":878},{},[701,744],{"type":14,"tagName":106,"properties":702,"children":703,"position":741},{},[704],{"type":14,"tagName":110,"properties":705,"children":706,"position":738},{},[707,724],{"type":14,"tagName":114,"properties":708,"children":709,"position":718},{},[710],{"type":19,"value":711,"position":712},"Function",{"start":713,"end":716},{"line":714,"column":70,"offset":715},54,1250,{"line":714,"column":91,"offset":717},1258,{"start":719,"end":721},{"line":714,"column":23,"offset":720},1248,{"line":714,"column":722,"offset":723},12,1259,{"type":14,"tagName":114,"properties":725,"children":726,"position":734},{},[727],{"type":19,"value":728,"position":729},"Use Case",{"start":730,"end":732},{"line":714,"column":73,"offset":731},1261,{"line":714,"column":191,"offset":733},1269,{"start":735,"end":736},{"line":714,"column":722,"offset":723},{"line":714,"column":200,"offset":737},1271,{"start":739,"end":740},{"line":714,"column":23,"offset":720},{"line":714,"column":200,"offset":737},{"start":742,"end":743},{"line":714,"column":23,"offset":720},{"line":714,"column":200,"offset":737},{"type":14,"tagName":156,"properties":745,"children":746,"position":875},{},[747,792,834],{"type":14,"tagName":110,"properties":748,"children":749,"position":789},{},[750,773],{"type":14,"tagName":163,"properties":751,"children":752,"position":767},{},[753],{"type":14,"tagName":175,"properties":754,"children":755,"position":764},{},[756],{"type":19,"value":757,"position":758},"plotLine(...)",{"start":759,"end":762},{"line":760,"column":70,"offset":761},56,1298,{"line":760,"column":359,"offset":763},1313,{"start":765,"end":766},{"line":760,"column":70,"offset":761},{"line":760,"column":359,"offset":763},{"start":768,"end":770},{"line":760,"column":23,"offset":769},1296,{"line":760,"column":771,"offset":772},19,1314,{"type":14,"tagName":163,"properties":774,"children":775,"position":784},{},[776],{"type":19,"value":777,"position":778},"Lines for RSI, moving averages, etc.",{"start":779,"end":781},{"line":760,"column":142,"offset":780},1316,{"line":760,"column":782,"offset":783},57,1352,{"start":785,"end":786},{"line":760,"column":771,"offset":772},{"line":760,"column":787,"offset":788},59,1354,{"start":790,"end":791},{"line":760,"column":23,"offset":769},{"line":760,"column":787,"offset":788},{"type":14,"tagName":110,"properties":793,"children":794,"position":831},{},[795,816],{"type":14,"tagName":163,"properties":796,"children":797,"position":811},{},[798],{"type":14,"tagName":175,"properties":799,"children":800,"position":808},{},[801],{"type":19,"value":802,"position":803},"plotBar(...)",{"start":804,"end":806},{"line":782,"column":70,"offset":805},1357,{"line":782,"column":275,"offset":807},1371,{"start":809,"end":810},{"line":782,"column":70,"offset":805},{"line":782,"column":275,"offset":807},{"start":812,"end":814},{"line":782,"column":23,"offset":813},1355,{"line":782,"column":359,"offset":815},1372,{"type":14,"tagName":163,"properties":817,"children":818,"position":826},{},[819],{"type":19,"value":820,"position":821},"Vertical bars for volume, histograms",{"start":822,"end":824},{"line":782,"column":365,"offset":823},1374,{"line":782,"column":760,"offset":825},1410,{"start":827,"end":828},{"line":782,"column":359,"offset":815},{"line":782,"column":829,"offset":830},58,1412,{"start":832,"end":833},{"line":782,"column":23,"offset":813},{"line":782,"column":829,"offset":830},{"type":14,"tagName":110,"properties":835,"children":836,"position":872},{},[837,858],{"type":14,"tagName":163,"properties":838,"children":839,"position":853},{},[840],{"type":14,"tagName":175,"properties":841,"children":842,"position":850},{},[843],{"type":19,"value":844,"position":845},"plotShape(...)",{"start":846,"end":848},{"line":829,"column":70,"offset":847},1415,{"line":829,"column":771,"offset":849},1431,{"start":851,"end":852},{"line":829,"column":70,"offset":847},{"line":829,"column":771,"offset":849},{"start":854,"end":856},{"line":829,"column":23,"offset":855},1413,{"line":829,"column":365,"offset":857},1432,{"type":14,"tagName":163,"properties":859,"children":860,"position":868},{},[861],{"type":19,"value":862,"position":863},"Markers, arrows, labels for signals",{"start":864,"end":866},{"line":829,"column":191,"offset":865},1434,{"line":829,"column":782,"offset":867},1469,{"start":869,"end":870},{"line":829,"column":365,"offset":857},{"line":829,"column":787,"offset":871},1471,{"start":873,"end":874},{"line":829,"column":23,"offset":855},{"line":829,"column":787,"offset":871},{"start":876,"end":877},{"line":760,"column":23,"offset":769},{"line":829,"column":787,"offset":871},{"start":879,"end":880},{"line":714,"column":23,"offset":720},{"line":829,"column":787,"offset":871},{"type":14,"tagName":623,"properties":882,"children":884},{"type":883},"success",[885],{"type":14,"tagName":15,"properties":886,"children":887,"position":896},{},[888],{"type":19,"value":889,"position":890},"You can use multiple plot functions in one indicator.",{"start":891,"end":894},{"line":892,"column":23,"offset":893},63,1502,{"line":892,"column":714,"offset":895},1555,{"start":897,"end":898},{"line":892,"column":23,"offset":893},{"line":892,"column":714,"offset":895},{"type":19,"value":50},{"type":14,"tagName":901,"properties":902,"children":904,"position":914},"h2",{"id":903},"understanding-the-flow",[905],{"type":19,"value":906,"position":907},"Understanding the Flow",{"start":908,"end":912},{"line":909,"column":910,"offset":911},75,4,1612,{"line":909,"column":356,"offset":913},1634,{"start":915,"end":917},{"line":909,"column":23,"offset":916},1609,{"line":909,"column":356,"offset":913},{"type":19,"value":50},{"type":11,"children":920},[921],{"type":14,"tagName":922,"properties":923,"children":927,"data":-1},"pre",{"class":924,"style":925,"tabindex":926},"shiki shiki-themes github-dark github-light","--shiki-dark:#e1e4e8;--shiki-light:#24292e;--shiki-dark-bg:#24292e;--shiki-light-bg:#fff","0",[928],{"type":14,"tagName":175,"properties":929,"children":930},{},[931,941,942,950,951,959,960,967,968,976,977,984,985],{"type":14,"tagName":932,"properties":933,"children":935},"span",{"class":934},"line",[936],{"type":14,"tagName":932,"properties":937,"children":938},{},[939],{"type":19,"value":940},"Phase 1 (Setup runs once)",{"type":19,"value":50},{"type":14,"tagName":932,"properties":943,"children":944},{"class":934},[945],{"type":14,"tagName":932,"properties":946,"children":947},{},[948],{"type":19,"value":949},"    ↓",{"type":19,"value":50},{"type":14,"tagName":932,"properties":952,"children":953},{"class":934},[954],{"type":14,"tagName":932,"properties":955,"children":956},{},[957],{"type":19,"value":958},"Phase 2 (Calculate for candle 1) → Phase 3 (Display candle 1)",{"type":19,"value":50},{"type":14,"tagName":932,"properties":961,"children":962},{"class":934},[963],{"type":14,"tagName":932,"properties":964,"children":965},{},[966],{"type":19,"value":949},{"type":19,"value":50},{"type":14,"tagName":932,"properties":969,"children":970},{"class":934},[971],{"type":14,"tagName":932,"properties":972,"children":973},{},[974],{"type":19,"value":975},"Phase 2 (Calculate for candle 2) → Phase 3 (Display candle 2)",{"type":19,"value":50},{"type":14,"tagName":932,"properties":978,"children":979},{"class":934},[980],{"type":14,"tagName":932,"properties":981,"children":982},{},[983],{"type":19,"value":949},{"type":19,"value":50},{"type":14,"tagName":932,"properties":986,"children":987},{"class":934},[988],{"type":14,"tagName":932,"properties":989,"children":990},{},[991],{"type":19,"value":992},"...and so on for every candle",{"type":19,"value":50},{"type":14,"tagName":901,"properties":995,"children":997,"position":1006},{"id":996},"key-characteristics",[998],{"type":19,"value":999,"position":1000},"Key Characteristics",{"start":1001,"end":1004},{"line":1002,"column":910,"offset":1003},88,1851,{"line":1002,"column":147,"offset":1005},1870,{"start":1007,"end":1009},{"line":1002,"column":23,"offset":1008},1848,{"line":1002,"column":147,"offset":1005},{"type":19,"value":50},{"type":14,"tagName":1012,"properties":1013,"children":1014},"cardgrid",{},[1015,1023,1033,1039],{"type":14,"tagName":1016,"properties":1017,"children":1020},"card",{"title":1018,"href":1019},"Deterministic Results","",[1021],{"type":19,"value":1022},"Given the same input data, a script will always produce identical output. Essential for reliable backtesting and strategy validation.",{"type":14,"tagName":1016,"properties":1024,"children":1026},{"title":1025,"href":1019},"Immutable Historical Data",[1027,1031],{"type":14,"tagName":175,"properties":1028,"children":1029},{},[1030],{"type":19,"value":313},{"type":19,"value":1032}," objects provide read-only access to historical values. Past data cannot be modified, ensuring data integrity.",{"type":14,"tagName":1016,"properties":1034,"children":1036},{"title":1035,"href":1019},"Efficient Memory Usage",[1037],{"type":19,"value":1038},"Only current bar calculations are held in memory. Historical data is managed by the runtime with optimized caching.",{"type":14,"tagName":1016,"properties":1040,"children":1042},{"title":1041,"href":1019},"Real-time Compatibility",[1043],{"type":19,"value":1044},"The same script logic handles both historical analysis and live data processing without special handling.",{"type":19,"value":50},{"type":14,"tagName":901,"properties":1047,"children":1049,"position":1058},{"id":1048},"limitations-and-constraints",[1050],{"type":19,"value":1051,"position":1052},"Limitations and Constraints",{"start":1053,"end":1055},{"line":40,"column":910,"offset":1054},2641,{"line":40,"column":1056,"offset":1057},31,2668,{"start":1059,"end":1061},{"line":40,"column":23,"offset":1060},2638,{"line":40,"column":1056,"offset":1057},{"type":19,"value":50},{"type":14,"tagName":623,"properties":1064,"children":1065},{"type":625},[1066],{"type":14,"tagName":15,"properties":1067,"children":1068,"position":1078},{},[1069],{"type":19,"value":1070,"position":1071},"Keep these constraints in mind when writing your indicators.",{"start":1072,"end":1075},{"line":1073,"column":23,"offset":1074},103,2699,{"line":1073,"column":1076,"offset":1077},61,2759,{"start":1079,"end":1080},{"line":1073,"column":23,"offset":1074},{"line":1073,"column":1076,"offset":1077},{"type":19,"value":50},{"type":14,"tagName":1083,"properties":1084,"children":1085,"position":1320},"ul",{},[1086,1087,1138,1139,1204,1205,1235,1236,1319],{"type":19,"value":50},{"type":14,"tagName":1088,"properties":1089,"children":1090,"position":1134},"li",{},[1091,1108,1115,1128],{"type":14,"tagName":29,"properties":1092,"children":1093,"position":1103},{},[1094],{"type":19,"value":1095,"position":1096},"No Future Data Access",{"start":1097,"end":1101},{"line":1098,"column":1099,"offset":1100},108,5,2781,{"line":1098,"column":356,"offset":1102},2802,{"start":1104,"end":1106},{"line":1098,"column":70,"offset":1105},2779,{"line":1098,"column":377,"offset":1107},2804,{"type":19,"value":1109,"position":1110}," — Scripts cannot access data from future bars (e.g., ",{"start":1111,"end":1112},{"line":1098,"column":377,"offset":1107},{"line":1098,"column":1113,"offset":1114},82,2858,{"type":14,"tagName":175,"properties":1116,"children":1117,"position":1125},{},[1118],{"type":19,"value":1119,"position":1120},"ts[-1]",{"start":1121,"end":1122},{"line":1098,"column":1113,"offset":1114},{"line":1098,"column":1123,"offset":1124},90,2866,{"start":1126,"end":1127},{"line":1098,"column":1113,"offset":1114},{"line":1098,"column":1123,"offset":1124},{"type":19,"value":1129,"position":1130}," is invalid). This prevents look-ahead bias in analysis.",{"start":1131,"end":1132},{"line":1098,"column":1123,"offset":1124},{"line":1098,"column":80,"offset":1133},2922,{"start":1135,"end":1137},{"line":1098,"column":23,"offset":1136},2777,{"line":1098,"column":80,"offset":1133},{"type":19,"value":50},{"type":14,"tagName":1088,"properties":1140,"children":1141,"position":1200},{},[1142,1175,1182,1193],{"type":14,"tagName":29,"properties":1143,"children":1144,"position":1170},{},[1145,1153,1164],{"type":19,"value":1146,"position":1147},"Global Scope ",{"start":1148,"end":1151},{"line":1149,"column":1099,"offset":1150},109,2927,{"line":1149,"column":359,"offset":1152},2940,{"type":14,"tagName":175,"properties":1154,"children":1155,"position":1161},{},[1156],{"type":19,"value":313,"position":1157},{"start":1158,"end":1159},{"line":1149,"column":359,"offset":1152},{"line":1149,"column":296,"offset":1160},2952,{"start":1162,"end":1163},{"line":1149,"column":359,"offset":1152},{"line":1149,"column":296,"offset":1160},{"type":19,"value":1165,"position":1166}," Only",{"start":1167,"end":1168},{"line":1149,"column":296,"offset":1160},{"line":1149,"column":540,"offset":1169},2957,{"start":1171,"end":1173},{"line":1149,"column":70,"offset":1172},2925,{"line":1149,"column":243,"offset":1174},2959,{"type":19,"value":1176,"position":1177}," — ",{"start":1178,"end":1179},{"line":1149,"column":243,"offset":1174},{"line":1149,"column":1180,"offset":1181},40,2962,{"type":14,"tagName":175,"properties":1183,"children":1184,"position":1190},{},[1185],{"type":19,"value":313,"position":1186},{"start":1187,"end":1188},{"line":1149,"column":1180,"offset":1181},{"line":1149,"column":689,"offset":1189},2974,{"start":1191,"end":1192},{"line":1149,"column":1180,"offset":1181},{"line":1149,"column":689,"offset":1189},{"type":19,"value":1194,"position":1195}," declarations must be in global scope. They cannot be declared inside functions, loops, or conditional blocks.",{"start":1196,"end":1197},{"line":1149,"column":689,"offset":1189},{"line":1149,"column":1198,"offset":1199},162,3084,{"start":1201,"end":1203},{"line":1149,"column":23,"offset":1202},2923,{"line":1149,"column":1198,"offset":1199},{"type":19,"value":50},{"type":14,"tagName":1088,"properties":1206,"children":1207,"position":1231},{},[1208,1224],{"type":14,"tagName":29,"properties":1209,"children":1210,"position":1219},{},[1211],{"type":19,"value":1212,"position":1213},"Execution Time Limits",{"start":1214,"end":1217},{"line":1215,"column":1099,"offset":1216},110,3089,{"line":1215,"column":356,"offset":1218},3110,{"start":1220,"end":1222},{"line":1215,"column":70,"offset":1221},3087,{"line":1215,"column":377,"offset":1223},3112,{"type":19,"value":1225,"position":1226}," — scripts must complete execution within 500ms (excluding data fetch). This ensures responsive chart rendering and prevents infinite loops.",{"start":1227,"end":1228},{"line":1215,"column":377,"offset":1223},{"line":1215,"column":1229,"offset":1230},168,3252,{"start":1232,"end":1234},{"line":1215,"column":23,"offset":1233},3085,{"line":1215,"column":1229,"offset":1230},{"type":19,"value":50},{"type":14,"tagName":1088,"properties":1237,"children":1238,"position":1315},{},[1239,1255,1260,1271,1277,1288,1295,1308],{"type":14,"tagName":29,"properties":1240,"children":1241,"position":1250},{},[1242],{"type":19,"value":1243,"position":1244},"No Cross-Bar Variable Persistence",{"start":1245,"end":1248},{"line":1246,"column":1099,"offset":1247},111,3257,{"line":1246,"column":469,"offset":1249},3290,{"start":1251,"end":1253},{"line":1246,"column":70,"offset":1252},3255,{"line":1246,"column":1180,"offset":1254},3292,{"type":19,"value":1176,"position":1256},{"start":1257,"end":1258},{"line":1246,"column":1180,"offset":1254},{"line":1246,"column":37,"offset":1259},3295,{"type":14,"tagName":175,"properties":1261,"children":1262,"position":1268},{},[1263],{"type":19,"value":527,"position":1264},{"start":1265,"end":1266},{"line":1246,"column":37,"offset":1259},{"line":1246,"column":479,"offset":1267},3300,{"start":1269,"end":1270},{"line":1246,"column":37,"offset":1259},{"line":1246,"column":479,"offset":1267},{"type":19,"value":1272,"position":1273}," variables cannot maintain state between bars. Use ",{"start":1274,"end":1275},{"line":1246,"column":479,"offset":1267},{"line":1246,"column":39,"offset":1276},3351,{"type":14,"tagName":175,"properties":1278,"children":1279,"position":1285},{},[1280],{"type":19,"value":313,"position":1281},{"start":1282,"end":1283},{"line":1246,"column":39,"offset":1276},{"line":1246,"column":1246,"offset":1284},3363,{"start":1286,"end":1287},{"line":1246,"column":39,"offset":1276},{"line":1246,"column":1246,"offset":1284},{"type":19,"value":1289,"position":1290}," for values that need historical access, or ",{"start":1291,"end":1292},{"line":1246,"column":1246,"offset":1284},{"line":1246,"column":1293,"offset":1294},155,3407,{"type":14,"tagName":175,"properties":1296,"children":1297,"position":1305},{},[1298],{"type":19,"value":1299,"position":1300},"static",{"start":1301,"end":1302},{"line":1246,"column":1293,"offset":1294},{"line":1246,"column":1303,"offset":1304},163,3415,{"start":1306,"end":1307},{"line":1246,"column":1293,"offset":1294},{"line":1246,"column":1303,"offset":1304},{"type":19,"value":1309,"position":1310}," for persistent values.",{"start":1311,"end":1312},{"line":1246,"column":1303,"offset":1304},{"line":1246,"column":1313,"offset":1314},186,3438,{"start":1316,"end":1318},{"line":1246,"column":23,"offset":1317},3253,{"line":1246,"column":1313,"offset":1314},{"type":19,"value":50},{"start":1321,"end":1322},{"line":1098,"column":23,"offset":1136},{"line":1246,"column":1313,"offset":1314},{"type":19,"value":50},{"type":14,"tagName":901,"properties":1325,"children":1327,"position":1335},{"id":1326},"example-complete-indicator-structure",[1328],{"type":19,"value":1329,"position":1330},"Example: Complete Indicator Structure",{"start":1331,"end":1333},{"line":94,"column":910,"offset":1332},3444,{"line":94,"column":27,"offset":1334},3481,{"start":1336,"end":1338},{"line":94,"column":23,"offset":1337},3441,{"line":94,"column":27,"offset":1334},{"type":19,"value":50},{"type":11,"children":1341},[1342],{"type":14,"tagName":922,"properties":1343,"children":1344,"data":-1},{"class":924,"style":925,"tabindex":926},[1345],{"type":14,"tagName":175,"properties":1346,"children":1347},{},[1348,1357,1358,1361,1362,1370,1371,1432,1433,1436,1437,1445,1446,1527,1528,1603,1604,1679,1680,1683,1684,1692,1693,1733,1734,1737,1738,1746,1747,1755,1756,1800,1801,1804,1805,1813,1814,1894,1895,1898,1899,1907,1908,2026,2027,2030,2031,2039,2040,2070,2071],{"type":14,"tagName":932,"properties":1349,"children":1350},{"class":934},[1351],{"type":14,"tagName":932,"properties":1352,"children":1354},{"style":1353},"--shiki-dark:#6A737D;--shiki-light:#6A737D",[1355],{"type":19,"value":1356},"//@version=2",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1359,"children":1360},{"class":934},[],{"type":19,"value":50},{"type":14,"tagName":932,"properties":1363,"children":1364},{"class":934},[1365],{"type":14,"tagName":932,"properties":1366,"children":1367},{"style":1353},[1368],{"type":19,"value":1369},"// ====== PHASE 1: SETUP ======",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1372,"children":1373},{"class":934},[1374,1380,1386,1392,1398,1403,1407,1412,1417,1421,1427],{"type":14,"tagName":932,"properties":1375,"children":1377},{"style":1376},"--shiki-dark:#B392F0;--shiki-light:#6F42C1",[1378],{"type":19,"value":1379},"define",{"type":14,"tagName":932,"properties":1381,"children":1383},{"style":1382},"--shiki-dark:#E1E4E8;--shiki-light:#24292E",[1384],{"type":19,"value":1385},"(title",{"type":14,"tagName":932,"properties":1387,"children":1389},{"style":1388},"--shiki-dark:#F97583;--shiki-light:#D73A49",[1390],{"type":19,"value":1391},"=",{"type":14,"tagName":932,"properties":1393,"children":1395},{"style":1394},"--shiki-dark:#9ECBFF;--shiki-light:#032F62",[1396],{"type":19,"value":1397},"\"RSI Indicator\"",{"type":14,"tagName":932,"properties":1399,"children":1400},{"style":1382},[1401],{"type":19,"value":1402},", position",{"type":14,"tagName":932,"properties":1404,"children":1405},{"style":1388},[1406],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1408,"children":1409},{"style":1394},[1410],{"type":19,"value":1411},"\"offchart\"",{"type":14,"tagName":932,"properties":1413,"children":1414},{"style":1382},[1415],{"type":19,"value":1416},", axis",{"type":14,"tagName":932,"properties":1418,"children":1419},{"style":1388},[1420],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1422,"children":1424},{"style":1423},"--shiki-dark:#79B8FF;--shiki-light:#005CC5",[1425],{"type":19,"value":1426},"true",{"type":14,"tagName":932,"properties":1428,"children":1429},{"style":1382},[1430],{"type":19,"value":1431},");",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1434,"children":1435},{"class":934},[],{"type":19,"value":50},{"type":14,"tagName":932,"properties":1438,"children":1439},{"class":934},[1440],{"type":14,"tagName":932,"properties":1441,"children":1442},{"style":1353},[1443],{"type":19,"value":1444},"// User inputs",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1447,"children":1448},{"class":934},[1449,1453,1458,1462,1467,1472,1476,1481,1486,1490,1495,1500,1504,1509,1514,1518,1523],{"type":14,"tagName":932,"properties":1450,"children":1451},{"style":1388},[1452],{"type":19,"value":527},{"type":14,"tagName":932,"properties":1454,"children":1455},{"style":1382},[1456],{"type":19,"value":1457}," period ",{"type":14,"tagName":932,"properties":1459,"children":1460},{"style":1388},[1461],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1463,"children":1464},{"style":1376},[1465],{"type":19,"value":1466}," input",{"type":14,"tagName":932,"properties":1468,"children":1469},{"style":1382},[1470],{"type":19,"value":1471},"(name",{"type":14,"tagName":932,"properties":1473,"children":1474},{"style":1388},[1475],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1477,"children":1478},{"style":1394},[1479],{"type":19,"value":1480},"\"period\"",{"type":14,"tagName":932,"properties":1482,"children":1483},{"style":1382},[1484],{"type":19,"value":1485},", type",{"type":14,"tagName":932,"properties":1487,"children":1488},{"style":1388},[1489],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1491,"children":1492},{"style":1394},[1493],{"type":19,"value":1494},"\"number\"",{"type":14,"tagName":932,"properties":1496,"children":1497},{"style":1382},[1498],{"type":19,"value":1499},", defaultValue",{"type":14,"tagName":932,"properties":1501,"children":1502},{"style":1388},[1503],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1505,"children":1506},{"style":1423},[1507],{"type":19,"value":1508},"14",{"type":14,"tagName":932,"properties":1510,"children":1511},{"style":1382},[1512],{"type":19,"value":1513},", label",{"type":14,"tagName":932,"properties":1515,"children":1516},{"style":1388},[1517],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1519,"children":1520},{"style":1394},[1521],{"type":19,"value":1522},"\"RSI Period\"",{"type":14,"tagName":932,"properties":1524,"children":1525},{"style":1382},[1526],{"type":19,"value":1431},{"type":19,"value":50},{"type":14,"tagName":932,"properties":1529,"children":1530},{"class":934},[1531,1535,1540,1544,1548,1552,1556,1561,1565,1569,1573,1577,1581,1586,1590,1594,1599],{"type":14,"tagName":932,"properties":1532,"children":1533},{"style":1388},[1534],{"type":19,"value":527},{"type":14,"tagName":932,"properties":1536,"children":1537},{"style":1382},[1538],{"type":19,"value":1539}," overbought ",{"type":14,"tagName":932,"properties":1541,"children":1542},{"style":1388},[1543],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1545,"children":1546},{"style":1376},[1547],{"type":19,"value":1466},{"type":14,"tagName":932,"properties":1549,"children":1550},{"style":1382},[1551],{"type":19,"value":1471},{"type":14,"tagName":932,"properties":1553,"children":1554},{"style":1388},[1555],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1557,"children":1558},{"style":1394},[1559],{"type":19,"value":1560},"\"overbought\"",{"type":14,"tagName":932,"properties":1562,"children":1563},{"style":1382},[1564],{"type":19,"value":1485},{"type":14,"tagName":932,"properties":1566,"children":1567},{"style":1388},[1568],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1570,"children":1571},{"style":1394},[1572],{"type":19,"value":1494},{"type":14,"tagName":932,"properties":1574,"children":1575},{"style":1382},[1576],{"type":19,"value":1499},{"type":14,"tagName":932,"properties":1578,"children":1579},{"style":1388},[1580],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1582,"children":1583},{"style":1423},[1584],{"type":19,"value":1585},"70",{"type":14,"tagName":932,"properties":1587,"children":1588},{"style":1382},[1589],{"type":19,"value":1513},{"type":14,"tagName":932,"properties":1591,"children":1592},{"style":1388},[1593],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1595,"children":1596},{"style":1394},[1597],{"type":19,"value":1598},"\"Overbought Level\"",{"type":14,"tagName":932,"properties":1600,"children":1601},{"style":1382},[1602],{"type":19,"value":1431},{"type":19,"value":50},{"type":14,"tagName":932,"properties":1605,"children":1606},{"class":934},[1607,1611,1616,1620,1624,1628,1632,1637,1641,1645,1649,1653,1657,1662,1666,1670,1675],{"type":14,"tagName":932,"properties":1608,"children":1609},{"style":1388},[1610],{"type":19,"value":527},{"type":14,"tagName":932,"properties":1612,"children":1613},{"style":1382},[1614],{"type":19,"value":1615}," oversold ",{"type":14,"tagName":932,"properties":1617,"children":1618},{"style":1388},[1619],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1621,"children":1622},{"style":1376},[1623],{"type":19,"value":1466},{"type":14,"tagName":932,"properties":1625,"children":1626},{"style":1382},[1627],{"type":19,"value":1471},{"type":14,"tagName":932,"properties":1629,"children":1630},{"style":1388},[1631],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1633,"children":1634},{"style":1394},[1635],{"type":19,"value":1636},"\"oversold\"",{"type":14,"tagName":932,"properties":1638,"children":1639},{"style":1382},[1640],{"type":19,"value":1485},{"type":14,"tagName":932,"properties":1642,"children":1643},{"style":1388},[1644],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1646,"children":1647},{"style":1394},[1648],{"type":19,"value":1494},{"type":14,"tagName":932,"properties":1650,"children":1651},{"style":1382},[1652],{"type":19,"value":1499},{"type":14,"tagName":932,"properties":1654,"children":1655},{"style":1388},[1656],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1658,"children":1659},{"style":1423},[1660],{"type":19,"value":1661},"30",{"type":14,"tagName":932,"properties":1663,"children":1664},{"style":1382},[1665],{"type":19,"value":1513},{"type":14,"tagName":932,"properties":1667,"children":1668},{"style":1388},[1669],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1671,"children":1672},{"style":1394},[1673],{"type":19,"value":1674},"\"Oversold Level\"",{"type":14,"tagName":932,"properties":1676,"children":1677},{"style":1382},[1678],{"type":19,"value":1431},{"type":19,"value":50},{"type":14,"tagName":932,"properties":1681,"children":1682},{"class":934},[],{"type":19,"value":50},{"type":14,"tagName":932,"properties":1685,"children":1686},{"class":934},[1687],{"type":14,"tagName":932,"properties":1688,"children":1689},{"style":1353},[1690],{"type":19,"value":1691},"// Data source (timeseries created here)",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1694,"children":1695},{"class":934},[1696,1701,1705,1710,1715,1719,1724,1728],{"type":14,"tagName":932,"properties":1697,"children":1698},{"style":1382},[1699],{"type":19,"value":1700},"timeseries ohlcvData ",{"type":14,"tagName":932,"properties":1702,"children":1703},{"style":1388},[1704],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1706,"children":1707},{"style":1376},[1708],{"type":19,"value":1709}," ohlcv",{"type":14,"tagName":932,"properties":1711,"children":1712},{"style":1382},[1713],{"type":19,"value":1714},"(symbol",{"type":14,"tagName":932,"properties":1716,"children":1717},{"style":1388},[1718],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1720,"children":1721},{"style":1382},[1722],{"type":19,"value":1723},"currentSymbol, exchange",{"type":14,"tagName":932,"properties":1725,"children":1726},{"style":1388},[1727],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1729,"children":1730},{"style":1382},[1731],{"type":19,"value":1732},"currentExchange);",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1735,"children":1736},{"class":934},[],{"type":19,"value":50},{"type":14,"tagName":932,"properties":1739,"children":1740},{"class":934},[1741],{"type":14,"tagName":932,"properties":1742,"children":1743},{"style":1353},[1744],{"type":19,"value":1745},"// ====== PHASE 2: CALCULATE ======",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1748,"children":1749},{"class":934},[1750],{"type":14,"tagName":932,"properties":1751,"children":1752},{"style":1353},[1753],{"type":19,"value":1754},"// Calculate RSI",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1757,"children":1758},{"class":934},[1759,1763,1768,1772,1777,1782,1786,1791,1795],{"type":14,"tagName":932,"properties":1760,"children":1761},{"style":1388},[1762],{"type":19,"value":527},{"type":14,"tagName":932,"properties":1764,"children":1765},{"style":1382},[1766],{"type":19,"value":1767}," rsiValue ",{"type":14,"tagName":932,"properties":1769,"children":1770},{"style":1388},[1771],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1773,"children":1774},{"style":1376},[1775],{"type":19,"value":1776}," rsi",{"type":14,"tagName":932,"properties":1778,"children":1779},{"style":1382},[1780],{"type":19,"value":1781},"(source",{"type":14,"tagName":932,"properties":1783,"children":1784},{"style":1388},[1785],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1787,"children":1788},{"style":1382},[1789],{"type":19,"value":1790},"ohlcvData.close, period",{"type":14,"tagName":932,"properties":1792,"children":1793},{"style":1388},[1794],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1796,"children":1797},{"style":1382},[1798],{"type":19,"value":1799},"period);",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1802,"children":1803},{"class":934},[],{"type":19,"value":50},{"type":14,"tagName":932,"properties":1806,"children":1807},{"class":934},[1808],{"type":14,"tagName":932,"properties":1809,"children":1810},{"style":1353},[1811],{"type":19,"value":1812},"// Determine color based on value",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1815,"children":1816},{"class":934},[1817,1821,1826,1830,1834,1839,1843,1848,1853,1858,1863,1868,1872,1876,1881,1885,1890],{"type":14,"tagName":932,"properties":1818,"children":1819},{"style":1388},[1820],{"type":19,"value":527},{"type":14,"tagName":932,"properties":1822,"children":1823},{"style":1382},[1824],{"type":19,"value":1825}," colorIndex ",{"type":14,"tagName":932,"properties":1827,"children":1828},{"style":1388},[1829],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1831,"children":1832},{"style":1382},[1833],{"type":19,"value":1767},{"type":14,"tagName":932,"properties":1835,"children":1836},{"style":1388},[1837],{"type":19,"value":1838},">",{"type":14,"tagName":932,"properties":1840,"children":1841},{"style":1382},[1842],{"type":19,"value":1539},{"type":14,"tagName":932,"properties":1844,"children":1845},{"style":1388},[1846],{"type":19,"value":1847},"?",{"type":14,"tagName":932,"properties":1849,"children":1850},{"style":1423},[1851],{"type":19,"value":1852}," 0",{"type":14,"tagName":932,"properties":1854,"children":1855},{"style":1388},[1856],{"type":19,"value":1857}," :",{"type":14,"tagName":932,"properties":1859,"children":1860},{"style":1382},[1861],{"type":19,"value":1862}," (rsiValue ",{"type":14,"tagName":932,"properties":1864,"children":1865},{"style":1388},[1866],{"type":19,"value":1867},"\u003C",{"type":14,"tagName":932,"properties":1869,"children":1870},{"style":1382},[1871],{"type":19,"value":1615},{"type":14,"tagName":932,"properties":1873,"children":1874},{"style":1388},[1875],{"type":19,"value":1847},{"type":14,"tagName":932,"properties":1877,"children":1878},{"style":1423},[1879],{"type":19,"value":1880}," 1",{"type":14,"tagName":932,"properties":1882,"children":1883},{"style":1388},[1884],{"type":19,"value":1857},{"type":14,"tagName":932,"properties":1886,"children":1887},{"style":1423},[1888],{"type":19,"value":1889}," 2",{"type":14,"tagName":932,"properties":1891,"children":1892},{"style":1382},[1893],{"type":19,"value":1431},{"type":19,"value":50},{"type":14,"tagName":932,"properties":1896,"children":1897},{"class":934},[],{"type":19,"value":50},{"type":14,"tagName":932,"properties":1900,"children":1901},{"class":934},[1902],{"type":14,"tagName":932,"properties":1903,"children":1904},{"style":1353},[1905],{"type":19,"value":1906},"// ====== PHASE 3: DISPLAY ======",{"type":19,"value":50},{"type":14,"tagName":932,"properties":1909,"children":1910},{"class":934},[1911,1916,1921,1925,1930,1934,1939,1944,1948,1953,1958,1962,1967,1971,1976,1981,1985,1990,1994,1998,2003,2008,2012,2016,2021],{"type":14,"tagName":932,"properties":1912,"children":1913},{"style":1376},[1914],{"type":19,"value":1915},"plotLine",{"type":14,"tagName":932,"properties":1917,"children":1918},{"style":1382},[1919],{"type":19,"value":1920},"(value",{"type":14,"tagName":932,"properties":1922,"children":1923},{"style":1388},[1924],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1926,"children":1927},{"style":1382},[1928],{"type":19,"value":1929},"rsiValue, width",{"type":14,"tagName":932,"properties":1931,"children":1932},{"style":1388},[1933],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1935,"children":1936},{"style":1423},[1937],{"type":19,"value":1938},"2",{"type":14,"tagName":932,"properties":1940,"children":1941},{"style":1382},[1942],{"type":19,"value":1943},", colors",{"type":14,"tagName":932,"properties":1945,"children":1946},{"style":1388},[1947],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1949,"children":1950},{"style":1382},[1951],{"type":19,"value":1952},"[",{"type":14,"tagName":932,"properties":1954,"children":1955},{"style":1394},[1956],{"type":19,"value":1957},"\"red\"",{"type":14,"tagName":932,"properties":1959,"children":1960},{"style":1382},[1961],{"type":19,"value":465},{"type":14,"tagName":932,"properties":1963,"children":1964},{"style":1394},[1965],{"type":19,"value":1966},"\"green\"",{"type":14,"tagName":932,"properties":1968,"children":1969},{"style":1382},[1970],{"type":19,"value":465},{"type":14,"tagName":932,"properties":1972,"children":1973},{"style":1394},[1974],{"type":19,"value":1975},"\"blue\"",{"type":14,"tagName":932,"properties":1977,"children":1978},{"style":1382},[1979],{"type":19,"value":1980},"], colorIndex",{"type":14,"tagName":932,"properties":1982,"children":1983},{"style":1388},[1984],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1986,"children":1987},{"style":1382},[1988],{"type":19,"value":1989},"colorIndex, label",{"type":14,"tagName":932,"properties":1991,"children":1992},{"style":1388},[1993],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":1995,"children":1996},{"style":1382},[1997],{"type":19,"value":1952},{"type":14,"tagName":932,"properties":1999,"children":2000},{"style":1394},[2001],{"type":19,"value":2002},"\"RSI\"",{"type":14,"tagName":932,"properties":2004,"children":2005},{"style":1382},[2006],{"type":19,"value":2007},"], desc",{"type":14,"tagName":932,"properties":2009,"children":2010},{"style":1388},[2011],{"type":19,"value":1391},{"type":14,"tagName":932,"properties":2013,"children":2014},{"style":1382},[2015],{"type":19,"value":1952},{"type":14,"tagName":932,"properties":2017,"children":2018},{"style":1394},[2019],{"type":19,"value":2020},"\"Relative Strength Index\"",{"type":14,"tagName":932,"properties":2022,"children":2023},{"style":1382},[2024],{"type":19,"value":2025},"]);",{"type":19,"value":50},{"type":14,"tagName":932,"properties":2028,"children":2029},{"class":934},[],{"type":19,"value":50},{"type":14,"tagName":932,"properties":2032,"children":2033},{"class":934},[2034],{"type":14,"tagName":932,"properties":2035,"children":2036},{"style":1353},[2037],{"type":19,"value":2038},"// Draw horizontal reference lines",{"type":19,"value":50},{"type":14,"tagName":932,"properties":2041,"children":2042},{"class":934},[2043,2048,2053,2057,2061,2066],{"type":14,"tagName":932,"properties":2044,"children":2045},{"style":1376},[2046],{"type":19,"value":2047},"hline",{"type":14,"tagName":932,"properties":2049,"children":2050},{"style":1382},[2051],{"type":19,"value":2052},"(overbought, ",{"type":14,"tagName":932,"properties":2054,"children":2055},{"style":1394},[2056],{"type":19,"value":1957},{"type":14,"tagName":932,"properties":2058,"children":2059},{"style":1382},[2060],{"type":19,"value":465},{"type":14,"tagName":932,"properties":2062,"children":2063},{"style":1423},[2064],{"type":19,"value":2065},"1",{"type":14,"tagName":932,"properties":2067,"children":2068},{"style":1382},[2069],{"type":19,"value":1431},{"type":19,"value":50},{"type":14,"tagName":932,"properties":2072,"children":2073},{"class":934},[2074,2078,2083,2087,2091,2095],{"type":14,"tagName":932,"properties":2075,"children":2076},{"style":1376},[2077],{"type":19,"value":2047},{"type":14,"tagName":932,"properties":2079,"children":2080},{"style":1382},[2081],{"type":19,"value":2082},"(oversold, ",{"type":14,"tagName":932,"properties":2084,"children":2085},{"style":1394},[2086],{"type":19,"value":1966},{"type":14,"tagName":932,"properties":2088,"children":2089},{"style":1382},[2090],{"type":19,"value":465},{"type":14,"tagName":932,"properties":2092,"children":2093},{"style":1423},[2094],{"type":19,"value":2065},{"type":14,"tagName":932,"properties":2096,"children":2097},{"style":1382},[2098],{"type":19,"value":1431},{"quirksMode":2100},false,{"start":2102,"end":2103},{"line":23,"column":23,"offset":24},{"line":74,"column":23,"offset":2104},4522,1781011072741]