[{"data":1,"prerenderedAt":2909},["ShallowReactive",2],{"indicators:strategies/overview":3},{"slug":4,"filePath":5,"frontmatter":6,"rawMarkdown":11,"tree":12},"strategies/overview","strategies/overview.md",{"title":7,"description":8,"order":9,"section":10},"Strategies Overview","A strategy is an Indicator that places orders. The file declares strategy({ ... }) beside its outputs and calls strategy.long, strategy.exit, strategy.closeAll…",77,"strategies","---\ntitle: \"Strategies Overview\"\ndescription: \"A strategy is an Indicator that places orders. The file declares strategy({ ... }) beside its outputs and calls strategy.long, strategy.exit, strategy.closeAll…\"\norder: 77\nsection: \"strategies\"\n---\n\n\u003C!-- source: docs/indicators/strategies/overview.md; generated by packages/cli/scripts/gen-indicator-docs.ts, do not edit -->\n\n# Strategies Overview\n\nA strategy is an Indicator that places orders. The file declares `strategy({ ... })` beside its outputs and calls `strategy.long`, `strategy.exit`, `strategy.closeAll` and the position getters from `./gen/strategy` inside its bar logic; the host runs the same broker the kScript (legacy) Strategy Tester runs, so a kScript strategy ports one to one as one Indicator file, and its trade list, equity curve and stats come out bit for bit the same wherever the engine is deterministic. This page is the map: what a strategy file is, what a run returns, the guarantees, and where the twelve kScript strategy pages land in this tree.\n\n## What a strategy file is\n\nThe smallest useful one: long when the fast EMA crosses above the slow one, flat when it crosses back under.\n\n```typescript\n// Moving average cross as a strategy: long when the fast EMA crosses above the slow one, flat when it crosses back under.\nimport { input, line, ohlcv, output, overlay } from \"./sdk/declare\";\nimport { in_close } from \"./gen/inputs\";\nimport { emitRow, out_fast, out_slow } from \"./gen/outputs\";\nimport { strategy } from \"./gen/strategy\";\nimport { Cross, Ema } from \"./sdk/ta\";\n\nstrategy({ initialCapital: 10000, qtyType: \"percentOfEquity\", qtyValue: 50, commissionPercent: 0.05, slippageBps: 2 });\ninput(\"close\", ohlcv.close);\noutput(\"fast\", line, overlay, { description: \"9-period EMA of close\" });\noutput(\"slow\", line, overlay, { description: \"21-period EMA of close\" });\n\nconst fastEma = new Ema(9);\nconst slowEma = new Ema(21);\nconst cross = new Cross();\nlet fast: f64 = NaN;\nlet slow: f64 = NaN;\nlet crossed: i32 = 0;\n\nexport function init(): void {}\n\nexport function state(): i32 {\n  fast = fastEma.update(in_close());\n  slow = slowEma.update(in_close());\n  if (isNaN(fast) || isNaN(slow)) return 0;\n  crossed = cross.update(fast, slow);\n  return 1;\n}\n\nexport function finalize(): void {\n  if (crossed == 1) strategy.long(\"L\").send();\n  if (crossed == -1) strategy.closeAll();\n  out_fast(fast);\n  out_slow(slow);\n  emitRow();\n}\n\nexport function reset(): void {\n  fastEma.reset();\n  slowEma.reset();\n  cross.reset();\n  fast = NaN;\n  slow = NaN;\n  crossed = 0;\n}\n```\n\nThree things make it a strategy rather than an indicator:\n\n- `strategy({ ... })` at the top level replaces kScript's `strategy(...)` line. It is the broker: starting equity, sizing (`50%` of equity per entry), commission and slippage live in the file, so a shared package carries its own assumptions. Every field is optional; a bare `strategy()` takes every default. The build derives a `strategy` section into the sheet and marks the package a strategy.\n- `strategy.long(\"L\").send()` in `finalize()` queues a market order under the id `L`. An order placed on a bar fills no earlier than the next bar's open; nothing in a run can act on information it did not have.\n- `strategy.closeAll()` is the signal exit. Orders go in `finalize()` only; the position getters (`strategy.positionSize()` and the rest) answer in `state()` and `finalize()` and read the position after the bar's fills.\n\nThe outputs stay outputs: `fast` and `slow` are metric ids after install, chartable and alertable like any Indicator's. The strategy adds two host-published outputs of its own, `strategy.position` (the signed position after each bar's fills) and `strategy.equity`, readable as `wrun/@you/ma-cross/strategy.position` by screens, threshold alerts and the metric rules.\n\n## What a run returns\n\nEvery host that runs the package (a chart, an alert, `om backtest`) carries the engine's own result beside the outputs: a **trades list** (entries, exits, per-trade PnL, fees, exit reason), an **equity curve** and drawdown series, **performance stats** (net profit, win rate, profit factor, Sharpe, Sortino, max drawdown, exposure and the rest), and the **open trades and pending orders** as of the last bar. On a chart that is the Strategy Tester panel with trade markers on the price series; in the terminal it is the backtest card, and the JSON report carries the engine's records verbatim under `strategy`.\n\n```bash\nom wrun install ./ma-cross\nom backtest @you/ma-cross --asset BINANCE_FUTURES:BTCUSDT --window 90d\n```\n\n`om backtest @scope/name` names an installed package (add `@version` to pin one), `--asset` names the market the strategy trades (the broker fills against that market's candles, which is why a strategy's price input carries no market pin), and the window replays over whole closed bars. The card's header reads `fill=engine_broker` with the package's own commission and slippage; passing `--fee-bps`, `--slippage-bps`, `--latency-bars` or a book size is refused by name, because costs live in the file. [Reading the Strategy Tester](reading-the-tester.md) walks the card.\n\n## Core guarantees\n\n- **Deterministic.** The same package on the same bars produces the same trades, on every host: the broker is the engine's own code, run under the engine's own phase order, with no data providers attached.\n- **Lookahead-free.** Orders placed while bar N computes fill no earlier than bar N+1's open. The position a guard reads in `state()` is the position after that bar's fills, so a flat guard is already flat on the bar its exit filled.\n- **Honest accounting.** A bar that could have filled two levels settles by the declared `fillModel` and counts in `ambiguousFillCount`; rejected orders (the pyramiding cap, a size the equity cannot fund, an order placed on a live chart's forming bar) are counted, never dropped. The run details say `bar resolution`: this release attaches no finer-interval data, no order book and no funding data.\n\n## What the broker is, and is not\n\nThe same research tool the kScript tester is: fast iteration and honest reporting over bar closes. It settles orders at the next open, resting limits and stops when touched, protective exits under the fill model, isolated margin, liquidation and maker or taker fees on perps. It does not model queue position, partial fills at a level, replenishment, latency, or venue fees beyond the declared commission or maker and taker rates, and in this release it does not walk finer bars, price fills off a recorded book (`slippageModel: \"bookEstimate\"` is refused by name) or settle recorded funding (`funding: \"data\"` counts the bars it could not settle). Each is named in the run's stats rather than approximated.\n\n## The rule lane, beside this one\n\nAn Indicator that computes values and places no orders still backtests: a rule over one of its metric ids, authored as a candidate's condition `source` (a tree with the strategy's `on_true`/`on_false` as the sides, or a band that names its own sides) and replayed by `om backtest spec --candidate-file` through the replay venue, with `--fee-bps` and `--slippage-bps` as flags and a saved watch as the paper path. That lane keeps its own fill model (`fill=next_bar_open`) and its own report; the one-file form on these pages is the path for anything with ids, brackets, partial exits or a broker to reproduce.\n\n## Section contents\n\n- [Build your first strategy](first-strategy.md): an RSI reversion from a sentence to a read result, tuned honestly, then installed.\n- [Writing strategies](writing-strategies.md): the declaration table, the order API, the position and sizing model.\n- [Fill simulation](fill-simulation.md), [Slippage and costs](slippage-and-costs.md): the phase order, fill prices and fill models; commission, flat slippage, maker and taker rates.\n- [Perps and leverage](perps-and-leverage.md), [Perps: margin, liquidation, and funding](perps.md): the leveraged model and its counters.\n- [Reading the Strategy Tester](reading-the-tester.md), [Stats reference](stats-reference.md): the panel, the card, the report and every stat.\n- [Examples: spot](examples-spot.md), [Examples: the five perps scenarios](examples-perps.md), [Backtest a Hyperliquid perp strategy](examples-hyperliquid.md): the ports.\n",{"type":13,"children":14,"data":2902,"position":2904},"root",[15,25,28,29,145,146,165,166,181,182,1313,1314,1329,1330,1621,1622,1734,1735,1751,1752,1900,1901,1970,1971,2140,2141,2158,2159,2337,2338,2354,2355,2409,2410,2426,2427,2577,2578,2593,2594],{"type":16,"value":17,"position":18},"comment"," source: docs/indicators/strategies/overview.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":142},"element","p",{},[34,43,57,64,77,84,97,103,116,123,135],{"type":26,"value":35,"position":36},"A strategy is an Indicator that places orders. The file declares ",{"start":37,"end":40},{"line":38,"column":20,"offset":39},5,150,{"line":38,"column":41,"offset":42},66,215,{"type":30,"tagName":44,"properties":45,"children":46,"position":54},"code",{},[47],{"type":26,"value":48,"position":49},"strategy({ ... })",{"start":50,"end":51},{"line":38,"column":41,"offset":42},{"line":38,"column":52,"offset":53},85,234,{"start":55,"end":56},{"line":38,"column":41,"offset":42},{"line":38,"column":52,"offset":53},{"type":26,"value":58,"position":59}," beside its outputs and calls ",{"start":60,"end":61},{"line":38,"column":52,"offset":53},{"line":38,"column":62,"offset":63},115,264,{"type":30,"tagName":44,"properties":65,"children":66,"position":74},{},[67],{"type":26,"value":68,"position":69},"strategy.long",{"start":70,"end":71},{"line":38,"column":62,"offset":63},{"line":38,"column":72,"offset":73},130,279,{"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},132,281,{"type":30,"tagName":44,"properties":85,"children":86,"position":94},{},[87],{"type":26,"value":88,"position":89},"strategy.exit",{"start":90,"end":91},{"line":38,"column":82,"offset":83},{"line":38,"column":92,"offset":93},147,296,{"start":95,"end":96},{"line":38,"column":82,"offset":83},{"line":38,"column":92,"offset":93},{"type":26,"value":78,"position":98},{"start":99,"end":100},{"line":38,"column":92,"offset":93},{"line":38,"column":101,"offset":102},149,298,{"type":30,"tagName":44,"properties":104,"children":105,"position":113},{},[106],{"type":26,"value":107,"position":108},"strategy.closeAll",{"start":109,"end":110},{"line":38,"column":101,"offset":102},{"line":38,"column":111,"offset":112},168,317,{"start":114,"end":115},{"line":38,"column":101,"offset":102},{"line":38,"column":111,"offset":112},{"type":26,"value":117,"position":118}," and the position getters from ",{"start":119,"end":120},{"line":38,"column":111,"offset":112},{"line":38,"column":121,"offset":122},199,348,{"type":30,"tagName":44,"properties":124,"children":125,"position":132},{},[126],{"type":26,"value":127,"position":128},"./gen/strategy",{"start":129,"end":130},{"line":38,"column":121,"offset":122},{"line":38,"column":42,"offset":131},364,{"start":133,"end":134},{"line":38,"column":121,"offset":122},{"line":38,"column":42,"offset":131},{"type":26,"value":136,"position":137}," inside its bar logic; the host runs the same broker the kScript (legacy) Strategy Tester runs, so a kScript strategy ports one to one as one Indicator file, and its trade list, equity curve and stats come out bit for bit the same wherever the engine is deterministic. This page is the map: what a strategy file is, what a run returns, the guarantees, and where the twelve kScript strategy pages land in this tree.",{"start":138,"end":139},{"line":38,"column":42,"offset":131},{"line":38,"column":140,"offset":141},629,778,{"start":143,"end":144},{"line":38,"column":20,"offset":39},{"line":38,"column":140,"offset":141},{"type":26,"value":27},{"type":30,"tagName":147,"properties":148,"children":150,"position":161},"h2",{"id":149},"what-a-strategy-file-is",[151],{"type":26,"value":152,"position":153},"What a strategy file is",{"start":154,"end":158},{"line":155,"column":156,"offset":157},7,4,783,{"line":155,"column":159,"offset":160},27,806,{"start":162,"end":164},{"line":155,"column":20,"offset":163},780,{"line":155,"column":159,"offset":160},{"type":26,"value":27},{"type":30,"tagName":31,"properties":167,"children":168,"position":178},{},[169],{"type":26,"value":170,"position":171},"The smallest useful one: long when the fast EMA crosses above the slow one, flat when it crosses back under.",{"start":172,"end":175},{"line":173,"column":20,"offset":174},9,808,{"line":173,"column":176,"offset":177},109,916,{"start":179,"end":180},{"line":173,"column":20,"offset":174},{"line":173,"column":176,"offset":177},{"type":26,"value":27},{"type":13,"children":183},[184],{"type":30,"tagName":185,"properties":186,"children":190,"data":-1},"pre",{"class":187,"style":188,"tabindex":189},"shiki shiki-themes github-dark github-light","--shiki-dark:#e1e4e8;--shiki-light:#24292e;--shiki-dark-bg:#24292e;--shiki-light-bg:#fff","0",[191],{"type":30,"tagName":44,"properties":192,"children":193},{},[194,205,206,237,238,263,264,289,290,315,316,341,342,345,346,411,412,435,436,467,468,497,498,501,502,544,545,582,583,613,614,650,651,683,684,718,719,722,723,760,761,764,765,798,799,836,837,870,871,922,923,949,950,967,968,976,977,980,981,1013,1014,1068,1069,1107,1108,1121,1122,1135,1136,1148,1149,1156,1157,1160,1161,1193,1194,1211,1212,1228,1229,1245,1246,1265,1266,1285,1286,1305,1306],{"type":30,"tagName":195,"properties":196,"children":198},"span",{"class":197},"line",[199],{"type":30,"tagName":195,"properties":200,"children":202},{"style":201},"--shiki-dark:#6A737D;--shiki-light:#6A737D",[203],{"type":26,"value":204},"// Moving average cross as a strategy: long when the fast EMA crosses above the slow one, flat when it crosses back under.",{"type":26,"value":27},{"type":30,"tagName":195,"properties":207,"children":208},{"class":197},[209,215,221,226,232],{"type":30,"tagName":195,"properties":210,"children":212},{"style":211},"--shiki-dark:#F97583;--shiki-light:#D73A49",[213],{"type":26,"value":214},"import",{"type":30,"tagName":195,"properties":216,"children":218},{"style":217},"--shiki-dark:#E1E4E8;--shiki-light:#24292E",[219],{"type":26,"value":220}," { input, line, ohlcv, output, overlay } ",{"type":30,"tagName":195,"properties":222,"children":223},{"style":211},[224],{"type":26,"value":225},"from",{"type":30,"tagName":195,"properties":227,"children":229},{"style":228},"--shiki-dark:#9ECBFF;--shiki-light:#032F62",[230],{"type":26,"value":231}," \"./sdk/declare\"",{"type":30,"tagName":195,"properties":233,"children":234},{"style":217},[235],{"type":26,"value":236},";",{"type":26,"value":27},{"type":30,"tagName":195,"properties":239,"children":240},{"class":197},[241,245,250,254,259],{"type":30,"tagName":195,"properties":242,"children":243},{"style":211},[244],{"type":26,"value":214},{"type":30,"tagName":195,"properties":246,"children":247},{"style":217},[248],{"type":26,"value":249}," { in_close } ",{"type":30,"tagName":195,"properties":251,"children":252},{"style":211},[253],{"type":26,"value":225},{"type":30,"tagName":195,"properties":255,"children":256},{"style":228},[257],{"type":26,"value":258}," \"./gen/inputs\"",{"type":30,"tagName":195,"properties":260,"children":261},{"style":217},[262],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":265,"children":266},{"class":197},[267,271,276,280,285],{"type":30,"tagName":195,"properties":268,"children":269},{"style":211},[270],{"type":26,"value":214},{"type":30,"tagName":195,"properties":272,"children":273},{"style":217},[274],{"type":26,"value":275}," { emitRow, out_fast, out_slow } ",{"type":30,"tagName":195,"properties":277,"children":278},{"style":211},[279],{"type":26,"value":225},{"type":30,"tagName":195,"properties":281,"children":282},{"style":228},[283],{"type":26,"value":284}," \"./gen/outputs\"",{"type":30,"tagName":195,"properties":286,"children":287},{"style":217},[288],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":291,"children":292},{"class":197},[293,297,302,306,311],{"type":30,"tagName":195,"properties":294,"children":295},{"style":211},[296],{"type":26,"value":214},{"type":30,"tagName":195,"properties":298,"children":299},{"style":217},[300],{"type":26,"value":301}," { strategy } ",{"type":30,"tagName":195,"properties":303,"children":304},{"style":211},[305],{"type":26,"value":225},{"type":30,"tagName":195,"properties":307,"children":308},{"style":228},[309],{"type":26,"value":310}," \"./gen/strategy\"",{"type":30,"tagName":195,"properties":312,"children":313},{"style":217},[314],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":317,"children":318},{"class":197},[319,323,328,332,337],{"type":30,"tagName":195,"properties":320,"children":321},{"style":211},[322],{"type":26,"value":214},{"type":30,"tagName":195,"properties":324,"children":325},{"style":217},[326],{"type":26,"value":327}," { Cross, Ema } ",{"type":30,"tagName":195,"properties":329,"children":330},{"style":211},[331],{"type":26,"value":225},{"type":30,"tagName":195,"properties":333,"children":334},{"style":228},[335],{"type":26,"value":336}," \"./sdk/ta\"",{"type":30,"tagName":195,"properties":338,"children":339},{"style":217},[340],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":343,"children":344},{"class":197},[],{"type":26,"value":27},{"type":30,"tagName":195,"properties":347,"children":348},{"class":197},[349,355,360,366,371,376,381,386,391,396,401,406],{"type":30,"tagName":195,"properties":350,"children":352},{"style":351},"--shiki-dark:#B392F0;--shiki-light:#6F42C1",[353],{"type":26,"value":354},"strategy",{"type":30,"tagName":195,"properties":356,"children":357},{"style":217},[358],{"type":26,"value":359},"({ initialCapital: ",{"type":30,"tagName":195,"properties":361,"children":363},{"style":362},"--shiki-dark:#79B8FF;--shiki-light:#005CC5",[364],{"type":26,"value":365},"10000",{"type":30,"tagName":195,"properties":367,"children":368},{"style":217},[369],{"type":26,"value":370},", qtyType: ",{"type":30,"tagName":195,"properties":372,"children":373},{"style":228},[374],{"type":26,"value":375},"\"percentOfEquity\"",{"type":30,"tagName":195,"properties":377,"children":378},{"style":217},[379],{"type":26,"value":380},", qtyValue: ",{"type":30,"tagName":195,"properties":382,"children":383},{"style":362},[384],{"type":26,"value":385},"50",{"type":30,"tagName":195,"properties":387,"children":388},{"style":217},[389],{"type":26,"value":390},", commissionPercent: ",{"type":30,"tagName":195,"properties":392,"children":393},{"style":362},[394],{"type":26,"value":395},"0.05",{"type":30,"tagName":195,"properties":397,"children":398},{"style":217},[399],{"type":26,"value":400},", slippageBps: ",{"type":30,"tagName":195,"properties":402,"children":403},{"style":362},[404],{"type":26,"value":405},"2",{"type":30,"tagName":195,"properties":407,"children":408},{"style":217},[409],{"type":26,"value":410}," });",{"type":26,"value":27},{"type":30,"tagName":195,"properties":413,"children":414},{"class":197},[415,420,425,430],{"type":30,"tagName":195,"properties":416,"children":417},{"style":351},[418],{"type":26,"value":419},"input",{"type":30,"tagName":195,"properties":421,"children":422},{"style":217},[423],{"type":26,"value":424},"(",{"type":30,"tagName":195,"properties":426,"children":427},{"style":228},[428],{"type":26,"value":429},"\"close\"",{"type":30,"tagName":195,"properties":431,"children":432},{"style":217},[433],{"type":26,"value":434},", ohlcv.close);",{"type":26,"value":27},{"type":30,"tagName":195,"properties":437,"children":438},{"class":197},[439,444,448,453,458,463],{"type":30,"tagName":195,"properties":440,"children":441},{"style":351},[442],{"type":26,"value":443},"output",{"type":30,"tagName":195,"properties":445,"children":446},{"style":217},[447],{"type":26,"value":424},{"type":30,"tagName":195,"properties":449,"children":450},{"style":228},[451],{"type":26,"value":452},"\"fast\"",{"type":30,"tagName":195,"properties":454,"children":455},{"style":217},[456],{"type":26,"value":457},", line, overlay, { description: ",{"type":30,"tagName":195,"properties":459,"children":460},{"style":228},[461],{"type":26,"value":462},"\"9-period EMA of close\"",{"type":30,"tagName":195,"properties":464,"children":465},{"style":217},[466],{"type":26,"value":410},{"type":26,"value":27},{"type":30,"tagName":195,"properties":469,"children":470},{"class":197},[471,475,479,484,488,493],{"type":30,"tagName":195,"properties":472,"children":473},{"style":351},[474],{"type":26,"value":443},{"type":30,"tagName":195,"properties":476,"children":477},{"style":217},[478],{"type":26,"value":424},{"type":30,"tagName":195,"properties":480,"children":481},{"style":228},[482],{"type":26,"value":483},"\"slow\"",{"type":30,"tagName":195,"properties":485,"children":486},{"style":217},[487],{"type":26,"value":457},{"type":30,"tagName":195,"properties":489,"children":490},{"style":228},[491],{"type":26,"value":492},"\"21-period EMA of close\"",{"type":30,"tagName":195,"properties":494,"children":495},{"style":217},[496],{"type":26,"value":410},{"type":26,"value":27},{"type":30,"tagName":195,"properties":499,"children":500},{"class":197},[],{"type":26,"value":27},{"type":30,"tagName":195,"properties":503,"children":504},{"class":197},[505,510,515,520,525,530,534,539],{"type":30,"tagName":195,"properties":506,"children":507},{"style":211},[508],{"type":26,"value":509},"const",{"type":30,"tagName":195,"properties":511,"children":512},{"style":362},[513],{"type":26,"value":514}," fastEma",{"type":30,"tagName":195,"properties":516,"children":517},{"style":211},[518],{"type":26,"value":519}," =",{"type":30,"tagName":195,"properties":521,"children":522},{"style":211},[523],{"type":26,"value":524}," new",{"type":30,"tagName":195,"properties":526,"children":527},{"style":351},[528],{"type":26,"value":529}," Ema",{"type":30,"tagName":195,"properties":531,"children":532},{"style":217},[533],{"type":26,"value":424},{"type":30,"tagName":195,"properties":535,"children":536},{"style":362},[537],{"type":26,"value":538},"9",{"type":30,"tagName":195,"properties":540,"children":541},{"style":217},[542],{"type":26,"value":543},");",{"type":26,"value":27},{"type":30,"tagName":195,"properties":546,"children":547},{"class":197},[548,552,557,561,565,569,573,578],{"type":30,"tagName":195,"properties":549,"children":550},{"style":211},[551],{"type":26,"value":509},{"type":30,"tagName":195,"properties":553,"children":554},{"style":362},[555],{"type":26,"value":556}," slowEma",{"type":30,"tagName":195,"properties":558,"children":559},{"style":211},[560],{"type":26,"value":519},{"type":30,"tagName":195,"properties":562,"children":563},{"style":211},[564],{"type":26,"value":524},{"type":30,"tagName":195,"properties":566,"children":567},{"style":351},[568],{"type":26,"value":529},{"type":30,"tagName":195,"properties":570,"children":571},{"style":217},[572],{"type":26,"value":424},{"type":30,"tagName":195,"properties":574,"children":575},{"style":362},[576],{"type":26,"value":577},"21",{"type":30,"tagName":195,"properties":579,"children":580},{"style":217},[581],{"type":26,"value":543},{"type":26,"value":27},{"type":30,"tagName":195,"properties":584,"children":585},{"class":197},[586,590,595,599,603,608],{"type":30,"tagName":195,"properties":587,"children":588},{"style":211},[589],{"type":26,"value":509},{"type":30,"tagName":195,"properties":591,"children":592},{"style":362},[593],{"type":26,"value":594}," cross",{"type":30,"tagName":195,"properties":596,"children":597},{"style":211},[598],{"type":26,"value":519},{"type":30,"tagName":195,"properties":600,"children":601},{"style":211},[602],{"type":26,"value":524},{"type":30,"tagName":195,"properties":604,"children":605},{"style":351},[606],{"type":26,"value":607}," Cross",{"type":30,"tagName":195,"properties":609,"children":610},{"style":217},[611],{"type":26,"value":612},"();",{"type":26,"value":27},{"type":30,"tagName":195,"properties":615,"children":616},{"class":197},[617,622,627,632,637,641,646],{"type":30,"tagName":195,"properties":618,"children":619},{"style":211},[620],{"type":26,"value":621},"let",{"type":30,"tagName":195,"properties":623,"children":624},{"style":217},[625],{"type":26,"value":626}," fast",{"type":30,"tagName":195,"properties":628,"children":629},{"style":211},[630],{"type":26,"value":631},":",{"type":30,"tagName":195,"properties":633,"children":634},{"style":351},[635],{"type":26,"value":636}," f64",{"type":30,"tagName":195,"properties":638,"children":639},{"style":211},[640],{"type":26,"value":519},{"type":30,"tagName":195,"properties":642,"children":643},{"style":362},[644],{"type":26,"value":645}," NaN",{"type":30,"tagName":195,"properties":647,"children":648},{"style":217},[649],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":652,"children":653},{"class":197},[654,658,663,667,671,675,679],{"type":30,"tagName":195,"properties":655,"children":656},{"style":211},[657],{"type":26,"value":621},{"type":30,"tagName":195,"properties":659,"children":660},{"style":217},[661],{"type":26,"value":662}," slow",{"type":30,"tagName":195,"properties":664,"children":665},{"style":211},[666],{"type":26,"value":631},{"type":30,"tagName":195,"properties":668,"children":669},{"style":351},[670],{"type":26,"value":636},{"type":30,"tagName":195,"properties":672,"children":673},{"style":211},[674],{"type":26,"value":519},{"type":30,"tagName":195,"properties":676,"children":677},{"style":362},[678],{"type":26,"value":645},{"type":30,"tagName":195,"properties":680,"children":681},{"style":217},[682],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":685,"children":686},{"class":197},[687,691,696,700,705,709,714],{"type":30,"tagName":195,"properties":688,"children":689},{"style":211},[690],{"type":26,"value":621},{"type":30,"tagName":195,"properties":692,"children":693},{"style":217},[694],{"type":26,"value":695}," crossed",{"type":30,"tagName":195,"properties":697,"children":698},{"style":211},[699],{"type":26,"value":631},{"type":30,"tagName":195,"properties":701,"children":702},{"style":351},[703],{"type":26,"value":704}," i32",{"type":30,"tagName":195,"properties":706,"children":707},{"style":211},[708],{"type":26,"value":519},{"type":30,"tagName":195,"properties":710,"children":711},{"style":362},[712],{"type":26,"value":713}," 0",{"type":30,"tagName":195,"properties":715,"children":716},{"style":217},[717],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":720,"children":721},{"class":197},[],{"type":26,"value":27},{"type":30,"tagName":195,"properties":724,"children":725},{"class":197},[726,731,736,741,746,750,755],{"type":30,"tagName":195,"properties":727,"children":728},{"style":211},[729],{"type":26,"value":730},"export",{"type":30,"tagName":195,"properties":732,"children":733},{"style":211},[734],{"type":26,"value":735}," function",{"type":30,"tagName":195,"properties":737,"children":738},{"style":351},[739],{"type":26,"value":740}," init",{"type":30,"tagName":195,"properties":742,"children":743},{"style":217},[744],{"type":26,"value":745},"()",{"type":30,"tagName":195,"properties":747,"children":748},{"style":211},[749],{"type":26,"value":631},{"type":30,"tagName":195,"properties":751,"children":752},{"style":362},[753],{"type":26,"value":754}," void",{"type":30,"tagName":195,"properties":756,"children":757},{"style":217},[758],{"type":26,"value":759}," {}",{"type":26,"value":27},{"type":30,"tagName":195,"properties":762,"children":763},{"class":197},[],{"type":26,"value":27},{"type":30,"tagName":195,"properties":766,"children":767},{"class":197},[768,772,776,781,785,789,793],{"type":30,"tagName":195,"properties":769,"children":770},{"style":211},[771],{"type":26,"value":730},{"type":30,"tagName":195,"properties":773,"children":774},{"style":211},[775],{"type":26,"value":735},{"type":30,"tagName":195,"properties":777,"children":778},{"style":351},[779],{"type":26,"value":780}," state",{"type":30,"tagName":195,"properties":782,"children":783},{"style":217},[784],{"type":26,"value":745},{"type":30,"tagName":195,"properties":786,"children":787},{"style":211},[788],{"type":26,"value":631},{"type":30,"tagName":195,"properties":790,"children":791},{"style":351},[792],{"type":26,"value":704},{"type":30,"tagName":195,"properties":794,"children":795},{"style":217},[796],{"type":26,"value":797}," {",{"type":26,"value":27},{"type":30,"tagName":195,"properties":800,"children":801},{"class":197},[802,807,812,817,822,826,831],{"type":30,"tagName":195,"properties":803,"children":804},{"style":217},[805],{"type":26,"value":806},"  fast ",{"type":30,"tagName":195,"properties":808,"children":809},{"style":211},[810],{"type":26,"value":811},"=",{"type":30,"tagName":195,"properties":813,"children":814},{"style":217},[815],{"type":26,"value":816}," fastEma.",{"type":30,"tagName":195,"properties":818,"children":819},{"style":351},[820],{"type":26,"value":821},"update",{"type":30,"tagName":195,"properties":823,"children":824},{"style":217},[825],{"type":26,"value":424},{"type":30,"tagName":195,"properties":827,"children":828},{"style":351},[829],{"type":26,"value":830},"in_close",{"type":30,"tagName":195,"properties":832,"children":833},{"style":217},[834],{"type":26,"value":835},"());",{"type":26,"value":27},{"type":30,"tagName":195,"properties":838,"children":839},{"class":197},[840,845,849,854,858,862,866],{"type":30,"tagName":195,"properties":841,"children":842},{"style":217},[843],{"type":26,"value":844},"  slow ",{"type":30,"tagName":195,"properties":846,"children":847},{"style":211},[848],{"type":26,"value":811},{"type":30,"tagName":195,"properties":850,"children":851},{"style":217},[852],{"type":26,"value":853}," slowEma.",{"type":30,"tagName":195,"properties":855,"children":856},{"style":351},[857],{"type":26,"value":821},{"type":30,"tagName":195,"properties":859,"children":860},{"style":217},[861],{"type":26,"value":424},{"type":30,"tagName":195,"properties":863,"children":864},{"style":351},[865],{"type":26,"value":830},{"type":30,"tagName":195,"properties":867,"children":868},{"style":217},[869],{"type":26,"value":835},{"type":26,"value":27},{"type":30,"tagName":195,"properties":872,"children":873},{"class":197},[874,879,884,889,894,899,904,909,914,918],{"type":30,"tagName":195,"properties":875,"children":876},{"style":211},[877],{"type":26,"value":878},"  if",{"type":30,"tagName":195,"properties":880,"children":881},{"style":217},[882],{"type":26,"value":883}," (",{"type":30,"tagName":195,"properties":885,"children":886},{"style":351},[887],{"type":26,"value":888},"isNaN",{"type":30,"tagName":195,"properties":890,"children":891},{"style":217},[892],{"type":26,"value":893},"(fast) ",{"type":30,"tagName":195,"properties":895,"children":896},{"style":211},[897],{"type":26,"value":898},"||",{"type":30,"tagName":195,"properties":900,"children":901},{"style":351},[902],{"type":26,"value":903}," isNaN",{"type":30,"tagName":195,"properties":905,"children":906},{"style":217},[907],{"type":26,"value":908},"(slow)) ",{"type":30,"tagName":195,"properties":910,"children":911},{"style":211},[912],{"type":26,"value":913},"return",{"type":30,"tagName":195,"properties":915,"children":916},{"style":362},[917],{"type":26,"value":713},{"type":30,"tagName":195,"properties":919,"children":920},{"style":217},[921],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":924,"children":925},{"class":197},[926,931,935,940,944],{"type":30,"tagName":195,"properties":927,"children":928},{"style":217},[929],{"type":26,"value":930},"  crossed ",{"type":30,"tagName":195,"properties":932,"children":933},{"style":211},[934],{"type":26,"value":811},{"type":30,"tagName":195,"properties":936,"children":937},{"style":217},[938],{"type":26,"value":939}," cross.",{"type":30,"tagName":195,"properties":941,"children":942},{"style":351},[943],{"type":26,"value":821},{"type":30,"tagName":195,"properties":945,"children":946},{"style":217},[947],{"type":26,"value":948},"(fast, slow);",{"type":26,"value":27},{"type":30,"tagName":195,"properties":951,"children":952},{"class":197},[953,958,963],{"type":30,"tagName":195,"properties":954,"children":955},{"style":211},[956],{"type":26,"value":957},"  return",{"type":30,"tagName":195,"properties":959,"children":960},{"style":362},[961],{"type":26,"value":962}," 1",{"type":30,"tagName":195,"properties":964,"children":965},{"style":217},[966],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":969,"children":970},{"class":197},[971],{"type":30,"tagName":195,"properties":972,"children":973},{"style":217},[974],{"type":26,"value":975},"}",{"type":26,"value":27},{"type":30,"tagName":195,"properties":978,"children":979},{"class":197},[],{"type":26,"value":27},{"type":30,"tagName":195,"properties":982,"children":983},{"class":197},[984,988,992,997,1001,1005,1009],{"type":30,"tagName":195,"properties":985,"children":986},{"style":211},[987],{"type":26,"value":730},{"type":30,"tagName":195,"properties":989,"children":990},{"style":211},[991],{"type":26,"value":735},{"type":30,"tagName":195,"properties":993,"children":994},{"style":351},[995],{"type":26,"value":996}," finalize",{"type":30,"tagName":195,"properties":998,"children":999},{"style":217},[1000],{"type":26,"value":745},{"type":30,"tagName":195,"properties":1002,"children":1003},{"style":211},[1004],{"type":26,"value":631},{"type":30,"tagName":195,"properties":1006,"children":1007},{"style":362},[1008],{"type":26,"value":754},{"type":30,"tagName":195,"properties":1010,"children":1011},{"style":217},[1012],{"type":26,"value":797},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1015,"children":1016},{"class":197},[1017,1021,1026,1031,1035,1040,1045,1049,1054,1059,1064],{"type":30,"tagName":195,"properties":1018,"children":1019},{"style":211},[1020],{"type":26,"value":878},{"type":30,"tagName":195,"properties":1022,"children":1023},{"style":217},[1024],{"type":26,"value":1025}," (crossed ",{"type":30,"tagName":195,"properties":1027,"children":1028},{"style":211},[1029],{"type":26,"value":1030},"==",{"type":30,"tagName":195,"properties":1032,"children":1033},{"style":362},[1034],{"type":26,"value":962},{"type":30,"tagName":195,"properties":1036,"children":1037},{"style":217},[1038],{"type":26,"value":1039},") strategy.",{"type":30,"tagName":195,"properties":1041,"children":1042},{"style":351},[1043],{"type":26,"value":1044},"long",{"type":30,"tagName":195,"properties":1046,"children":1047},{"style":217},[1048],{"type":26,"value":424},{"type":30,"tagName":195,"properties":1050,"children":1051},{"style":228},[1052],{"type":26,"value":1053},"\"L\"",{"type":30,"tagName":195,"properties":1055,"children":1056},{"style":217},[1057],{"type":26,"value":1058},").",{"type":30,"tagName":195,"properties":1060,"children":1061},{"style":351},[1062],{"type":26,"value":1063},"send",{"type":30,"tagName":195,"properties":1065,"children":1066},{"style":217},[1067],{"type":26,"value":612},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1070,"children":1071},{"class":197},[1072,1076,1080,1084,1089,1094,1098,1103],{"type":30,"tagName":195,"properties":1073,"children":1074},{"style":211},[1075],{"type":26,"value":878},{"type":30,"tagName":195,"properties":1077,"children":1078},{"style":217},[1079],{"type":26,"value":1025},{"type":30,"tagName":195,"properties":1081,"children":1082},{"style":211},[1083],{"type":26,"value":1030},{"type":30,"tagName":195,"properties":1085,"children":1086},{"style":211},[1087],{"type":26,"value":1088}," -",{"type":30,"tagName":195,"properties":1090,"children":1091},{"style":362},[1092],{"type":26,"value":1093},"1",{"type":30,"tagName":195,"properties":1095,"children":1096},{"style":217},[1097],{"type":26,"value":1039},{"type":30,"tagName":195,"properties":1099,"children":1100},{"style":351},[1101],{"type":26,"value":1102},"closeAll",{"type":30,"tagName":195,"properties":1104,"children":1105},{"style":217},[1106],{"type":26,"value":612},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1109,"children":1110},{"class":197},[1111,1116],{"type":30,"tagName":195,"properties":1112,"children":1113},{"style":351},[1114],{"type":26,"value":1115},"  out_fast",{"type":30,"tagName":195,"properties":1117,"children":1118},{"style":217},[1119],{"type":26,"value":1120},"(fast);",{"type":26,"value":27},{"type":30,"tagName":195,"properties":1123,"children":1124},{"class":197},[1125,1130],{"type":30,"tagName":195,"properties":1126,"children":1127},{"style":351},[1128],{"type":26,"value":1129},"  out_slow",{"type":30,"tagName":195,"properties":1131,"children":1132},{"style":217},[1133],{"type":26,"value":1134},"(slow);",{"type":26,"value":27},{"type":30,"tagName":195,"properties":1137,"children":1138},{"class":197},[1139,1144],{"type":30,"tagName":195,"properties":1140,"children":1141},{"style":351},[1142],{"type":26,"value":1143},"  emitRow",{"type":30,"tagName":195,"properties":1145,"children":1146},{"style":217},[1147],{"type":26,"value":612},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1150,"children":1151},{"class":197},[1152],{"type":30,"tagName":195,"properties":1153,"children":1154},{"style":217},[1155],{"type":26,"value":975},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1158,"children":1159},{"class":197},[],{"type":26,"value":27},{"type":30,"tagName":195,"properties":1162,"children":1163},{"class":197},[1164,1168,1172,1177,1181,1185,1189],{"type":30,"tagName":195,"properties":1165,"children":1166},{"style":211},[1167],{"type":26,"value":730},{"type":30,"tagName":195,"properties":1169,"children":1170},{"style":211},[1171],{"type":26,"value":735},{"type":30,"tagName":195,"properties":1173,"children":1174},{"style":351},[1175],{"type":26,"value":1176}," reset",{"type":30,"tagName":195,"properties":1178,"children":1179},{"style":217},[1180],{"type":26,"value":745},{"type":30,"tagName":195,"properties":1182,"children":1183},{"style":211},[1184],{"type":26,"value":631},{"type":30,"tagName":195,"properties":1186,"children":1187},{"style":362},[1188],{"type":26,"value":754},{"type":30,"tagName":195,"properties":1190,"children":1191},{"style":217},[1192],{"type":26,"value":797},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1195,"children":1196},{"class":197},[1197,1202,1207],{"type":30,"tagName":195,"properties":1198,"children":1199},{"style":217},[1200],{"type":26,"value":1201},"  fastEma.",{"type":30,"tagName":195,"properties":1203,"children":1204},{"style":351},[1205],{"type":26,"value":1206},"reset",{"type":30,"tagName":195,"properties":1208,"children":1209},{"style":217},[1210],{"type":26,"value":612},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1213,"children":1214},{"class":197},[1215,1220,1224],{"type":30,"tagName":195,"properties":1216,"children":1217},{"style":217},[1218],{"type":26,"value":1219},"  slowEma.",{"type":30,"tagName":195,"properties":1221,"children":1222},{"style":351},[1223],{"type":26,"value":1206},{"type":30,"tagName":195,"properties":1225,"children":1226},{"style":217},[1227],{"type":26,"value":612},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1230,"children":1231},{"class":197},[1232,1237,1241],{"type":30,"tagName":195,"properties":1233,"children":1234},{"style":217},[1235],{"type":26,"value":1236},"  cross.",{"type":30,"tagName":195,"properties":1238,"children":1239},{"style":351},[1240],{"type":26,"value":1206},{"type":30,"tagName":195,"properties":1242,"children":1243},{"style":217},[1244],{"type":26,"value":612},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1247,"children":1248},{"class":197},[1249,1253,1257,1261],{"type":30,"tagName":195,"properties":1250,"children":1251},{"style":217},[1252],{"type":26,"value":806},{"type":30,"tagName":195,"properties":1254,"children":1255},{"style":211},[1256],{"type":26,"value":811},{"type":30,"tagName":195,"properties":1258,"children":1259},{"style":362},[1260],{"type":26,"value":645},{"type":30,"tagName":195,"properties":1262,"children":1263},{"style":217},[1264],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1267,"children":1268},{"class":197},[1269,1273,1277,1281],{"type":30,"tagName":195,"properties":1270,"children":1271},{"style":217},[1272],{"type":26,"value":844},{"type":30,"tagName":195,"properties":1274,"children":1275},{"style":211},[1276],{"type":26,"value":811},{"type":30,"tagName":195,"properties":1278,"children":1279},{"style":362},[1280],{"type":26,"value":645},{"type":30,"tagName":195,"properties":1282,"children":1283},{"style":217},[1284],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1287,"children":1288},{"class":197},[1289,1293,1297,1301],{"type":30,"tagName":195,"properties":1290,"children":1291},{"style":217},[1292],{"type":26,"value":930},{"type":30,"tagName":195,"properties":1294,"children":1295},{"style":211},[1296],{"type":26,"value":811},{"type":30,"tagName":195,"properties":1298,"children":1299},{"style":362},[1300],{"type":26,"value":713},{"type":30,"tagName":195,"properties":1302,"children":1303},{"style":217},[1304],{"type":26,"value":236},{"type":26,"value":27},{"type":30,"tagName":195,"properties":1307,"children":1308},{"class":197},[1309],{"type":30,"tagName":195,"properties":1310,"children":1311},{"style":217},[1312],{"type":26,"value":975},{"type":26,"value":27},{"type":30,"tagName":31,"properties":1315,"children":1316,"position":1326},{},[1317],{"type":26,"value":1318,"position":1319},"Three things make it a strategy rather than an indicator:",{"start":1320,"end":1323},{"line":1321,"column":20,"offset":1322},59,2303,{"line":1321,"column":1324,"offset":1325},58,2360,{"start":1327,"end":1328},{"line":1321,"column":20,"offset":1322},{"line":1321,"column":1324,"offset":1325},{"type":26,"value":27},{"type":30,"tagName":1331,"properties":1332,"children":1333,"position":1618},"ul",{},[1334,1335,1443,1444,1512,1513,1617],{"type":26,"value":27},{"type":30,"tagName":1336,"properties":1337,"children":1338,"position":1439},"li",{},[1339,1354,1360,1373,1380,1393,1400,1413,1420,1432],{"type":30,"tagName":44,"properties":1340,"children":1341,"position":1351},{},[1342],{"type":26,"value":48,"position":1343},{"start":1344,"end":1348},{"line":1345,"column":1346,"offset":1347},61,3,2364,{"line":1345,"column":1349,"offset":1350},22,2383,{"start":1352,"end":1353},{"line":1345,"column":1346,"offset":1347},{"line":1345,"column":1349,"offset":1350},{"type":26,"value":1355,"position":1356}," at the top level replaces kScript's ",{"start":1357,"end":1358},{"line":1345,"column":1349,"offset":1350},{"line":1345,"column":1321,"offset":1359},2420,{"type":30,"tagName":44,"properties":1361,"children":1362,"position":1370},{},[1363],{"type":26,"value":1364,"position":1365},"strategy(...)",{"start":1366,"end":1367},{"line":1345,"column":1321,"offset":1359},{"line":1345,"column":1368,"offset":1369},74,2435,{"start":1371,"end":1372},{"line":1345,"column":1321,"offset":1359},{"line":1345,"column":1368,"offset":1369},{"type":26,"value":1374,"position":1375}," line. It is the broker: starting equity, sizing (",{"start":1376,"end":1377},{"line":1345,"column":1368,"offset":1369},{"line":1345,"column":1378,"offset":1379},124,2485,{"type":30,"tagName":44,"properties":1381,"children":1382,"position":1390},{},[1383],{"type":26,"value":1384,"position":1385},"50%",{"start":1386,"end":1387},{"line":1345,"column":1378,"offset":1379},{"line":1345,"column":1388,"offset":1389},129,2490,{"start":1391,"end":1392},{"line":1345,"column":1378,"offset":1379},{"line":1345,"column":1388,"offset":1389},{"type":26,"value":1394,"position":1395}," of equity per entry), commission and slippage live in the file, so a shared package carries its own assumptions. Every field is optional; a bare ",{"start":1396,"end":1397},{"line":1345,"column":1388,"offset":1389},{"line":1345,"column":1398,"offset":1399},275,2636,{"type":30,"tagName":44,"properties":1401,"children":1402,"position":1410},{},[1403],{"type":26,"value":1404,"position":1405},"strategy()",{"start":1406,"end":1407},{"line":1345,"column":1398,"offset":1399},{"line":1345,"column":1408,"offset":1409},287,2648,{"start":1411,"end":1412},{"line":1345,"column":1398,"offset":1399},{"line":1345,"column":1408,"offset":1409},{"type":26,"value":1414,"position":1415}," takes every default. The build derives a ",{"start":1416,"end":1417},{"line":1345,"column":1408,"offset":1409},{"line":1345,"column":1418,"offset":1419},329,2690,{"type":30,"tagName":44,"properties":1421,"children":1422,"position":1429},{},[1423],{"type":26,"value":354,"position":1424},{"start":1425,"end":1426},{"line":1345,"column":1418,"offset":1419},{"line":1345,"column":1427,"offset":1428},339,2700,{"start":1430,"end":1431},{"line":1345,"column":1418,"offset":1419},{"line":1345,"column":1427,"offset":1428},{"type":26,"value":1433,"position":1434}," section into the sheet and marks the package a strategy.",{"start":1435,"end":1436},{"line":1345,"column":1427,"offset":1428},{"line":1345,"column":1437,"offset":1438},396,2757,{"start":1440,"end":1442},{"line":1345,"column":20,"offset":1441},2362,{"line":1345,"column":1437,"offset":1438},{"type":26,"value":27},{"type":30,"tagName":1336,"properties":1445,"children":1446,"position":1508},{},[1447,1462,1469,1482,1489,1501],{"type":30,"tagName":44,"properties":1448,"children":1449,"position":1459},{},[1450],{"type":26,"value":1451,"position":1452},"strategy.long(\"L\").send()",{"start":1453,"end":1456},{"line":1454,"column":1346,"offset":1455},62,2760,{"line":1454,"column":1457,"offset":1458},30,2787,{"start":1460,"end":1461},{"line":1454,"column":1346,"offset":1455},{"line":1454,"column":1457,"offset":1458},{"type":26,"value":1463,"position":1464}," in ",{"start":1465,"end":1466},{"line":1454,"column":1457,"offset":1458},{"line":1454,"column":1467,"offset":1468},34,2791,{"type":30,"tagName":44,"properties":1470,"children":1471,"position":1479},{},[1472],{"type":26,"value":1473,"position":1474},"finalize()",{"start":1475,"end":1476},{"line":1454,"column":1467,"offset":1468},{"line":1454,"column":1477,"offset":1478},46,2803,{"start":1480,"end":1481},{"line":1454,"column":1467,"offset":1468},{"line":1454,"column":1477,"offset":1478},{"type":26,"value":1483,"position":1484}," queues a market order under the id ",{"start":1485,"end":1486},{"line":1454,"column":1477,"offset":1478},{"line":1454,"column":1487,"offset":1488},82,2839,{"type":30,"tagName":44,"properties":1490,"children":1491,"position":1498},{},[1492],{"type":26,"value":1493,"position":1494},"L",{"start":1495,"end":1496},{"line":1454,"column":1487,"offset":1488},{"line":1454,"column":52,"offset":1497},2842,{"start":1499,"end":1500},{"line":1454,"column":1487,"offset":1488},{"line":1454,"column":52,"offset":1497},{"type":26,"value":1502,"position":1503},". An order placed on a bar fills no earlier than the next bar's open; nothing in a run can act on information it did not have.",{"start":1504,"end":1505},{"line":1454,"column":52,"offset":1497},{"line":1454,"column":1506,"offset":1507},211,2968,{"start":1509,"end":1511},{"line":1454,"column":20,"offset":1510},2758,{"line":1454,"column":1506,"offset":1507},{"type":26,"value":27},{"type":30,"tagName":1336,"properties":1514,"children":1515,"position":1613},{},[1516,1531,1537,1549,1556,1568,1574,1587,1594,1606],{"type":30,"tagName":44,"properties":1517,"children":1518,"position":1528},{},[1519],{"type":26,"value":1520,"position":1521},"strategy.closeAll()",{"start":1522,"end":1525},{"line":1523,"column":1346,"offset":1524},63,2971,{"line":1523,"column":1526,"offset":1527},24,2992,{"start":1529,"end":1530},{"line":1523,"column":1346,"offset":1524},{"line":1523,"column":1526,"offset":1527},{"type":26,"value":1532,"position":1533}," is the signal exit. Orders go in ",{"start":1534,"end":1535},{"line":1523,"column":1526,"offset":1527},{"line":1523,"column":1324,"offset":1536},3026,{"type":30,"tagName":44,"properties":1538,"children":1539,"position":1546},{},[1540],{"type":26,"value":1473,"position":1541},{"start":1542,"end":1543},{"line":1523,"column":1324,"offset":1536},{"line":1523,"column":1544,"offset":1545},70,3038,{"start":1547,"end":1548},{"line":1523,"column":1324,"offset":1536},{"line":1523,"column":1544,"offset":1545},{"type":26,"value":1550,"position":1551}," only; the position getters (",{"start":1552,"end":1553},{"line":1523,"column":1544,"offset":1545},{"line":1523,"column":1554,"offset":1555},99,3067,{"type":30,"tagName":44,"properties":1557,"children":1558,"position":1565},{},[1559],{"type":26,"value":1560,"position":1561},"strategy.positionSize()",{"start":1562,"end":1563},{"line":1523,"column":1554,"offset":1555},{"line":1523,"column":1378,"offset":1564},3092,{"start":1566,"end":1567},{"line":1523,"column":1554,"offset":1555},{"line":1523,"column":1378,"offset":1564},{"type":26,"value":1569,"position":1570}," and the rest) answer in ",{"start":1571,"end":1572},{"line":1523,"column":1378,"offset":1564},{"line":1523,"column":101,"offset":1573},3117,{"type":30,"tagName":44,"properties":1575,"children":1576,"position":1584},{},[1577],{"type":26,"value":1578,"position":1579},"state()",{"start":1580,"end":1581},{"line":1523,"column":101,"offset":1573},{"line":1523,"column":1582,"offset":1583},158,3126,{"start":1585,"end":1586},{"line":1523,"column":101,"offset":1573},{"line":1523,"column":1582,"offset":1583},{"type":26,"value":1588,"position":1589}," and ",{"start":1590,"end":1591},{"line":1523,"column":1582,"offset":1583},{"line":1523,"column":1592,"offset":1593},163,3131,{"type":30,"tagName":44,"properties":1595,"children":1596,"position":1603},{},[1597],{"type":26,"value":1473,"position":1598},{"start":1599,"end":1600},{"line":1523,"column":1592,"offset":1593},{"line":1523,"column":1601,"offset":1602},175,3143,{"start":1604,"end":1605},{"line":1523,"column":1592,"offset":1593},{"line":1523,"column":1601,"offset":1602},{"type":26,"value":1607,"position":1608}," and read the position after the bar's fills.",{"start":1609,"end":1610},{"line":1523,"column":1601,"offset":1602},{"line":1523,"column":1611,"offset":1612},220,3188,{"start":1614,"end":1616},{"line":1523,"column":20,"offset":1615},2969,{"line":1523,"column":1611,"offset":1612},{"type":26,"value":27},{"start":1619,"end":1620},{"line":1345,"column":20,"offset":1441},{"line":1523,"column":1611,"offset":1612},{"type":26,"value":27},{"type":30,"tagName":31,"properties":1623,"children":1624,"position":1731},{},[1625,1633,1646,1652,1665,1672,1685,1692,1704,1711,1724],{"type":26,"value":1626,"position":1627},"The outputs stay outputs: ",{"start":1628,"end":1631},{"line":1629,"column":20,"offset":1630},65,3190,{"line":1629,"column":159,"offset":1632},3216,{"type":30,"tagName":44,"properties":1634,"children":1635,"position":1643},{},[1636],{"type":26,"value":1637,"position":1638},"fast",{"start":1639,"end":1640},{"line":1629,"column":159,"offset":1632},{"line":1629,"column":1641,"offset":1642},33,3222,{"start":1644,"end":1645},{"line":1629,"column":159,"offset":1632},{"line":1629,"column":1641,"offset":1642},{"type":26,"value":1588,"position":1647},{"start":1648,"end":1649},{"line":1629,"column":1641,"offset":1642},{"line":1629,"column":1650,"offset":1651},38,3227,{"type":30,"tagName":44,"properties":1653,"children":1654,"position":1662},{},[1655],{"type":26,"value":1656,"position":1657},"slow",{"start":1658,"end":1659},{"line":1629,"column":1650,"offset":1651},{"line":1629,"column":1660,"offset":1661},44,3233,{"start":1663,"end":1664},{"line":1629,"column":1650,"offset":1651},{"line":1629,"column":1660,"offset":1661},{"type":26,"value":1666,"position":1667}," are metric ids after install, chartable and alertable like any Indicator's. The strategy adds two host-published outputs of its own, ",{"start":1668,"end":1669},{"line":1629,"column":1660,"offset":1661},{"line":1629,"column":1670,"offset":1671},178,3367,{"type":30,"tagName":44,"properties":1673,"children":1674,"position":1682},{},[1675],{"type":26,"value":1676,"position":1677},"strategy.position",{"start":1678,"end":1679},{"line":1629,"column":1670,"offset":1671},{"line":1629,"column":1680,"offset":1681},197,3386,{"start":1683,"end":1684},{"line":1629,"column":1670,"offset":1671},{"line":1629,"column":1680,"offset":1681},{"type":26,"value":1686,"position":1687}," (the signed position after each bar's fills) and ",{"start":1688,"end":1689},{"line":1629,"column":1680,"offset":1681},{"line":1629,"column":1690,"offset":1691},247,3436,{"type":30,"tagName":44,"properties":1693,"children":1694,"position":1701},{},[1695],{"type":26,"value":1696,"position":1697},"strategy.equity",{"start":1698,"end":1699},{"line":1629,"column":1690,"offset":1691},{"line":1629,"column":63,"offset":1700},3453,{"start":1702,"end":1703},{"line":1629,"column":1690,"offset":1691},{"line":1629,"column":63,"offset":1700},{"type":26,"value":1705,"position":1706},", readable as ",{"start":1707,"end":1708},{"line":1629,"column":63,"offset":1700},{"line":1629,"column":1709,"offset":1710},278,3467,{"type":30,"tagName":44,"properties":1712,"children":1713,"position":1721},{},[1714],{"type":26,"value":1715,"position":1716},"wrun/@you/ma-cross/strategy.position",{"start":1717,"end":1718},{"line":1629,"column":1709,"offset":1710},{"line":1629,"column":1719,"offset":1720},316,3505,{"start":1722,"end":1723},{"line":1629,"column":1709,"offset":1710},{"line":1629,"column":1719,"offset":1720},{"type":26,"value":1725,"position":1726}," by screens, threshold alerts and the metric rules.",{"start":1727,"end":1728},{"line":1629,"column":1719,"offset":1720},{"line":1629,"column":1729,"offset":1730},367,3556,{"start":1732,"end":1733},{"line":1629,"column":20,"offset":1630},{"line":1629,"column":1729,"offset":1730},{"type":26,"value":27},{"type":30,"tagName":147,"properties":1736,"children":1738,"position":1747},{"id":1737},"what-a-run-returns",[1739],{"type":26,"value":1740,"position":1741},"What a run returns",{"start":1742,"end":1745},{"line":1743,"column":156,"offset":1744},67,3561,{"line":1743,"column":1349,"offset":1746},3579,{"start":1748,"end":1750},{"line":1743,"column":20,"offset":1749},3558,{"line":1743,"column":1349,"offset":1746},{"type":26,"value":27},{"type":30,"tagName":31,"properties":1753,"children":1754,"position":1897},{},[1755,1764,1776,1783,1800,1807,1824,1831,1847,1854,1871,1878,1890],{"type":26,"value":1756,"position":1757},"Every host that runs the package (a chart, an alert, ",{"start":1758,"end":1761},{"line":1759,"column":20,"offset":1760},69,3581,{"line":1759,"column":1762,"offset":1763},54,3634,{"type":30,"tagName":44,"properties":1765,"children":1766,"position":1773},{},[1767],{"type":26,"value":1768,"position":1769},"om backtest",{"start":1770,"end":1771},{"line":1759,"column":1762,"offset":1763},{"line":1759,"column":1743,"offset":1772},3647,{"start":1774,"end":1775},{"line":1759,"column":1762,"offset":1763},{"line":1759,"column":1743,"offset":1772},{"type":26,"value":1777,"position":1778},") carries the engine's own result beside the outputs: a ",{"start":1779,"end":1780},{"line":1759,"column":1743,"offset":1772},{"line":1759,"column":1781,"offset":1782},123,3703,{"type":30,"tagName":1784,"properties":1785,"children":1786,"position":1795},"strong",{},[1787],{"type":26,"value":1788,"position":1789},"trades list",{"start":1790,"end":1792},{"line":1759,"column":24,"offset":1791},3705,{"line":1759,"column":1793,"offset":1794},136,3716,{"start":1796,"end":1797},{"line":1759,"column":1781,"offset":1782},{"line":1759,"column":1798,"offset":1799},138,3718,{"type":26,"value":1801,"position":1802}," (entries, exits, per-trade PnL, fees, exit reason), an ",{"start":1803,"end":1804},{"line":1759,"column":1798,"offset":1799},{"line":1759,"column":1805,"offset":1806},194,3774,{"type":30,"tagName":1784,"properties":1808,"children":1809,"position":1819},{},[1810],{"type":26,"value":1811,"position":1812},"equity curve",{"start":1813,"end":1816},{"line":1759,"column":1814,"offset":1815},196,3776,{"line":1759,"column":1817,"offset":1818},208,3788,{"start":1820,"end":1821},{"line":1759,"column":1805,"offset":1806},{"line":1759,"column":1822,"offset":1823},210,3790,{"type":26,"value":1825,"position":1826}," and drawdown series, ",{"start":1827,"end":1828},{"line":1759,"column":1822,"offset":1823},{"line":1759,"column":1829,"offset":1830},232,3812,{"type":30,"tagName":1784,"properties":1832,"children":1833,"position":1842},{},[1834],{"type":26,"value":1835,"position":1836},"performance stats",{"start":1837,"end":1839},{"line":1759,"column":53,"offset":1838},3814,{"line":1759,"column":1840,"offset":1841},251,3831,{"start":1843,"end":1844},{"line":1759,"column":1829,"offset":1830},{"line":1759,"column":1845,"offset":1846},253,3833,{"type":26,"value":1848,"position":1849}," (net profit, win rate, profit factor, Sharpe, Sortino, max drawdown, exposure and the rest), and the ",{"start":1850,"end":1851},{"line":1759,"column":1845,"offset":1846},{"line":1759,"column":1852,"offset":1853},355,3935,{"type":30,"tagName":1784,"properties":1855,"children":1856,"position":1866},{},[1857],{"type":26,"value":1858,"position":1859},"open trades and pending orders",{"start":1860,"end":1863},{"line":1759,"column":1861,"offset":1862},357,3937,{"line":1759,"column":1864,"offset":1865},387,3967,{"start":1867,"end":1868},{"line":1759,"column":1852,"offset":1853},{"line":1759,"column":1869,"offset":1870},389,3969,{"type":26,"value":1872,"position":1873}," as of the last bar. On a chart that is the Strategy Tester panel with trade markers on the price series; in the terminal it is the backtest card, and the JSON report carries the engine's records verbatim under ",{"start":1874,"end":1875},{"line":1759,"column":1869,"offset":1870},{"line":1759,"column":1876,"offset":1877},600,4180,{"type":30,"tagName":44,"properties":1879,"children":1880,"position":1887},{},[1881],{"type":26,"value":354,"position":1882},{"start":1883,"end":1884},{"line":1759,"column":1876,"offset":1877},{"line":1759,"column":1885,"offset":1886},610,4190,{"start":1888,"end":1889},{"line":1759,"column":1876,"offset":1877},{"line":1759,"column":1885,"offset":1886},{"type":26,"value":1891,"position":1892},".",{"start":1893,"end":1894},{"line":1759,"column":1885,"offset":1886},{"line":1759,"column":1895,"offset":1896},611,4191,{"start":1898,"end":1899},{"line":1759,"column":20,"offset":1760},{"line":1759,"column":1895,"offset":1896},{"type":26,"value":27},{"type":13,"children":1902},[1903],{"type":30,"tagName":185,"properties":1904,"children":1905,"data":-1},{"class":187,"style":188,"tabindex":189},[1906],{"type":30,"tagName":44,"properties":1907,"children":1908},{},[1909,1932,1933],{"type":30,"tagName":195,"properties":1910,"children":1911},{"class":197},[1912,1917,1922,1927],{"type":30,"tagName":195,"properties":1913,"children":1914},{"style":351},[1915],{"type":26,"value":1916},"om",{"type":30,"tagName":195,"properties":1918,"children":1919},{"style":228},[1920],{"type":26,"value":1921}," wrun",{"type":30,"tagName":195,"properties":1923,"children":1924},{"style":228},[1925],{"type":26,"value":1926}," install",{"type":30,"tagName":195,"properties":1928,"children":1929},{"style":228},[1930],{"type":26,"value":1931}," ./ma-cross",{"type":26,"value":27},{"type":30,"tagName":195,"properties":1934,"children":1935},{"class":197},[1936,1940,1945,1950,1955,1960,1965],{"type":30,"tagName":195,"properties":1937,"children":1938},{"style":351},[1939],{"type":26,"value":1916},{"type":30,"tagName":195,"properties":1941,"children":1942},{"style":228},[1943],{"type":26,"value":1944}," backtest",{"type":30,"tagName":195,"properties":1946,"children":1947},{"style":228},[1948],{"type":26,"value":1949}," @you/ma-cross",{"type":30,"tagName":195,"properties":1951,"children":1952},{"style":362},[1953],{"type":26,"value":1954}," --asset",{"type":30,"tagName":195,"properties":1956,"children":1957},{"style":228},[1958],{"type":26,"value":1959}," BINANCE_FUTURES:BTCUSDT",{"type":30,"tagName":195,"properties":1961,"children":1962},{"style":362},[1963],{"type":26,"value":1964}," --window",{"type":30,"tagName":195,"properties":1966,"children":1967},{"style":228},[1968],{"type":26,"value":1969}," 90d",{"type":26,"value":27},{"type":30,"tagName":31,"properties":1972,"children":1973,"position":2137},{},[1974,1989,1995,2007,2014,2027,2034,2047,2053,2066,2072,2085,2091,2104,2111,2130],{"type":30,"tagName":44,"properties":1975,"children":1976,"position":1986},{},[1977],{"type":26,"value":1978,"position":1979},"om backtest @scope/name",{"start":1980,"end":1983},{"line":1981,"column":20,"offset":1982},76,4304,{"line":1981,"column":1984,"offset":1985},26,4329,{"start":1987,"end":1988},{"line":1981,"column":20,"offset":1982},{"line":1981,"column":1984,"offset":1985},{"type":26,"value":1990,"position":1991}," names an installed package (add ",{"start":1992,"end":1993},{"line":1981,"column":1984,"offset":1985},{"line":1981,"column":1321,"offset":1994},4362,{"type":30,"tagName":44,"properties":1996,"children":1997,"position":2004},{},[1998],{"type":26,"value":1999,"position":2000},"@version",{"start":2001,"end":2002},{"line":1981,"column":1321,"offset":1994},{"line":1981,"column":1759,"offset":2003},4372,{"start":2005,"end":2006},{"line":1981,"column":1321,"offset":1994},{"line":1981,"column":1759,"offset":2003},{"type":26,"value":2008,"position":2009}," to pin one), ",{"start":2010,"end":2011},{"line":1981,"column":1759,"offset":2003},{"line":1981,"column":2012,"offset":2013},83,4386,{"type":30,"tagName":44,"properties":2015,"children":2016,"position":2024},{},[2017],{"type":26,"value":2018,"position":2019},"--asset",{"start":2020,"end":2021},{"line":1981,"column":2012,"offset":2013},{"line":1981,"column":2022,"offset":2023},92,4395,{"start":2025,"end":2026},{"line":1981,"column":2012,"offset":2013},{"line":1981,"column":2022,"offset":2023},{"type":26,"value":2028,"position":2029}," names the market the strategy trades (the broker fills against that market's candles, which is why a strategy's price input carries no market pin), and the window replays over whole closed bars. The card's header reads ",{"start":2030,"end":2031},{"line":1981,"column":2022,"offset":2023},{"line":1981,"column":2032,"offset":2033},312,4615,{"type":30,"tagName":44,"properties":2035,"children":2036,"position":2044},{},[2037],{"type":26,"value":2038,"position":2039},"fill=engine_broker",{"start":2040,"end":2041},{"line":1981,"column":2032,"offset":2033},{"line":1981,"column":2042,"offset":2043},332,4635,{"start":2045,"end":2046},{"line":1981,"column":2032,"offset":2033},{"line":1981,"column":2042,"offset":2043},{"type":26,"value":2048,"position":2049}," with the package's own commission and slippage; passing ",{"start":2050,"end":2051},{"line":1981,"column":2042,"offset":2043},{"line":1981,"column":1869,"offset":2052},4692,{"type":30,"tagName":44,"properties":2054,"children":2055,"position":2063},{},[2056],{"type":26,"value":2057,"position":2058},"--fee-bps",{"start":2059,"end":2060},{"line":1981,"column":1869,"offset":2052},{"line":1981,"column":2061,"offset":2062},400,4703,{"start":2064,"end":2065},{"line":1981,"column":1869,"offset":2052},{"line":1981,"column":2061,"offset":2062},{"type":26,"value":78,"position":2067},{"start":2068,"end":2069},{"line":1981,"column":2061,"offset":2062},{"line":1981,"column":2070,"offset":2071},402,4705,{"type":30,"tagName":44,"properties":2073,"children":2074,"position":2082},{},[2075],{"type":26,"value":2076,"position":2077},"--slippage-bps",{"start":2078,"end":2079},{"line":1981,"column":2070,"offset":2071},{"line":1981,"column":2080,"offset":2081},418,4721,{"start":2083,"end":2084},{"line":1981,"column":2070,"offset":2071},{"line":1981,"column":2080,"offset":2081},{"type":26,"value":78,"position":2086},{"start":2087,"end":2088},{"line":1981,"column":2080,"offset":2081},{"line":1981,"column":2089,"offset":2090},420,4723,{"type":30,"tagName":44,"properties":2092,"children":2093,"position":2101},{},[2094],{"type":26,"value":2095,"position":2096},"--latency-bars",{"start":2097,"end":2098},{"line":1981,"column":2089,"offset":2090},{"line":1981,"column":2099,"offset":2100},436,4739,{"start":2102,"end":2103},{"line":1981,"column":2089,"offset":2090},{"line":1981,"column":2099,"offset":2100},{"type":26,"value":2105,"position":2106}," or a book size is refused by name, because costs live in the file. ",{"start":2107,"end":2108},{"line":1981,"column":2099,"offset":2100},{"line":1981,"column":2109,"offset":2110},504,4807,{"type":30,"tagName":2112,"properties":2113,"children":2115,"position":2125},"a",{"href":2114},"reading-the-tester.md",[2116],{"type":26,"value":2117,"position":2118},"Reading the Strategy Tester",{"start":2119,"end":2122},{"line":1981,"column":2120,"offset":2121},505,4808,{"line":1981,"column":2123,"offset":2124},532,4835,{"start":2126,"end":2127},{"line":1981,"column":2109,"offset":2110},{"line":1981,"column":2128,"offset":2129},556,4859,{"type":26,"value":2131,"position":2132}," walks the card.",{"start":2133,"end":2134},{"line":1981,"column":2128,"offset":2129},{"line":1981,"column":2135,"offset":2136},572,4875,{"start":2138,"end":2139},{"line":1981,"column":20,"offset":1982},{"line":1981,"column":2135,"offset":2136},{"type":26,"value":27},{"type":30,"tagName":147,"properties":2142,"children":2144,"position":2154},{"id":2143},"core-guarantees",[2145],{"type":26,"value":2146,"position":2147},"Core guarantees",{"start":2148,"end":2151},{"line":2149,"column":156,"offset":2150},78,4880,{"line":2149,"column":2152,"offset":2153},19,4895,{"start":2155,"end":2157},{"line":2149,"column":20,"offset":2156},4877,{"line":2149,"column":2152,"offset":2153},{"type":26,"value":27},{"type":30,"tagName":1331,"properties":2160,"children":2161,"position":2334},{},[2162,2163,2194,2195,2243,2244,2333],{"type":26,"value":27},{"type":30,"tagName":1336,"properties":2164,"children":2165,"position":2190},{},[2166,2183],{"type":30,"tagName":1784,"properties":2167,"children":2168,"position":2177},{},[2169],{"type":26,"value":2170,"position":2171},"Deterministic.",{"start":2172,"end":2175},{"line":2173,"column":38,"offset":2174},80,4901,{"line":2173,"column":2152,"offset":2176},4915,{"start":2178,"end":2180},{"line":2173,"column":1346,"offset":2179},4899,{"line":2173,"column":2181,"offset":2182},21,4917,{"type":26,"value":2184,"position":2185}," The same package on the same bars produces the same trades, on every host: the broker is the engine's own code, run under the engine's own phase order, with no data providers attached.",{"start":2186,"end":2187},{"line":2173,"column":2181,"offset":2182},{"line":2173,"column":2188,"offset":2189},206,5102,{"start":2191,"end":2193},{"line":2173,"column":20,"offset":2192},4897,{"line":2173,"column":2188,"offset":2189},{"type":26,"value":27},{"type":30,"tagName":1336,"properties":2196,"children":2197,"position":2239},{},[2198,2215,2221,2233],{"type":30,"tagName":1784,"properties":2199,"children":2200,"position":2210},{},[2201],{"type":26,"value":2202,"position":2203},"Lookahead-free.",{"start":2204,"end":2207},{"line":2205,"column":38,"offset":2206},81,5107,{"line":2205,"column":2208,"offset":2209},20,5122,{"start":2211,"end":2213},{"line":2205,"column":1346,"offset":2212},5105,{"line":2205,"column":1349,"offset":2214},5124,{"type":26,"value":2216,"position":2217}," Orders placed while bar N computes fill no earlier than bar N+1's open. The position a guard reads in ",{"start":2218,"end":2219},{"line":2205,"column":1349,"offset":2214},{"line":2205,"column":24,"offset":2220},5227,{"type":30,"tagName":44,"properties":2222,"children":2223,"position":2230},{},[2224],{"type":26,"value":1578,"position":2225},{"start":2226,"end":2227},{"line":2205,"column":24,"offset":2220},{"line":2205,"column":2228,"offset":2229},134,5236,{"start":2231,"end":2232},{"line":2205,"column":24,"offset":2220},{"line":2205,"column":2228,"offset":2229},{"type":26,"value":2234,"position":2235}," is the position after that bar's fills, so a flat guard is already flat on the bar its exit filled.",{"start":2236,"end":2237},{"line":2205,"column":2228,"offset":2229},{"line":2205,"column":53,"offset":2238},5336,{"start":2240,"end":2242},{"line":2205,"column":20,"offset":2241},5103,{"line":2205,"column":53,"offset":2238},{"type":26,"value":27},{"type":30,"tagName":1336,"properties":2245,"children":2246,"position":2329},{},[2247,2264,2271,2284,2291,2303,2310,2322],{"type":30,"tagName":1784,"properties":2248,"children":2249,"position":2258},{},[2250],{"type":26,"value":2251,"position":2252},"Honest accounting.",{"start":2253,"end":2255},{"line":1487,"column":38,"offset":2254},5341,{"line":1487,"column":2256,"offset":2257},23,5359,{"start":2259,"end":2261},{"line":1487,"column":1346,"offset":2260},5339,{"line":1487,"column":2262,"offset":2263},25,5361,{"type":26,"value":2265,"position":2266}," A bar that could have filled two levels settles by the declared ",{"start":2267,"end":2268},{"line":1487,"column":2262,"offset":2263},{"line":1487,"column":2269,"offset":2270},90,5426,{"type":30,"tagName":44,"properties":2272,"children":2273,"position":2281},{},[2274],{"type":26,"value":2275,"position":2276},"fillModel",{"start":2277,"end":2278},{"line":1487,"column":2269,"offset":2270},{"line":1487,"column":2279,"offset":2280},101,5437,{"start":2282,"end":2283},{"line":1487,"column":2269,"offset":2270},{"line":1487,"column":2279,"offset":2280},{"type":26,"value":2285,"position":2286}," and counts in ",{"start":2287,"end":2288},{"line":1487,"column":2279,"offset":2280},{"line":1487,"column":2289,"offset":2290},116,5452,{"type":30,"tagName":44,"properties":2292,"children":2293,"position":2300},{},[2294],{"type":26,"value":2295,"position":2296},"ambiguousFillCount",{"start":2297,"end":2298},{"line":1487,"column":2289,"offset":2290},{"line":1487,"column":1793,"offset":2299},5472,{"start":2301,"end":2302},{"line":1487,"column":2289,"offset":2290},{"line":1487,"column":1793,"offset":2299},{"type":26,"value":2304,"position":2305},"; rejected orders (the pyramiding cap, a size the equity cannot fund, an order placed on a live chart's forming bar) are counted, never dropped. The run details say ",{"start":2306,"end":2307},{"line":1487,"column":1793,"offset":2299},{"line":1487,"column":2308,"offset":2309},301,5637,{"type":30,"tagName":44,"properties":2311,"children":2312,"position":2319},{},[2313],{"type":26,"value":2314,"position":2315},"bar resolution",{"start":2316,"end":2317},{"line":1487,"column":2308,"offset":2309},{"line":1487,"column":112,"offset":2318},5653,{"start":2320,"end":2321},{"line":1487,"column":2308,"offset":2309},{"line":1487,"column":112,"offset":2318},{"type":26,"value":2323,"position":2324},": this release attaches no finer-interval data, no order book and no funding data.",{"start":2325,"end":2326},{"line":1487,"column":112,"offset":2318},{"line":1487,"column":2327,"offset":2328},399,5735,{"start":2330,"end":2332},{"line":1487,"column":20,"offset":2331},5337,{"line":1487,"column":2327,"offset":2328},{"type":26,"value":27},{"start":2335,"end":2336},{"line":2173,"column":20,"offset":2192},{"line":1487,"column":2327,"offset":2328},{"type":26,"value":27},{"type":30,"tagName":147,"properties":2339,"children":2341,"position":2350},{"id":2340},"what-the-broker-is-and-is-not",[2342],{"type":26,"value":2343,"position":2344},"What the broker is, and is not",{"start":2345,"end":2348},{"line":2346,"column":156,"offset":2347},84,5740,{"line":2346,"column":1467,"offset":2349},5770,{"start":2351,"end":2353},{"line":2346,"column":20,"offset":2352},5737,{"line":2346,"column":1467,"offset":2349},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2356,"children":2357,"position":2406},{},[2358,2367,2380,2387,2399],{"type":26,"value":2359,"position":2360},"The same research tool the kScript tester is: fast iteration and honest reporting over bar closes. It settles orders at the next open, resting limits and stops when touched, protective exits under the fill model, isolated margin, liquidation and maker or taker fees on perps. It does not model queue position, partial fills at a level, replenishment, latency, or venue fees beyond the declared commission or maker and taker rates, and in this release it does not walk finer bars, price fills off a recorded book (",{"start":2361,"end":2364},{"line":2362,"column":20,"offset":2363},86,5772,{"line":2362,"column":2365,"offset":2366},514,6285,{"type":30,"tagName":44,"properties":2368,"children":2369,"position":2377},{},[2370],{"type":26,"value":2371,"position":2372},"slippageModel: \"bookEstimate\"",{"start":2373,"end":2374},{"line":2362,"column":2365,"offset":2366},{"line":2362,"column":2375,"offset":2376},545,6316,{"start":2378,"end":2379},{"line":2362,"column":2365,"offset":2366},{"line":2362,"column":2375,"offset":2376},{"type":26,"value":2381,"position":2382}," is refused by name) or settle recorded funding (",{"start":2383,"end":2384},{"line":2362,"column":2375,"offset":2376},{"line":2362,"column":2385,"offset":2386},594,6365,{"type":30,"tagName":44,"properties":2388,"children":2389,"position":2396},{},[2390],{"type":26,"value":2391,"position":2392},"funding: \"data\"",{"start":2393,"end":2394},{"line":2362,"column":2385,"offset":2386},{"line":2362,"column":1895,"offset":2395},6382,{"start":2397,"end":2398},{"line":2362,"column":2385,"offset":2386},{"line":2362,"column":1895,"offset":2395},{"type":26,"value":2400,"position":2401}," counts the bars it could not settle). Each is named in the run's stats rather than approximated.",{"start":2402,"end":2403},{"line":2362,"column":1895,"offset":2395},{"line":2362,"column":2404,"offset":2405},708,6479,{"start":2407,"end":2408},{"line":2362,"column":20,"offset":2363},{"line":2362,"column":2404,"offset":2405},{"type":26,"value":27},{"type":30,"tagName":147,"properties":2411,"children":2413,"position":2422},{"id":2412},"the-rule-lane-beside-this-one",[2414],{"type":26,"value":2415,"position":2416},"The rule lane, beside this one",{"start":2417,"end":2420},{"line":2418,"column":156,"offset":2419},88,6484,{"line":2418,"column":1467,"offset":2421},6514,{"start":2423,"end":2425},{"line":2418,"column":20,"offset":2424},6481,{"line":2418,"column":1467,"offset":2421},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2428,"children":2429,"position":2574},{},[2430,2438,2451,2458,2471,2478,2491,2498,2511,2518,2530,2536,2547,2554,2567],{"type":26,"value":2431,"position":2432},"An Indicator that computes values and places no orders still backtests: a rule over one of its metric ids, authored as a candidate's condition ",{"start":2433,"end":2435},{"line":2269,"column":20,"offset":2434},6516,{"line":2269,"column":2436,"offset":2437},144,6659,{"type":30,"tagName":44,"properties":2439,"children":2440,"position":2448},{},[2441],{"type":26,"value":2442,"position":2443},"source",{"start":2444,"end":2445},{"line":2269,"column":2436,"offset":2437},{"line":2269,"column":2446,"offset":2447},152,6667,{"start":2449,"end":2450},{"line":2269,"column":2436,"offset":2437},{"line":2269,"column":2446,"offset":2447},{"type":26,"value":2452,"position":2453}," (a tree with the strategy's ",{"start":2454,"end":2455},{"line":2269,"column":2446,"offset":2447},{"line":2269,"column":2456,"offset":2457},181,6696,{"type":30,"tagName":44,"properties":2459,"children":2460,"position":2468},{},[2461],{"type":26,"value":2462,"position":2463},"on_true",{"start":2464,"end":2465},{"line":2269,"column":2456,"offset":2457},{"line":2269,"column":2466,"offset":2467},190,6705,{"start":2469,"end":2470},{"line":2269,"column":2456,"offset":2457},{"line":2269,"column":2466,"offset":2467},{"type":26,"value":2472,"position":2473},"/",{"start":2474,"end":2475},{"line":2269,"column":2466,"offset":2467},{"line":2269,"column":2476,"offset":2477},191,6706,{"type":30,"tagName":44,"properties":2479,"children":2480,"position":2488},{},[2481],{"type":26,"value":2482,"position":2483},"on_false",{"start":2484,"end":2485},{"line":2269,"column":2476,"offset":2477},{"line":2269,"column":2486,"offset":2487},201,6716,{"start":2489,"end":2490},{"line":2269,"column":2476,"offset":2477},{"line":2269,"column":2486,"offset":2487},{"type":26,"value":2492,"position":2493}," as the sides, or a band that names its own sides) and replayed by ",{"start":2494,"end":2495},{"line":2269,"column":2486,"offset":2487},{"line":2269,"column":2496,"offset":2497},268,6783,{"type":30,"tagName":44,"properties":2499,"children":2500,"position":2508},{},[2501],{"type":26,"value":2502,"position":2503},"om backtest spec --candidate-file",{"start":2504,"end":2505},{"line":2269,"column":2496,"offset":2497},{"line":2269,"column":2506,"offset":2507},303,6818,{"start":2509,"end":2510},{"line":2269,"column":2496,"offset":2497},{"line":2269,"column":2506,"offset":2507},{"type":26,"value":2512,"position":2513}," through the replay venue, with ",{"start":2514,"end":2515},{"line":2269,"column":2506,"offset":2507},{"line":2269,"column":2516,"offset":2517},335,6850,{"type":30,"tagName":44,"properties":2519,"children":2520,"position":2527},{},[2521],{"type":26,"value":2057,"position":2522},{"start":2523,"end":2524},{"line":2269,"column":2516,"offset":2517},{"line":2269,"column":2525,"offset":2526},346,6861,{"start":2528,"end":2529},{"line":2269,"column":2516,"offset":2517},{"line":2269,"column":2525,"offset":2526},{"type":26,"value":1588,"position":2531},{"start":2532,"end":2533},{"line":2269,"column":2525,"offset":2526},{"line":2269,"column":2534,"offset":2535},351,6866,{"type":30,"tagName":44,"properties":2537,"children":2538,"position":2544},{},[2539],{"type":26,"value":2076,"position":2540},{"start":2541,"end":2542},{"line":2269,"column":2534,"offset":2535},{"line":2269,"column":1729,"offset":2543},6882,{"start":2545,"end":2546},{"line":2269,"column":2534,"offset":2535},{"line":2269,"column":1729,"offset":2543},{"type":26,"value":2548,"position":2549}," as flags and a saved watch as the paper path. That lane keeps its own fill model (",{"start":2550,"end":2551},{"line":2269,"column":1729,"offset":2543},{"line":2269,"column":2552,"offset":2553},450,6965,{"type":30,"tagName":44,"properties":2555,"children":2556,"position":2564},{},[2557],{"type":26,"value":2558,"position":2559},"fill=next_bar_open",{"start":2560,"end":2561},{"line":2269,"column":2552,"offset":2553},{"line":2269,"column":2562,"offset":2563},470,6985,{"start":2565,"end":2566},{"line":2269,"column":2552,"offset":2553},{"line":2269,"column":2562,"offset":2563},{"type":26,"value":2568,"position":2569},") and its own report; the one-file form on these pages is the path for anything with ids, brackets, partial exits or a broker to reproduce.",{"start":2570,"end":2571},{"line":2269,"column":2562,"offset":2563},{"line":2269,"column":2572,"offset":2573},609,7124,{"start":2575,"end":2576},{"line":2269,"column":20,"offset":2434},{"line":2269,"column":2572,"offset":2573},{"type":26,"value":27},{"type":30,"tagName":147,"properties":2579,"children":2581,"position":2589},{"id":2580},"section-contents",[2582],{"type":26,"value":2583,"position":2584},"Section contents",{"start":2585,"end":2587},{"line":2022,"column":156,"offset":2586},7129,{"line":2022,"column":2208,"offset":2588},7145,{"start":2590,"end":2592},{"line":2022,"column":20,"offset":2591},7126,{"line":2022,"column":2208,"offset":2588},{"type":26,"value":27},{"type":30,"tagName":1331,"properties":2595,"children":2596,"position":2899},{},[2597,2598,2631,2632,2662,2663,2717,2718,2769,2770,2823,2824,2898],{"type":26,"value":27},{"type":30,"tagName":1336,"properties":2599,"children":2600,"position":2627},{},[2601,2620],{"type":30,"tagName":2112,"properties":2602,"children":2604,"position":2614},{"href":2603},"first-strategy.md",[2605],{"type":26,"value":2606,"position":2607},"Build your first strategy",{"start":2608,"end":2611},{"line":2609,"column":156,"offset":2610},94,7150,{"line":2609,"column":2612,"offset":2613},29,7175,{"start":2615,"end":2617},{"line":2609,"column":1346,"offset":2616},7149,{"line":2609,"column":2618,"offset":2619},49,7195,{"type":26,"value":2621,"position":2622},": an RSI reversion from a sentence to a read result, tuned honestly, then installed.",{"start":2623,"end":2624},{"line":2609,"column":2618,"offset":2619},{"line":2609,"column":2625,"offset":2626},133,7279,{"start":2628,"end":2630},{"line":2609,"column":20,"offset":2629},7147,{"line":2609,"column":2625,"offset":2626},{"type":26,"value":27},{"type":30,"tagName":1336,"properties":2633,"children":2634,"position":2658},{},[2635,2652],{"type":30,"tagName":2112,"properties":2636,"children":2638,"position":2647},{"href":2637},"writing-strategies.md",[2639],{"type":26,"value":2640,"position":2641},"Writing strategies",{"start":2642,"end":2645},{"line":2643,"column":156,"offset":2644},95,7283,{"line":2643,"column":1349,"offset":2646},7301,{"start":2648,"end":2650},{"line":2643,"column":1346,"offset":2649},7282,{"line":2643,"column":1477,"offset":2651},7325,{"type":26,"value":2653,"position":2654},": the declaration table, the order API, the position and sizing model.",{"start":2655,"end":2656},{"line":2643,"column":1477,"offset":2651},{"line":2643,"column":2289,"offset":2657},7395,{"start":2659,"end":2661},{"line":2643,"column":20,"offset":2660},7280,{"line":2643,"column":2289,"offset":2657},{"type":26,"value":27},{"type":30,"tagName":1336,"properties":2664,"children":2665,"position":2713},{},[2666,2684,2690,2706],{"type":30,"tagName":2112,"properties":2667,"children":2669,"position":2678},{"href":2668},"fill-simulation.md",[2670],{"type":26,"value":2671,"position":2672},"Fill simulation",{"start":2673,"end":2676},{"line":2674,"column":156,"offset":2675},96,7399,{"line":2674,"column":2152,"offset":2677},7414,{"start":2679,"end":2681},{"line":2674,"column":1346,"offset":2680},7398,{"line":2674,"column":2682,"offset":2683},40,7435,{"type":26,"value":78,"position":2685},{"start":2686,"end":2687},{"line":2674,"column":2682,"offset":2683},{"line":2674,"column":2688,"offset":2689},42,7437,{"type":30,"tagName":2112,"properties":2691,"children":2693,"position":2702},{"href":2692},"slippage-and-costs.md",[2694],{"type":26,"value":2695,"position":2696},"Slippage and costs",{"start":2697,"end":2700},{"line":2674,"column":2698,"offset":2699},43,7438,{"line":2674,"column":1345,"offset":2701},7456,{"start":2703,"end":2704},{"line":2674,"column":2688,"offset":2689},{"line":2674,"column":52,"offset":2705},7480,{"type":26,"value":2707,"position":2708},": the phase order, fill prices and fill models; commission, flat slippage, maker and taker rates.",{"start":2709,"end":2710},{"line":2674,"column":52,"offset":2705},{"line":2674,"column":2711,"offset":2712},182,7577,{"start":2714,"end":2716},{"line":2674,"column":20,"offset":2715},7396,{"line":2674,"column":2711,"offset":2712},{"type":26,"value":27},{"type":30,"tagName":1336,"properties":2719,"children":2720,"position":2765},{},[2721,2738,2744,2759],{"type":30,"tagName":2112,"properties":2722,"children":2724,"position":2733},{"href":2723},"perps-and-leverage.md",[2725],{"type":26,"value":2726,"position":2727},"Perps and leverage",{"start":2728,"end":2731},{"line":2729,"column":156,"offset":2730},97,7581,{"line":2729,"column":1349,"offset":2732},7599,{"start":2734,"end":2736},{"line":2729,"column":1346,"offset":2735},7580,{"line":2729,"column":1477,"offset":2737},7623,{"type":26,"value":78,"position":2739},{"start":2740,"end":2741},{"line":2729,"column":1477,"offset":2737},{"line":2729,"column":2742,"offset":2743},48,7625,{"type":30,"tagName":2112,"properties":2745,"children":2747,"position":2755},{"href":2746},"perps.md",[2748],{"type":26,"value":2749,"position":2750},"Perps: margin, liquidation, and funding",{"start":2751,"end":2753},{"line":2729,"column":2618,"offset":2752},7626,{"line":2729,"column":2418,"offset":2754},7665,{"start":2756,"end":2757},{"line":2729,"column":2742,"offset":2743},{"line":2729,"column":1554,"offset":2758},7676,{"type":26,"value":2760,"position":2761},": the leveraged model and its counters.",{"start":2762,"end":2763},{"line":2729,"column":1554,"offset":2758},{"line":2729,"column":1798,"offset":2764},7715,{"start":2766,"end":2768},{"line":2729,"column":20,"offset":2767},7578,{"line":2729,"column":1798,"offset":2764},{"type":26,"value":27},{"type":30,"tagName":1336,"properties":2771,"children":2772,"position":2819},{},[2773,2790,2796,2812],{"type":30,"tagName":2112,"properties":2774,"children":2775,"position":2784},{"href":2114},[2776],{"type":26,"value":2117,"position":2777},{"start":2778,"end":2781},{"line":2779,"column":156,"offset":2780},98,7719,{"line":2779,"column":2782,"offset":2783},31,7746,{"start":2785,"end":2787},{"line":2779,"column":1346,"offset":2786},7718,{"line":2779,"column":2788,"offset":2789},55,7770,{"type":26,"value":78,"position":2791},{"start":2792,"end":2793},{"line":2779,"column":2788,"offset":2789},{"line":2779,"column":2794,"offset":2795},57,7772,{"type":30,"tagName":2112,"properties":2797,"children":2799,"position":2808},{"href":2798},"stats-reference.md",[2800],{"type":26,"value":2801,"position":2802},"Stats reference",{"start":2803,"end":2805},{"line":2779,"column":1324,"offset":2804},7773,{"line":2779,"column":2806,"offset":2807},73,7788,{"start":2809,"end":2810},{"line":2779,"column":2794,"offset":2795},{"line":2779,"column":2609,"offset":2811},7809,{"type":26,"value":2813,"position":2814},": the panel, the card, the report and every stat.",{"start":2815,"end":2816},{"line":2779,"column":2609,"offset":2811},{"line":2779,"column":2817,"offset":2818},143,7858,{"start":2820,"end":2822},{"line":2779,"column":20,"offset":2821},7716,{"line":2779,"column":2817,"offset":2818},{"type":26,"value":27},{"type":30,"tagName":1336,"properties":2825,"children":2826,"position":2894},{},[2827,2845,2851,2866,2871,2887],{"type":30,"tagName":2112,"properties":2828,"children":2830,"position":2839},{"href":2829},"examples-spot.md",[2831],{"type":26,"value":2832,"position":2833},"Examples: spot",{"start":2834,"end":2836},{"line":1554,"column":156,"offset":2835},7862,{"line":1554,"column":2837,"offset":2838},18,7876,{"start":2840,"end":2842},{"line":1554,"column":1346,"offset":2841},7861,{"line":1554,"column":2843,"offset":2844},37,7895,{"type":26,"value":78,"position":2846},{"start":2847,"end":2848},{"line":1554,"column":2843,"offset":2844},{"line":1554,"column":2849,"offset":2850},39,7897,{"type":30,"tagName":2112,"properties":2852,"children":2854,"position":2862},{"href":2853},"examples-perps.md",[2855],{"type":26,"value":2856,"position":2857},"Examples: the five perps scenarios",{"start":2858,"end":2860},{"line":1554,"column":2682,"offset":2859},7898,{"line":1554,"column":1368,"offset":2861},7932,{"start":2863,"end":2864},{"line":1554,"column":2849,"offset":2850},{"line":1554,"column":2609,"offset":2865},7952,{"type":26,"value":78,"position":2867},{"start":2868,"end":2869},{"line":1554,"column":2609,"offset":2865},{"line":1554,"column":2674,"offset":2870},7954,{"type":30,"tagName":2112,"properties":2872,"children":2874,"position":2882},{"href":2873},"examples-hyperliquid.md",[2875],{"type":26,"value":2876,"position":2877},"Backtest a Hyperliquid perp strategy",{"start":2878,"end":2880},{"line":1554,"column":2729,"offset":2879},7955,{"line":1554,"column":2625,"offset":2881},7991,{"start":2883,"end":2884},{"line":1554,"column":2674,"offset":2870},{"line":1554,"column":2885,"offset":2886},159,8017,{"type":26,"value":2888,"position":2889},": the ports.",{"start":2890,"end":2891},{"line":1554,"column":2885,"offset":2886},{"line":1554,"column":2892,"offset":2893},171,8029,{"start":2895,"end":2897},{"line":1554,"column":20,"offset":2896},7859,{"line":1554,"column":2892,"offset":2893},{"type":26,"value":27},{"start":2900,"end":2901},{"line":2609,"column":20,"offset":2629},{"line":1554,"column":2892,"offset":2893},{"quirksMode":2903},false,{"start":2905,"end":2906},{"line":20,"column":20,"offset":21},{"line":2907,"column":20,"offset":2908},100,8030,1790157173475]