@alphacharts/indicators 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +95 -2
- package/dist/all-DeXJJd7D.js +21 -0
- package/dist/all-DeXJJd7D.js.map +1 -0
- package/dist/all.js +10 -0
- package/dist/all.js.map +1 -0
- package/dist/assets/worker-BrUuzTIJ.js +2 -0
- package/dist/assets/worker-BrUuzTIJ.js.map +1 -0
- package/dist/define-BPvQbaq9.js +472 -0
- package/dist/define-BPvQbaq9.js.map +1 -0
- package/dist/index.js +593 -0
- package/dist/index.js.map +1 -0
- package/dist/registry-CYZuqhXX.js +49 -0
- package/dist/registry-CYZuqhXX.js.map +1 -0
- package/dist/runner-DBP0M8z3.js +229 -0
- package/dist/runner-DBP0M8z3.js.map +1 -0
- package/dist/studies.js +1 -0
- package/dist/tv-volume-7hh6ajKt.js +3457 -0
- package/dist/tv-volume-7hh6ajKt.js.map +1 -0
- package/dist/types/all.d.ts +3 -0
- package/dist/types/chart/studies.d.ts +165 -0
- package/dist/types/define.d.ts +46 -0
- package/dist/types/engine/graph.d.ts +101 -0
- package/dist/types/engine/kernels.d.ts +9 -0
- package/dist/types/engine/study.d.ts +31 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/registry.d.ts +7 -0
- package/dist/types/runner.d.ts +82 -0
- package/dist/types/studies/all.d.ts +2 -0
- package/dist/types/studies/cycle.d.ts +7 -0
- package/dist/types/studies/index.d.ts +13 -0
- package/dist/types/studies/ma.d.ts +26 -0
- package/dist/types/studies/math.d.ts +28 -0
- package/dist/types/studies/momentum.d.ts +30 -0
- package/dist/types/studies/overlap.d.ts +14 -0
- package/dist/types/studies/patterns.d.ts +62 -0
- package/dist/types/studies/price.d.ts +6 -0
- package/dist/types/studies/sar.d.ts +2 -0
- package/dist/types/studies/statistic.d.ts +9 -0
- package/dist/types/studies/tv-osc.d.ts +18 -0
- package/dist/types/studies/tv-trend.d.ts +20 -0
- package/dist/types/studies/tv-volume.d.ts +14 -0
- package/dist/types/studies/volatility.d.ts +3 -0
- package/dist/types/studies/volume.d.ts +3 -0
- package/dist/types/types.d.ts +133 -0
- package/dist/types/wasm.d.ts +2 -0
- package/dist/types/worker.d.ts +1 -0
- package/dist/worker.js +8 -0
- package/dist/worker.js.map +1 -0
- package/package.json +69 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tv-volume-7hh6ajKt.js","names":["kama","t3","dema","tema","trima","ma","len","maDema","maTema","maTrima","maKama","maT3","genericMa","len","roc","ma","emaG","len","NaN_","NaN_","SOURCE_NAMES","fillBetween","hline","markers","select","defineStudy","int","band","float","source","bool","hist","COLORS","line","__defProp","__exportAll","target","name","all","no_symbols","MA_TYPES","kama$1","d","g","x","a","b","sd","p","lagP","fsc","fast","ssc","slow","self","s","i","xi","x0","sc","prevK","prev","t3$1","e","stages","k","a2","a3","c1","c2","c3","c4","e3","e4","e5","e6","dema$1","e1","e2","tema$1","trima$1","emaGated","cnt","xv","c","gv","gate","v","alpha","j","emaFirst","ma$1","type","maGated","overlap_exports","bbands","bbpb","bbw","dema","ema","kama","ma","midpoint","midprice","sma","t3","tema","trima","wma","len$3","def","mid","w","hi","lo","momentum_exports","adx","adxr","apo","aroon","aroonosc","bop","cci","cmo","dx","macd","macdext","macdfix","mfi","minusDi","minusDm","mom","plusDi","plusDm","ppo","roc$1","rocp","rocr","rocr100","rsi","stoch","stochf","stochrsi","trix","ultosc","willr","len$2","min","ch","au","ad","u","up","dn","rocLike","id","hz","base","f","cur","ref","maInput","key","twoMas","gated","line_","sig","macdColumns","macdPlots","maGatedAlpha","rawStoch","hh","ll","r","stochPlots","raw","tp","m","n","mean","dev","pos","neg","sp","sn","y","bp","tr","b1","b2","b3","t1","t2","r1","r2","r3","hb","lb","l","h","wilderSum","t","dm","plus","high","low","minus","sm","st","di","pdi","mdi","diPlots","diStudy","color","pick","volume_exports","adosc","obv","adLine","mf","pc","volatility_exports","atr","natr","trange","price_exports","avgprice","medprice","typprice","wclprice","price","statistic_exports","beta","correl","linearreg","linearregAngle","linearregIntercept","linearregSlope","stddev","tsf","variance","len$1","RAD","reg","SOURCES2","sx","sy","sxx","syy","sxy","rx","ry","math_exports","acos","add","asin","atan","ceil","cos","cosh","div","exp","floor","ln","log10","max","maxindex","minindex","minmax","minmaxindex","mult","sin","sinh","sqrt","sub","sum","tan","tanh","unary","binary","win","idx","bars","cycle_exports","htDcPeriod","htDcPhase","htPhasor","htSine","htTrendMode","htTrendline","mama","A","B","ATAN1","RAD2DEG","DEG2RAD","TWO_PI","hil","adj","lag","hilbertCore","S","warm","det","q1","ji","jq","q2","i2","re","im","per","smv","dv","qv","jiv","jqv","q2v","i2v","rev","imv","pv","sv","from","to","prevPeriod","pq2","pi2","nq2","ni2","nre","nim","first","dcPhase","sper","dc","real","imag","ang","ph","trendline","itr","it","FIRST_SHORT","FIRST_LONG","tl","sine","lead","days","trend","tv","ld","dy","ps","pl","dphi","trl","fama","phase","fv","i1","sar_exports","sar","sarext","startsShort","diffP","diffM","parabolic","isLong","sarS","ep","afL","afS","lg","ss","ee","fl","fs","long","al","as_","prevLow","prevHigh","o","newLow","newHigh","out","acc","start","maxL","maxS","patterns_exports","cdl2Crows","cdl3BlackCrows","cdl3Inside","cdl3LineStrike","cdl3Outside","cdl3StarsInSouth","cdl3WhiteSoldiers","cdlAbandonedBaby","cdlAdvanceBlock","cdlBeltHold","cdlBreakaway","cdlClosingMarubozu","cdlConcealBabySwall","cdlCounterAttack","cdlDarkCloudCover","cdlDoji","cdlDojiStar","cdlDragonflyDoji","cdlEngulfing","cdlEveningDojiStar","cdlEveningStar","cdlGapSideSideWhite","cdlGravestoneDoji","cdlHammer","cdlHangingMan","cdlHarami","cdlHaramiCross","cdlHighWave","cdlHikkake","cdlHikkakeMod","cdlHomingPigeon","cdlIdentical3Crows","cdlInNeck","cdlInvertedHammer","cdlKicking","cdlKickingByLength","cdlLadderBottom","cdlLongLeggedDoji","cdlLongLine","cdlMarubozu","cdlMatHold","cdlMatchingLow","cdlMorningDojiStar","cdlMorningStar","cdlOnNeck","cdlPiercing","cdlRickshawMan","cdlRiseFall3Methods","cdlSeparatingLines","cdlShootingStar","cdlShortLine","cdlSpinningTop","cdlStalledPattern","cdlStickSandwich","cdlTakuri","cdlTasukiGap","cdlThrusting","cdlTriStar","cdlUnique3River","cdlUpsideGap2Crows","cdlXSideGap3Methods","RB","HL","SH","BL","BS","BD","SL","SVL","SS","SVS","NEAR","FAR","EQ","O","H","Lw","C","bind","op","cl","col","rb","us","ls","range","avg","total","fma","ca","ah","cb","bh","bl","tot","P","nd","end","mkStudy","cdl","pen","ts","slots","lookback","T","penetration","fn","mx","mn","pmx","pmn","hikkake","L","mod","cdC","resC","shC","slC","cdv","rs","sh","sl","cd","res","sHi","sLo","kicking","KICK_SLOTS","tv_trend_exports","alligator","alma","chandeKrollStop","donchian","envelopes","fractals","hma","ichimoku","keltner","linregChannel","lsma","maCross","maRibbon","mcginley","median","priceChannel","smma","supertrend","vwma","zigzag","NaN_$2","len","rgba","hex","trTv","close","atrTv","linregFit","sumX","slope","icpt","ic","bb","maOf","half","root","norm","ev","RIBBON_COLORS","RIBBON_COLS","last","channel","upper","lower","firstHigh","firstLow","ib","c0","med","DISPLACEMENT","conv","ub","dr","main","at","pu","dir","FRACTAL_N","FRACTAL_TIES","fractal","beyond","isHigh","ok","depth","exP","exI","pvI","hP","hI","lP","lI","back","live","liveBack","eP","eI","pI","hp","lp","li","ob","tv_osc_exports","accelerator","awesome","bullBearPower","choppiness","connorsRsi","coppock","dpo","fisher","kst","massIndex","rankCorr","rviVigor","rviVolatility","schaffTc","smiErgodic","stochTv","tsi","vortex","NaN_$1","roc","rsiOf","doubleEma","swma","trFirstBar","risingFalling","stochOf","h1","l1","value","fish","val","q","parts","num","den","vmp","vmm","str","udRsi","rank","rv","atrSum","ratio","rvi","upIn","dnIn","erg","less","eq","z","aoOf","ao","down","ac","stc","tv_volume_exports","adr","anchoredVwap","chaikinMf","elderForce","eom","histVol","klinger","netVolume","pivotPoints","pvt","volume","volumeOsc","vwap","NaN_","DAY_MS","civil","era","doe","yoe","doy","mp","periodKey","off","offsetMin","day","period","cum","fresh","term","vwapOutputs","vw","cv","cpv","cpv2","OFFSET","open","vol","hl2","h3","kvo","src","LEVEL_KEYS","levels","R","kind","PIVOT_COLORS","cO","cH","cL","cC","pO","pH","pL","pC"],"sources":["../src/studies/ma.ts","../src/studies/overlap.ts","../src/studies/momentum.ts","../src/studies/volume.ts","../src/studies/volatility.ts","../src/studies/price.ts","../src/studies/statistic.ts","../src/studies/math.ts","../src/studies/cycle.ts","../src/studies/sar.ts","../src/studies/patterns.ts","../src/studies/tv-trend.ts","../src/studies/tv-osc.ts","../src/studies/tv-volume.ts"],"sourcesContent":["// Moving-average building blocks shared by the studies of this package: the\n// TA-Lib MA types as graph nodes, and EMA variants with TA-Lib's exact seeding.\n\nimport type { Col, Graph, Node } from \"../engine/graph.js\";\n\nexport const MA_TYPES = [\"sma\", \"ema\", \"wma\", \"rma\", \"dema\", \"tema\", \"trima\", \"kama\", \"t3\"] as const;\nexport type MaType = (typeof MA_TYPES)[number];\n\n/** Kaufman's adaptive MA: efficiency ratio over p bars, fast/slow smoothing limits. TA-Lib seeds with the bar before the first output. */\nexport function kama(g: Graph, x: Col, p: number, fast = 2, slow = 30): Node {\n const d = g.map2(x, g.lag(x, 1), (a, b) => Math.abs(a - b));\n const sd = g.sum(d, p);\n const lagP = g.lag(x, p);\n const fsc = 2 / (fast + 1), ssc = 2 / (slow + 1);\n const self: Node = g.calc((i) => {\n const s = sd.v[i]!, xi = x.v[i]!, x0 = lagP.v[i]!;\n if (s !== s || xi !== xi || x0 !== x0) return Number.NaN;\n const er = s <= 0 ? 0 : Math.abs(xi - x0) / s;\n const sc = (er * (fsc - ssc) + ssc) ** 2;\n const prevK = i > 0 ? self.v[i - 1]! : Number.NaN;\n const prev = prevK === prevK ? prevK : x.v[i - 1]!;\n return prev + sc * (xi - prev);\n });\n return self;\n}\n\n/** Tillson T3: six EMAs, volume factor `a`. */\nexport function t3(g: Graph, x: Col, p: number, a = 0.7): Node {\n let e: Node = g.ema(x, p);\n const stages: Node[] = [e];\n for (let k = 1; k < 6; k++) stages.push((e = g.ema(e, p)));\n const a2 = a * a, a3 = a2 * a;\n const c1 = -a3, c2 = 3 * a2 + 3 * a3, c3 = -6 * a2 - 3 * a - 3 * a3, c4 = 1 + 3 * a + a3 + 3 * a2;\n const [, , e3, e4, e5, e6] = stages as [Node, Node, Node, Node, Node, Node];\n return g.calc((i) => c1 * e6.v[i]! + c2 * e5.v[i]! + c3 * e4.v[i]! + c4 * e3.v[i]!);\n}\n\nexport function dema(g: Graph, x: Col, p: number): Node {\n const e1 = g.ema(x, p), e2 = g.ema(e1, p);\n return g.calc((i) => 2 * e1.v[i]! - e2.v[i]!);\n}\n\nexport function tema(g: Graph, x: Col, p: number): Node {\n const e1 = g.ema(x, p), e2 = g.ema(e1, p), e3 = g.ema(e2, p);\n return g.calc((i) => 3 * e1.v[i]! - 3 * e2.v[i]! + e3.v[i]!);\n}\n\n/** Triangular MA: an SMA of an SMA with the periods TA-Lib splits p into. */\nexport function trima(g: Graph, x: Col, p: number): Node {\n const odd = p % 2 === 1;\n return odd ? g.sma(g.sma(x, (p + 1) / 2), (p + 1) / 2) : g.sma(g.sma(x, p / 2), p / 2 + 1);\n}\n\n/**\n * EMA that starts at the first bar `gate` is valid, seeded with the simple\n * mean of the p values ending there (TA-Lib seeds MACD's fast EMA at the slow\n * EMA's first bar this way).\n */\nexport function emaGated(g: Graph, x: Col, p: number, alpha: number, gate: Col): Node {\n const cnt = g.validRun(x);\n return g.node((s, a, b) => {\n const xv = x.v, c = cnt.v, gv = gate.v, v = s.v;\n for (let i = a; i < b; i++) {\n const prev = i > 0 ? v[i - 1]! : Number.NaN;\n if (prev === prev && xv[i]! === xv[i]!) v[i] = prev + alpha * (xv[i]! - prev);\n else if (gv[i]! === gv[i]! && c[i]! >= p) {\n let t = 0;\n for (let j = i - p + 1; j <= i; j++) t += xv[j]!;\n v[i] = t / p;\n } else v[i] = Number.NaN;\n }\n });\n}\n\n/** EMA seeded with the first value instead of a mean (TA-Lib ADOSC). */\nexport function emaFirst(g: Graph, x: Col, alpha: number): Node {\n const self: Node = g.calc((i) => {\n const xi = x.v[i]!;\n if (xi !== xi) return Number.NaN;\n const prev = i > 0 ? self.v[i - 1]! : Number.NaN;\n return prev === prev ? prev + alpha * (xi - prev) : xi;\n });\n return self;\n}\n\n/** One moving average of the given type. */\nexport function ma(g: Graph, type: MaType, x: Col, p: number): Node {\n switch (type) {\n case \"sma\": return g.sma(x, p);\n case \"ema\": return g.ema(x, p);\n case \"wma\": return g.wma(x, p);\n case \"rma\": return g.rma(x, p);\n case \"dema\": return dema(g, x, p);\n case \"tema\": return tema(g, x, p);\n case \"trima\": return trima(g, x, p);\n case \"kama\": return kama(g, x, p);\n case \"t3\": return t3(g, x, p);\n }\n}\n\n/**\n * `ma`, except that an EMA starts where `gate` first has a value (TA-Lib's APO,\n * PPO and MACD compute the fast average from the slow average's first bar).\n */\nexport function maGated(g: Graph, type: MaType, x: Col, p: number, gate: Col): Node {\n return type === \"ema\" ? emaGated(g, x, p, 2 / (p + 1), gate) : ma(g, type, x, p);\n}\n","// Overlap studies: moving averages and bands drawn over price. TA-Lib group\n// \"Overlap Studies\" plus the TradingView moving averages built on the same nodes.\n\nimport { band, COLORS, defineStudy, float, hline, int, line, select, source } from \"../define.js\";\nimport { dema as maDema, kama as maKama, ma as genericMa, MA_TYPES, t3 as maT3, tema as maTema, trima as maTrima, type MaType } from \"./ma.js\";\n\nconst len = (def: number) => int(\"length\", def, 1, 5000);\n\nexport const sma = defineStudy({\n id: \"sma\", name: \"Simple Moving Average\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(9), source()], columns: [\"sma\"], plots: [line(\"sma\", COLORS.blue)],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.sma(g.src(p.source), p.length)],\n reference: \"TA-Lib SMA\",\n});\n\nexport const ema = defineStudy({\n id: \"ema\", name: \"Exponential Moving Average\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(9), source()], columns: [\"ema\"], plots: [line(\"ema\", COLORS.orange)],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.ema(g.src(p.source), p.length)],\n reference: \"TA-Lib EMA\",\n});\n\nexport const wma = defineStudy({\n id: \"wma\", name: \"Weighted Moving Average\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(9), source()], columns: [\"wma\"], plots: [line(\"wma\", COLORS.green)],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.wma(g.src(p.source), p.length)],\n reference: \"TA-Lib WMA\",\n});\n\nexport const dema = defineStudy({\n id: \"dema\", name: \"Double Exponential Moving Average\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(9), source()], columns: [\"dema\"], plots: [line(\"dema\", COLORS.teal)],\n label: (p) => `${p.length}`,\n build: (g, p) => [maDema(g, g.src(p.source), p.length)],\n reference: \"TA-Lib DEMA\",\n});\n\nexport const tema = defineStudy({\n id: \"tema\", name: \"Triple Exponential Moving Average\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(9), source()], columns: [\"tema\"], plots: [line(\"tema\", COLORS.pink)],\n label: (p) => `${p.length}`,\n build: (g, p) => [maTema(g, g.src(p.source), p.length)],\n reference: \"TA-Lib TEMA\",\n});\n\nexport const trima = defineStudy({\n id: \"trima\", name: \"Triangular Moving Average\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(30), source()], columns: [\"trima\"], plots: [line(\"trima\", COLORS.cyan)],\n label: (p) => `${p.length}`,\n build: (g, p) => [maTrima(g, g.src(p.source), p.length)],\n reference: \"TA-Lib TRIMA\",\n});\n\nexport const kama = defineStudy({\n id: \"kama\", name: \"Kaufman Adaptive Moving Average\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(10), int(\"fast\", 2, 1, 1000), int(\"slow\", 30, 2, 5000), source()], columns: [\"kama\"], plots: [line(\"kama\", COLORS.lime)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n if (p.fast >= p.slow) throw new RangeError(`kama: fast (${p.fast}) must be below slow (${p.slow})`);\n return [maKama(g, g.src(p.source), p.length, p.fast, p.slow)];\n },\n reference: \"TA-Lib KAMA (fast/slow limits 2 and 30)\",\n});\n\nexport const t3 = defineStudy({\n id: \"t3\", name: \"Tillson T3\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(5), float(\"vfactor\", 0.7, 0, 1, 0.1), source()], columns: [\"t3\"], plots: [line(\"t3\", COLORS.brown)],\n label: (p) => `${p.length}, ${p.vfactor}`,\n build: (g, p) => [maT3(g, g.src(p.source), p.length, p.vfactor)],\n reference: \"TA-Lib T3\",\n});\n\nexport const ma = defineStudy({\n id: \"ma\", name: \"Moving Average\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(30), source(), select(\"type\", \"sma\", MA_TYPES)], columns: [\"ma\"], plots: [line(\"ma\", COLORS.blue)],\n label: (p) => `${p.type.toUpperCase()} ${p.length}`,\n build: (g, p) => [genericMa(g, p.type as MaType, g.src(p.source), p.length)],\n reference: \"TA-Lib MA (types SMA, EMA, WMA, DEMA, TEMA, TRIMA, KAMA, T3; RMA is Wilder's)\",\n});\n\nexport const bbands = defineStudy({\n id: \"bbands\", name: \"Bollinger Bands\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(20), source(), float(\"multUp\", 2, 0, 100, 0.1), float(\"multDn\", 2, 0, 100, 0.1), select(\"maType\", \"sma\", MA_TYPES)],\n columns: [\"upper\", \"middle\", \"lower\"],\n plots: [band(\"band\", \"upper\", \"lower\", COLORS.blue, \"rgba(41,98,255,0.10)\", \"Bands\"), line(\"middle\", COLORS.orange)],\n label: (p) => `${p.length}, ${p.multUp}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const mid = genericMa(g, p.maType as MaType, x, p.length);\n const sd = g.stdev(x, p.length);\n return [g.calc((i) => mid.v[i]! + p.multUp * sd.v[i]!), mid, g.calc((i) => mid.v[i]! - p.multDn * sd.v[i]!)];\n },\n reference: \"TA-Lib BBANDS (population standard deviation)\",\n});\n\nexport const bbpb = defineStudy({\n id: \"bbpb\", name: \"Bollinger Bands %B\", family: \"overlap\", needs: \"value\", pane: \"new\",\n inputs: [len(20), source(), float(\"mult\", 2, 0, 100, 0.1)], columns: [\"pb\"],\n plots: [line(\"pb\", COLORS.teal, { title: \"%B\" }), hline(\"upper\", 1), hline(\"lower\", 0), hline(\"middle\", 0.5, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length}, ${p.mult}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const mid = g.sma(x, p.length), sd = g.stdev(x, p.length);\n return [g.calc((i) => {\n const w = 2 * p.mult * sd.v[i]!;\n return w === 0 ? Number.NaN : (x.v[i]! - (mid.v[i]! - p.mult * sd.v[i]!)) / w;\n })];\n },\n reference: \"TradingView Bollinger Bands %B = (source - lower) / (upper - lower)\",\n});\n\nexport const bbw = defineStudy({\n id: \"bbw\", name: \"Bollinger Bands Width\", family: \"overlap\", needs: \"value\", pane: \"new\",\n inputs: [len(20), source(), float(\"mult\", 2, 0, 100, 0.1)], columns: [\"bbw\"],\n plots: [line(\"bbw\", COLORS.blue, { title: \"BBW\" })],\n label: (p) => `${p.length}, ${p.mult}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const mid = g.sma(x, p.length), sd = g.stdev(x, p.length);\n return [g.calc((i) => (2 * p.mult * sd.v[i]!) / mid.v[i]!)];\n },\n reference: \"Pine ta.bbw = ((basis + dev) - (basis - dev)) / basis\",\n});\n\nexport const midpoint = defineStudy({\n id: \"midpoint\", name: \"MidPoint over period\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [len(14), source()], columns: [\"midpoint\"], plots: [line(\"midpoint\", COLORS.purple)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const hi = g.highest(x, p.length), lo = g.lowest(x, p.length);\n return [g.calc((i) => (hi.v[i]! + lo.v[i]!) / 2)];\n },\n reference: \"TA-Lib MIDPOINT\",\n});\n\nexport const midprice = defineStudy({\n id: \"midprice\", name: \"Midpoint Price over period\", family: \"overlap\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [len(14)], columns: [\"midprice\"], plots: [line(\"midprice\", COLORS.purple)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const hi = g.highest(g.high, p.length), lo = g.lowest(g.low, p.length);\n return [g.calc((i) => (hi.v[i]! + lo.v[i]!) / 2)];\n },\n reference: \"TA-Lib MIDPRICE\",\n});\n","// Momentum studies and oscillators: TA-Lib group \"Momentum Indicators\" with the\n// TradingView oscillators that are the same computation. Where TradingView and\n// TA-Lib differ in method the input says so and TradingView's is the default.\n\nimport type { Col, Graph, Node } from \"../engine/graph.js\";\nimport { band, COLORS, defineStudy, float, hist, hline, int, line, select, source } from \"../define.js\";\nimport { ma, maGated, MA_TYPES, type MaType } from \"./ma.js\";\n\nconst len = (def: number, min = 1) => int(\"length\", def, min, 5000);\n\n// ---- RSI, CMO ---------------------------------------------------------------\n\nexport const rsi = defineStudy({\n id: \"rsi\", name: \"Relative Strength Index\", family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [len(14), source()], columns: [\"rsi\"],\n plots: [line(\"rsi\", COLORS.purple), hline(\"upper\", 70), hline(\"lower\", 30), hline(\"middle\", 50, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const ch = g.change(g.src(p.source), 1);\n const au = g.rma(g.map(ch, (d) => (d > 0 ? d : d === d ? 0 : Number.NaN)), p.length);\n const ad = g.rma(g.map(ch, (d) => (d < 0 ? -d : d === d ? 0 : Number.NaN)), p.length);\n return [g.map2(au, ad, (u, d) => (u + d === 0 ? 0 : (100 * u) / (u + d)))];\n },\n reference: \"TA-Lib RSI (Wilder smoothing, seeded with the mean of the first `length` changes)\",\n});\n\nexport const cmo = defineStudy({\n id: \"cmo\", name: \"Chande Momentum Oscillator\", family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [len(9), source(), select(\"method\", \"sum\", [\"sum\", \"wilder\"])], columns: [\"cmo\"],\n plots: [line(\"cmo\", COLORS.blue), hline(\"upper\", 50), hline(\"lower\", -50), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const ch = g.change(g.src(p.source), 1);\n const up = g.map(ch, (d) => (d > 0 ? d : d === d ? 0 : Number.NaN));\n const dn = g.map(ch, (d) => (d < 0 ? -d : d === d ? 0 : Number.NaN));\n const [u, d] = p.method === \"wilder\" ? [g.rma(up, p.length), g.rma(dn, p.length)] : [g.sum(up, p.length), g.sum(dn, p.length)];\n return [g.map2(u, d, (a, b) => (a + b === 0 ? 0 : (100 * (a - b)) / (a + b)))];\n },\n reference: \"method sum = TradingView ta.cmo (window sums); method wilder = TA-Lib CMO\",\n});\n\n// ---- rate of change family ----------------------------------------------------\n\nexport const mom = defineStudy({\n id: \"mom\", name: \"Momentum\", family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [len(10), source()], columns: [\"mom\"], plots: [line(\"mom\", COLORS.blue), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.change(g.src(p.source), p.length)],\n reference: \"TA-Lib MOM\",\n});\n\nconst rocLike = (id: string, name: string, f: (x: number, b: number) => number, ref: string, hz?: number) =>\n defineStudy({\n id, name, family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [len(id === \"roc\" ? 9 : 10), source()], columns: [id],\n plots: [line(id, COLORS.orange), ...(hz === undefined ? [] : [hline(\"base\", hz, COLORS.gray, \"dotted\")])],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const x = g.src(p.source), b = g.lag(x, p.length);\n return [g.map2(x, b, (cur, base) => (base === 0 ? Number.NaN : f(cur, base)))];\n },\n reference: ref,\n });\n\nexport const roc = rocLike(\"roc\", \"Rate of Change\", (x, b) => ((x - b) / b) * 100, \"TA-Lib ROC = (x / x[n] - 1) * 100\", 0);\nexport const rocp = rocLike(\"rocp\", \"Rate of Change Percentage\", (x, b) => (x - b) / b, \"TA-Lib ROCP = (x - x[n]) / x[n]\", 0);\nexport const rocr = rocLike(\"rocr\", \"Rate of Change Ratio\", (x, b) => x / b, \"TA-Lib ROCR = x / x[n]\", 1);\nexport const rocr100 = rocLike(\"rocr100\", \"Rate of Change Ratio 100 scale\", (x, b) => (x / b) * 100, \"TA-Lib ROCR100 = x / x[n] * 100\", 100);\n\nexport const trix = defineStudy({\n id: \"trix\", name: \"TRIX\", family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [len(18), source()], columns: [\"trix\"], plots: [line(\"trix\", COLORS.red), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const e3 = g.ema(g.ema(g.ema(g.src(p.source), p.length), p.length), p.length);\n return [g.map2(e3, g.lag(e3, 1), (a, b) => (b === 0 ? Number.NaN : (a / b - 1) * 100))];\n },\n reference: \"TA-Lib TRIX = 1-bar ROC (percent) of a triple-smoothed EMA\",\n});\n\n// ---- price oscillators and MACD ---------------------------------------------\n\nconst maInput = (def: string, key = \"maType\") => select(key, def, MA_TYPES);\n\nfunction twoMas(g: Graph, x: Col, fast: number, slow: number, type: MaType, gated = false): [Node, Node] {\n const s = ma(g, type, x, slow);\n return [gated ? maGated(g, type, x, fast, s) : ma(g, type, x, fast), s];\n}\n\nexport const apo = defineStudy({\n id: \"apo\", name: \"Absolute Price Oscillator\", family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [int(\"fast\", 12, 1, 5000), int(\"slow\", 26, 2, 5000), source(), maInput(\"ema\")], columns: [\"apo\"],\n plots: [line(\"apo\", COLORS.blue), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.fast}, ${p.slow}`,\n build: (g, p) => {\n if (p.fast >= p.slow) throw new RangeError(`apo: fast (${p.fast}) must be below slow (${p.slow})`);\n const [f, s] = twoMas(g, g.src(p.source), p.fast, p.slow, p.maType);\n return [g.sub(f, s)];\n },\n reference: \"TA-Lib APO (fast average starts at the slow average's first bar)\",\n});\n\nexport const ppo = defineStudy({\n id: \"ppo\", name: \"Percentage Price Oscillator\", family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [int(\"fast\", 12, 1, 5000), int(\"slow\", 26, 2, 5000), int(\"signal\", 9, 1, 5000), source(), maInput(\"ema\")], columns: [\"ppo\", \"signal\", \"histogram\"],\n plots: [hist(\"histogram\", COLORS.green, COLORS.red), line(\"ppo\", COLORS.blue), line(\"signal\", COLORS.orange)],\n label: (p) => `${p.fast}, ${p.slow}, ${p.signal}`,\n build: (g, p) => {\n if (p.fast >= p.slow) throw new RangeError(`ppo: fast (${p.fast}) must be below slow (${p.slow})`);\n const [f, s] = twoMas(g, g.src(p.source), p.fast, p.slow, p.maType);\n const line_ = g.map2(f, s, (a, b) => (b === 0 ? Number.NaN : ((a - b) / b) * 100));\n const sig = g.ema(line_, p.signal);\n return [line_, sig, g.sub(line_, sig)];\n },\n reference: \"TA-Lib PPO (line only; the signal EMA and histogram follow TradingView's Price Oscillator)\",\n});\n\nconst macdColumns = [\"macd\", \"signal\", \"histogram\"];\nconst macdPlots = [hist(\"histogram\", COLORS.green, COLORS.red), line(\"macd\", COLORS.blue), line(\"signal\", COLORS.orange)];\n\nexport const macd = defineStudy({\n id: \"macd\", name: \"MACD\", family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [int(\"fast\", 12, 1, 5000), int(\"slow\", 26, 2, 5000), int(\"signal\", 9, 1, 5000), source()], columns: macdColumns, plots: macdPlots,\n label: (p) => `${p.fast}, ${p.slow}, ${p.signal}`,\n build: (g, p) => {\n if (p.fast >= p.slow) throw new RangeError(`macd: fast (${p.fast}) must be below slow (${p.slow})`);\n const x = g.src(p.source);\n const [f, s] = twoMas(g, x, p.fast, p.slow, \"ema\", true);\n const line_ = g.sub(f, s), sig = g.ema(line_, p.signal);\n return [line_, sig, g.sub(line_, sig)];\n },\n reference: \"TA-Lib MACD (the fast EMA is seeded at the slow EMA's first bar; TradingView seeds it at bar 0, the difference decays below 1e-9 within ~150 bars)\",\n});\n\nexport const macdfix = defineStudy({\n id: \"macdfix\", name: \"MACD Fix 12/26\", family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [int(\"signal\", 9, 1, 5000), source()], columns: macdColumns, plots: macdPlots,\n label: (p) => `${p.signal}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const s = g.smooth(x, 26, 0.075);\n const f = maGatedAlpha(g, x, 12, 0.15, s);\n const line_ = g.sub(f, s), sig = g.ema(line_, p.signal);\n return [line_, sig, g.sub(line_, sig)];\n },\n reference: \"TA-Lib MACDFIX: fixed 12/26 with smoothing constants 0.15 and 0.075\",\n});\n\nfunction maGatedAlpha(g: Graph, x: Col, p: number, alpha: number, gate: Col): Node {\n return emaG(g, x, p, alpha, gate);\n}\nimport { emaGated as emaG } from \"./ma.js\";\n\nexport const macdext = defineStudy({\n id: \"macdext\", name: \"MACD with controllable MA type\", family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [int(\"fast\", 12, 1, 5000), int(\"slow\", 26, 2, 5000), int(\"signal\", 9, 1, 5000), source(),\n maInput(\"ema\", \"fastType\"), maInput(\"ema\", \"slowType\"), maInput(\"ema\", \"signalType\")],\n columns: macdColumns, plots: macdPlots,\n label: (p) => `${p.fast}, ${p.slow}, ${p.signal}`,\n build: (g, p) => {\n if (p.fast >= p.slow) throw new RangeError(`macdext: fast (${p.fast}) must be below slow (${p.slow})`);\n const x = g.src(p.source);\n const s = ma(g, p.slowType, x, p.slow);\n const f = maGated(g, p.fastType, x, p.fast, s);\n const line_ = g.sub(f, s), sig = ma(g, p.signalType, line_, p.signal);\n return [line_, sig, g.sub(line_, sig)];\n },\n reference: \"TA-Lib MACDEXT\",\n});\n\n// ---- stochastic -------------------------------------------------------------\n\n/** 100 * (close - LL) / (HH - LL); a flat range gives 0 as TA-Lib defines it. */\nfunction rawStoch(g: Graph, x: Col, hi: Col, lo: Col, p: number): Node {\n const hh = g.highest(hi, p), ll = g.lowest(lo, p);\n return g.calc((i) => {\n const r = hh.v[i]! - ll.v[i]!;\n return r !== r ? Number.NaN : r === 0 ? 0 : (100 * (x.v[i]! - ll.v[i]!)) / r;\n });\n}\n\nconst stochPlots = [line(\"k\", COLORS.blue, { title: \"%K\" }), line(\"d\", COLORS.orange, { title: \"%D\" }), hline(\"upper\", 80), hline(\"lower\", 20)];\n\nexport const stoch = defineStudy({\n id: \"stoch\", name: \"Stochastic\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"kLength\", 14, 1, 5000), int(\"kSmooth\", 1, 1, 5000), int(\"dLength\", 3, 1, 5000), maInput(\"sma\", \"kType\"), maInput(\"sma\", \"dType\")],\n columns: [\"k\", \"d\"], plots: stochPlots,\n label: (p) => `${p.kLength}, ${p.kSmooth}, ${p.dLength}`,\n build: (g, p) => {\n const k = ma(g, p.kType, rawStoch(g, g.close, g.high, g.low, p.kLength), p.kSmooth);\n return [k, ma(g, p.dType, k, p.dLength)];\n },\n reference: \"TA-Lib STOCH (slow %K = MA of fast %K); defaults are TradingView's 14, 1, 3\",\n});\n\nexport const stochf = defineStudy({\n id: \"stochf\", name: \"Stochastic Fast\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"kLength\", 5, 1, 5000), int(\"dLength\", 3, 1, 5000), maInput(\"sma\", \"dType\")],\n columns: [\"k\", \"d\"], plots: stochPlots,\n label: (p) => `${p.kLength}, ${p.dLength}`,\n build: (g, p) => {\n const k = rawStoch(g, g.close, g.high, g.low, p.kLength);\n return [k, ma(g, p.dType, k, p.dLength)];\n },\n reference: \"TA-Lib STOCHF\",\n});\n\nexport const stochrsi = defineStudy({\n id: \"stochrsi\", name: \"Stochastic RSI\", family: \"momentum\", needs: \"value\", pane: \"new\",\n inputs: [int(\"rsiLength\", 14, 1, 5000), int(\"stochLength\", 14, 1, 5000), int(\"kSmooth\", 3, 1, 5000), int(\"dSmooth\", 3, 1, 5000), source()],\n columns: [\"raw\", \"k\", \"d\"],\n plots: [line(\"k\", COLORS.blue, { title: \"%K\" }), line(\"d\", COLORS.orange, { title: \"%D\" }), hline(\"upper\", 80), hline(\"lower\", 20)],\n label: (p) => `${p.rsiLength}, ${p.stochLength}, ${p.kSmooth}, ${p.dSmooth}`,\n build: (g, p) => {\n const ch = g.change(g.src(p.source), 1);\n const au = g.rma(g.map(ch, (d) => (d > 0 ? d : d === d ? 0 : Number.NaN)), p.rsiLength);\n const ad = g.rma(g.map(ch, (d) => (d < 0 ? -d : d === d ? 0 : Number.NaN)), p.rsiLength);\n const r = g.map2(au, ad, (u, d) => (u + d === 0 ? 0 : (100 * u) / (u + d)));\n const raw = rawStoch(g, r, r, r, p.stochLength);\n const k = g.sma(raw, p.kSmooth);\n return [raw, k, g.sma(k, p.dSmooth)];\n },\n reference: \"TA-Lib STOCHRSI: `raw` = fastk, `k` = fastd with period kSmooth; `d` is TradingView's second smoothing\",\n});\n\nexport const willr = defineStudy({\n id: \"willr\", name: \"Williams %R\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [len(14)], columns: [\"willr\"],\n plots: [line(\"willr\", COLORS.purple, { title: \"%R\" }), hline(\"upper\", -20), hline(\"lower\", -80)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const hh = g.highest(g.high, p.length), ll = g.lowest(g.low, p.length);\n return [g.calc((i) => {\n const r = hh.v[i]! - ll.v[i]!;\n return r !== r || r === 0 ? Number.NaN : (-100 * (hh.v[i]! - g.close.v[i]!)) / r;\n })];\n },\n reference: \"TA-Lib WILLR (a flat range is absent here; TA-Lib reports 0)\",\n});\n\n// ---- CCI, BOP, MFI, ultimate -------------------------------------------------\n\nexport const cci = defineStudy({\n id: \"cci\", name: \"Commodity Channel Index\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [len(20)], columns: [\"cci\"],\n plots: [line(\"cci\", COLORS.blue), hline(\"upper\", 100), hline(\"lower\", -100)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const tp = g.src(\"hlc3\"), m = g.sma(tp, p.length), n = p.length;\n return [g.calc((i) => {\n const mean = m.v[i]!;\n if (mean !== mean) return Number.NaN;\n let dev = 0;\n for (let j = i - n + 1; j <= i; j++) dev += Math.abs(tp.v[j]! - mean);\n dev /= n;\n return dev === 0 ? Number.NaN : (tp.v[i]! - mean) / (0.015 * dev);\n })];\n },\n reference: \"TA-Lib CCI (typical price, mean deviation; zero deviation is absent here, TA-Lib reports 0)\",\n});\n\nexport const bop = defineStudy({\n id: \"bop\", name: \"Balance Of Power\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [], columns: [\"bop\"], plots: [line(\"bop\", COLORS.teal), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n build: (g) => [g.calc((i) => {\n const r = g.high.v[i]! - g.low.v[i]!;\n return r > 0 ? (g.close.v[i]! - g.open.v[i]!) / r : 0;\n })],\n reference: \"TA-Lib BOP = (close - open) / (high - low), 0 on a flat bar\",\n});\n\nexport const mfi = defineStudy({\n id: \"mfi\", name: \"Money Flow Index\", family: \"momentum\", needs: \"ohlcv\", pane: \"new\",\n inputs: [len(14)], columns: [\"mfi\"],\n plots: [line(\"mfi\", COLORS.purple), hline(\"upper\", 80), hline(\"lower\", 20)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const tp = g.src(\"hlc3\");\n const pos = g.calc((i) => (i === 0 ? Number.NaN : tp.v[i]! > tp.v[i - 1]! ? tp.v[i]! * g.volume.v[i]! : 0));\n const neg = g.calc((i) => (i === 0 ? Number.NaN : tp.v[i]! < tp.v[i - 1]! ? tp.v[i]! * g.volume.v[i]! : 0));\n const sp = g.sum(pos, p.length), sn = g.sum(neg, p.length);\n return [g.map2(sp, sn, (a, b) => (a + b === 0 ? 0 : (100 * a) / (a + b)))];\n },\n reference: \"TA-Lib MFI\",\n});\n\nexport const ultosc = defineStudy({\n id: \"ultosc\", name: \"Ultimate Oscillator\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"fast\", 7, 1, 5000), int(\"middle\", 14, 1, 5000), int(\"slow\", 28, 1, 5000)], columns: [\"ultosc\"],\n plots: [line(\"ultosc\", COLORS.blue), hline(\"upper\", 70), hline(\"lower\", 30)],\n label: (p) => `${p.fast}, ${p.middle}, ${p.slow}`,\n build: (g, p) => {\n const [a, b, c] = [p.fast, p.middle, p.slow].sort((x: number, y: number) => x - y) as [number, number, number];\n const bp = g.calc((i) => (i === 0 ? Number.NaN : g.close.v[i]! - Math.min(g.low.v[i]!, g.close.v[i - 1]!)));\n const tr = g.calc((i) => (i === 0 ? Number.NaN : Math.max(g.high.v[i]!, g.close.v[i - 1]!) - Math.min(g.low.v[i]!, g.close.v[i - 1]!)));\n const [b1, b2, b3] = [g.sum(bp, a), g.sum(bp, b), g.sum(bp, c)];\n const [t1, t2, t3] = [g.sum(tr, a), g.sum(tr, b), g.sum(tr, c)];\n return [g.calc((i) => {\n const r1 = b1.v[i]! / t1.v[i]!, r2 = b2.v[i]! / t2.v[i]!, r3 = b3.v[i]! / t3.v[i]!;\n return (100 * (4 * r1 + 2 * r2 + r3)) / 7;\n })];\n },\n reference: \"TA-Lib ULTOSC (periods sorted ascending, weights 4:2:1)\",\n});\n\n// ---- Aroon ------------------------------------------------------------------\n\nexport const aroon = defineStudy({\n id: \"aroon\", name: \"Aroon\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [len(14)], columns: [\"up\", \"down\"],\n plots: [line(\"up\", COLORS.green, { title: \"Aroon Up\" }), line(\"down\", COLORS.red, { title: \"Aroon Down\" })],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const hb = g.highestBars(g.high, p.length + 1), lb = g.lowestBars(g.low, p.length + 1);\n return [g.map(hb, (k) => (100 * (p.length - k)) / p.length), g.map(lb, (k) => (100 * (p.length - k)) / p.length)];\n },\n reference: \"TA-Lib AROON (window of length + 1 bars)\",\n});\n\nexport const aroonosc = defineStudy({\n id: \"aroonosc\", name: \"Aroon Oscillator\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [len(14)], columns: [\"aroonosc\"], plots: [line(\"aroonosc\", COLORS.blue), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const hb = g.highestBars(g.high, p.length + 1), lb = g.lowestBars(g.low, p.length + 1);\n return [g.map2(hb, lb, (h, l) => (100 * (l - h)) / p.length)];\n },\n reference: \"TA-Lib AROONOSC = Aroon Up - Aroon Down\",\n});\n\n// ---- directional movement ---------------------------------------------------\n\n/** Wilder's running sum: seeded with the sum of the first p-1 values, then S - S/p + x (TA-Lib's DM/TR smoothing). */\nfunction wilderSum(g: Graph, x: Col, p: number): Node {\n const cnt = g.validRun(x);\n return g.node((s, a, b) => {\n const xv = x.v, c = cnt.v, v = s.v;\n for (let i = a; i < b; i++) {\n const k = c[i]!;\n if (k === 0) { v[i] = Number.NaN; continue; }\n const prev = i > 0 ? v[i - 1]! : Number.NaN;\n if (prev === prev) v[i] = prev - prev / p + xv[i]!;\n else if (k === p - 1) {\n let t = 0;\n for (let j = i - k + 1; j <= i; j++) t += xv[j]!;\n v[i] = t;\n } else v[i] = Number.NaN;\n }\n });\n}\n\nfunction dm(g: Graph, p: number) {\n if (p < 2) throw new RangeError(`directional movement needs length >= 2, got ${p}`);\n const { high, low } = g;\n const plus = g.calc((i) => {\n if (i === 0) return Number.NaN;\n const up = high.v[i]! - high.v[i - 1]!, dn = low.v[i - 1]! - low.v[i]!;\n return up > 0 && up > dn ? up : 0;\n });\n const minus = g.calc((i) => {\n if (i === 0) return Number.NaN;\n const up = high.v[i]! - high.v[i - 1]!, dn = low.v[i - 1]! - low.v[i]!;\n return dn > 0 && dn > up ? dn : 0;\n });\n const sp = wilderSum(g, plus, p), sm = wilderSum(g, minus, p), st = wilderSum(g, g.tr(), p);\n const gate = g.lag(st, 1);\n const di = (s: Node) => g.calc((i) => (gate.v[i]! === gate.v[i]! && st.v[i]! > 0 ? (100 * s.v[i]!) / st.v[i]! : Number.NaN));\n const pdi = di(sp), mdi = di(sm);\n const dx = g.map2(pdi, mdi, (a, b) => (a + b === 0 ? Number.NaN : (100 * Math.abs(a - b)) / (a + b)));\n return { sp, sm, pdi, mdi, dx };\n}\n\nconst diPlots = [line(\"adx\", COLORS.red, { title: \"ADX\" }), line(\"plusDi\", COLORS.blue, { title: \"+DI\" }), line(\"minusDi\", COLORS.orange, { title: \"-DI\" })];\n\nexport const adx = defineStudy({\n id: \"adx\", name: \"Average Directional Index\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [len(14, 2)], columns: [\"adx\", \"plusDi\", \"minusDi\"], plots: diPlots,\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const d = dm(g, p.length);\n return [g.rma(d.dx, p.length), d.pdi, d.mdi];\n },\n reference: \"TA-Lib ADX / PLUS_DI / MINUS_DI (Wilder smoothing seeded as TA-Lib does)\",\n});\n\nexport const adxr = defineStudy({\n id: \"adxr\", name: \"Average Directional Movement Index Rating\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [len(14, 2)], columns: [\"adxr\"], plots: [line(\"adxr\", COLORS.red)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const a = g.rma(dm(g, p.length).dx, p.length);\n return [g.map2(a, g.lag(a, p.length - 1), (x, y) => (x + y) / 2)];\n },\n reference: \"TA-Lib ADXR = (ADX + ADX[length - 1]) / 2\",\n});\n\nexport const dx = defineStudy({\n id: \"dx\", name: \"Directional Movement Index\", family: \"momentum\", needs: \"ohlc\", pane: \"new\",\n inputs: [len(14, 2)], columns: [\"dx\"], plots: [line(\"dx\", COLORS.purple)],\n label: (p) => `${p.length}`,\n build: (g, p) => [dm(g, p.length).dx],\n reference: \"TA-Lib DX\",\n});\n\nconst diStudy = (id: string, name: string, pick: (d: ReturnType<typeof dm>) => Node, color: string) =>\n defineStudy({\n id, name, family: \"momentum\", needs: \"ohlc\", pane: \"new\", inputs: [len(14, 2)], columns: [id.replace(\"-\", \"\")], plots: [line(id.replace(\"-\", \"\"), color)],\n label: (p) => `${p.length}`,\n build: (g, p) => [pick(dm(g, p.length))],\n reference: `TA-Lib ${id.replace(\"-\", \"_\").toUpperCase()}`,\n });\n\nexport const plusDi = diStudy(\"plus-di\", \"Plus Directional Indicator\", (d) => d.pdi, COLORS.blue);\nexport const minusDi = diStudy(\"minus-di\", \"Minus Directional Indicator\", (d) => d.mdi, COLORS.orange);\nexport const plusDm = diStudy(\"plus-dm\", \"Plus Directional Movement\", (d) => d.sp, COLORS.blue);\nexport const minusDm = diStudy(\"minus-dm\", \"Minus Directional Movement\", (d) => d.sm, COLORS.orange);\n\nvoid band;\nvoid float;\n","// Volume studies from TA-Lib's \"Volume Indicators\" group.\n\nimport type { Graph, Node } from \"../engine/graph.js\";\nimport { COLORS, defineStudy, hline, int, line } from \"../define.js\";\nimport { emaFirst } from \"./ma.js\";\n\n/** Accumulation/distribution line: running sum of money-flow multiplier x volume. */\nfunction adLine(g: Graph): Node {\n const self: Node = g.calc((i) => {\n const r = g.high.v[i]! - g.low.v[i]!;\n const mf = r === 0 ? 0 : (((g.close.v[i]! - g.low.v[i]!) - (g.high.v[i]! - g.close.v[i]!)) / r) * g.volume.v[i]!;\n return (i > 0 ? self.v[i - 1]! : 0) + mf;\n });\n return self;\n}\n\nexport const ad = defineStudy({\n id: \"ad\", name: \"Accumulation/Distribution\", family: \"volume\", needs: \"ohlcv\", pane: \"new\",\n inputs: [], columns: [\"ad\"], plots: [line(\"ad\", COLORS.blue)],\n build: (g) => [adLine(g)],\n reference: \"TA-Lib AD (a flat bar adds 0)\",\n});\n\nexport const adosc = defineStudy({\n id: \"adosc\", name: \"Chaikin Oscillator\", family: \"volume\", needs: \"ohlcv\", pane: \"new\",\n inputs: [int(\"fast\", 3, 1, 5000), int(\"slow\", 10, 2, 5000)], columns: [\"adosc\"],\n plots: [line(\"adosc\", COLORS.purple), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.fast}, ${p.slow}`,\n build: (g, p) => {\n if (p.fast >= p.slow) throw new RangeError(`adosc: fast (${p.fast}) must be below slow (${p.slow})`);\n const a = adLine(g);\n const f = emaFirst(g, a, 2 / (p.fast + 1)), s = emaFirst(g, a, 2 / (p.slow + 1));\n return [g.calc((i) => (i >= p.slow - 1 ? f.v[i]! - s.v[i]! : Number.NaN))];\n },\n reference: \"TA-Lib ADOSC: both EMAs are seeded with the first A/D value (TradingView seeds with an SMA; the difference vanishes within ~60 bars)\",\n});\n\nexport const obv = defineStudy({\n id: \"obv\", name: \"On Balance Volume\", family: \"volume\", needs: \"ohlcv\", pane: \"new\",\n inputs: [], columns: [\"obv\"], plots: [line(\"obv\", COLORS.teal)],\n build: (g) => {\n const self: Node = g.calc((i) => {\n if (i === 0) return g.volume.v[0]!;\n const c = g.close.v[i]!, pc = g.close.v[i - 1]!;\n return self.v[i - 1]! + (c > pc ? g.volume.v[i]! : c < pc ? -g.volume.v[i]! : 0);\n });\n return [self];\n },\n reference: \"TA-Lib OBV (first value is the first bar's volume)\",\n});\n","// Volatility studies from TA-Lib: true range and the Wilder average.\n\nimport { COLORS, defineStudy, int, line } from \"../define.js\";\n\nexport const trange = defineStudy({\n id: \"trange\", name: \"True Range\", family: \"volatility\", needs: \"ohlc\", pane: \"new\",\n inputs: [], columns: [\"trange\"], plots: [line(\"trange\", COLORS.orange)],\n build: (g) => [g.tr()],\n reference: \"TA-Lib TRANGE\",\n});\n\nexport const atr = defineStudy({\n id: \"atr\", name: \"Average True Range\", family: \"volatility\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"length\", 14, 1, 5000)], columns: [\"atr\"], plots: [line(\"atr\", COLORS.red)],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.atr(p.length)],\n reference: \"TA-Lib ATR (Wilder, seeded with the mean of the first `length` true ranges)\",\n});\n\nexport const natr = defineStudy({\n id: \"natr\", name: \"Normalized Average True Range\", family: \"volatility\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"length\", 14, 1, 5000)], columns: [\"natr\"], plots: [line(\"natr\", COLORS.red)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const a = g.atr(p.length);\n return [g.calc((i) => (100 * a.v[i]!) / g.close.v[i]!)];\n },\n reference: \"TA-Lib NATR = 100 * ATR / close\",\n});\n","// Price transforms (TA-Lib \"Price Transform\"): one price from the bar's four.\n\nimport type { Col, Graph, Node } from \"../engine/graph.js\";\nimport { COLORS, defineStudy, line } from \"../define.js\";\n\nconst price = (id: string, name: string, color: string, f: (g: Graph) => Node, ref: string) =>\n defineStudy({ id, name, family: \"price\", needs: \"ohlc\", pane: \"overlay\", inputs: [], columns: [id], plots: [line(id, color)], build: (g) => [f(g)], reference: ref });\n\nexport const avgprice = price(\"avgprice\", \"Average Price\", COLORS.blue, (g) => g.src(\"ohlc4\"), \"TA-Lib AVGPRICE = (O + H + L + C) / 4\");\nexport const medprice = price(\"medprice\", \"Median Price\", COLORS.orange, (g) => g.src(\"hl2\"), \"TA-Lib MEDPRICE = (H + L) / 2\");\nexport const typprice = price(\"typprice\", \"Typical Price\", COLORS.green, (g) => g.src(\"hlc3\"), \"TA-Lib TYPPRICE = (H + L + C) / 3\");\nexport const wclprice = price(\"wclprice\", \"Weighted Close Price\", COLORS.purple, (g) => g.src(\"hlcc4\"), \"TA-Lib WCLPRICE = (H + L + 2C) / 4\");\n\nexport type { Col };\n","// Statistic functions (TA-Lib \"Statistic Functions\"): regression, deviation,\n// variance, correlation and beta over a rolling window.\n\nimport type { Col, Graph, Node } from \"../engine/graph.js\";\nimport { COLORS, defineStudy, float, int, line, select, source } from \"../define.js\";\nimport { SOURCE_NAMES } from \"../engine/graph.js\";\n\nconst len = (def: number, min = 2) => int(\"length\", def, min, 5000);\nconst RAD = 180 / Math.PI;\n\nconst reg = (id: string, name: string, color: string, pick: (r: ReturnType<Graph[\"linreg\"]>, g: Graph) => Node, ref: string, pane: \"overlay\" | \"new\") =>\n defineStudy({\n id, name, family: \"statistic\", needs: \"value\", pane, inputs: [len(14), source()], columns: [id], plots: [line(id, color)],\n label: (p) => `${p.length}`,\n build: (g, p) => [pick(g.linreg(g.src(p.source), p.length), g)],\n reference: ref,\n });\n\nexport const linearreg = reg(\"linearreg\", \"Linear Regression\", COLORS.blue, (r) => r.value, \"TA-Lib LINEARREG\", \"overlay\");\nexport const linearregSlope = reg(\"linearreg-slope\", \"Linear Regression Slope\", COLORS.orange, (r) => r.slope, \"TA-Lib LINEARREG_SLOPE\", \"new\");\nexport const linearregIntercept = reg(\"linearreg-intercept\", \"Linear Regression Intercept\", COLORS.teal, (r) => r.intercept, \"TA-Lib LINEARREG_INTERCEPT\", \"overlay\");\nexport const linearregAngle = reg(\"linearreg-angle\", \"Linear Regression Angle\", COLORS.purple, (r, g) => g.map(r.slope, (m) => Math.atan(m) * RAD), \"TA-Lib LINEARREG_ANGLE (degrees)\", \"new\");\nexport const tsf = reg(\"tsf\", \"Time Series Forecast\", COLORS.pink, (r, g) => g.map2(r.value, r.slope, (v, m) => v + m), \"TA-Lib TSF = regression value one bar ahead\", \"overlay\");\n\nexport const stddev = defineStudy({\n id: \"stddev\", name: \"Standard Deviation\", family: \"statistic\", needs: \"value\", pane: \"new\",\n inputs: [len(5, 1), float(\"nbdev\", 1, 0, 100, 0.1), source()], columns: [\"stddev\"], plots: [line(\"stddev\", COLORS.blue)],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.map(g.stdev(g.src(p.source), p.length), (v) => v * p.nbdev)],\n reference: \"TA-Lib STDDEV (population)\",\n});\n\nexport const variance = defineStudy({\n id: \"var\", name: \"Variance\", family: \"statistic\", needs: \"value\", pane: \"new\",\n inputs: [len(5, 1), source()], columns: [\"var\"], plots: [line(\"var\", COLORS.blue)],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.variance(g.src(p.source), p.length)],\n reference: \"TA-Lib VAR (population)\",\n});\n\nconst SOURCES2 = [...SOURCE_NAMES, \"volume\"] as const;\nfunction pick(g: Graph, name: string): Col {\n return name === \"volume\" ? g.volume : g.src(name as (typeof SOURCE_NAMES)[number]);\n}\n\nexport const correl = defineStudy({\n id: \"correl\", name: \"Correlation Coefficient\", family: \"statistic\", needs: \"ohlcv\", pane: \"new\",\n inputs: [len(30), source(\"close\"), select(\"source2\", \"volume\", SOURCES2)], columns: [\"correl\"], plots: [line(\"correl\", COLORS.teal)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const x = g.src(p.source), y = pick(g, p.source2), n = p.length;\n return [g.calc((i) => {\n if (i < n - 1) return Number.NaN;\n let sx = 0, sy = 0, sxx = 0, syy = 0, sxy = 0;\n for (let j = i - n + 1; j <= i; j++) {\n const a = x.v[j]!, b = y.v[j]!;\n sx += a; sy += b; sxx += a * a; syy += b * b; sxy += a * b;\n }\n const d = (n * sxx - sx * sx) * (n * syy - sy * sy);\n return d > 0 ? (n * sxy - sx * sy) / Math.sqrt(d) : 0;\n })];\n },\n reference: \"TA-Lib CORREL (Pearson; a constant window gives 0 as TA-Lib does)\",\n});\n\nexport const beta = defineStudy({\n id: \"beta\", name: \"Beta\", family: \"statistic\", needs: \"ohlcv\", pane: \"new\",\n inputs: [len(5, 1), source(\"close\"), select(\"source2\", \"volume\", SOURCES2)], columns: [\"beta\"], plots: [line(\"beta\", COLORS.orange)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const x = g.src(p.source), y = pick(g, p.source2), n = p.length;\n const rx = g.map2(x, g.lag(x, 1), (a, b) => (b === 0 ? 0 : (a - b) / b));\n const ry = g.map2(y, g.lag(y, 1), (a, b) => (b === 0 ? 0 : (a - b) / b));\n return [g.calc((i) => {\n if (i < n) return Number.NaN;\n let sx = 0, sy = 0, sxx = 0, sxy = 0;\n for (let j = i - n + 1; j <= i; j++) {\n const a = rx.v[j]!, b = ry.v[j]!;\n sx += a; sy += b; sxx += a * a; sxy += a * b;\n }\n const d = n * sxx - sx * sx;\n return d === 0 ? 0 : (n * sxy - sx * sy) / d;\n })];\n },\n reference: \"TA-Lib BETA: slope of source2's one-bar returns on source's over `length` returns\",\n});\n","// Math transforms and operators (TA-Lib \"Math Transform\" / \"Math Operators\").\n// Domain errors (acos of 2, ln of a negative) are absent bars, not zeros.\n\nimport type { Col, Graph, Node } from \"../engine/graph.js\";\nimport { COLORS, defineStudy, int, line, select, source } from \"../define.js\";\nimport { SOURCE_NAMES } from \"../engine/graph.js\";\n\nconst unary = (id: string, name: string, f: (x: number) => number, ref = `TA-Lib ${id.toUpperCase()}`) =>\n defineStudy({\n id, name, family: \"math\", needs: \"value\", pane: \"new\", inputs: [source()], columns: [id], plots: [line(id, COLORS.blue)],\n build: (g, p) => [g.map(g.src(p.source), (x) => { const r = f(x); return Number.isFinite(r) ? r : Number.NaN; })],\n reference: ref,\n });\n\nexport const acos = unary(\"acos\", \"Arc Cosine\", Math.acos);\nexport const asin = unary(\"asin\", \"Arc Sine\", Math.asin);\nexport const atan = unary(\"atan\", \"Arc Tangent\", Math.atan);\nexport const ceil = unary(\"ceil\", \"Ceiling\", Math.ceil);\nexport const cos = unary(\"cos\", \"Cosine\", Math.cos);\nexport const cosh = unary(\"cosh\", \"Hyperbolic Cosine\", Math.cosh);\nexport const exp = unary(\"exp\", \"Exponential\", Math.exp);\nexport const floor = unary(\"floor\", \"Floor\", Math.floor);\nexport const ln = unary(\"ln\", \"Natural Log\", Math.log);\nexport const log10 = unary(\"log10\", \"Log10\", Math.log10);\nexport const sin = unary(\"sin\", \"Sine\", Math.sin);\nexport const sinh = unary(\"sinh\", \"Hyperbolic Sine\", Math.sinh);\nexport const sqrt = unary(\"sqrt\", \"Square Root\", Math.sqrt);\nexport const tan = unary(\"tan\", \"Tangent\", Math.tan);\nexport const tanh = unary(\"tanh\", \"Hyperbolic Tangent\", Math.tanh);\n\nconst binary = (id: string, name: string, f: (a: number, b: number) => number) =>\n defineStudy({\n id, name, family: \"math\", needs: \"ohlc\", pane: \"new\",\n inputs: [source(\"high\"), source(\"low\", \"source2\")], columns: [id], plots: [line(id, COLORS.orange)],\n build: (g, p) => [g.map2(g.src(p.source), g.src(p.source2), f)],\n reference: `TA-Lib ${id.toUpperCase()}`,\n });\n\nexport const add = binary(\"add\", \"Vector Arithmetic Add\", (a, b) => a + b);\nexport const sub = binary(\"sub\", \"Vector Arithmetic Subtraction\", (a, b) => a - b);\nexport const mult = binary(\"mult\", \"Vector Arithmetic Mult\", (a, b) => a * b);\nexport const div = binary(\"div\", \"Vector Arithmetic Div\", (a, b) => (b === 0 ? Number.NaN : a / b));\n\nconst win = (def = 30) => int(\"length\", def, 1, 5000);\n\nexport const max = defineStudy({\n id: \"max\", name: \"Highest value over a period\", family: \"math\", needs: \"value\", pane: \"overlay\",\n inputs: [win(), source()], columns: [\"max\"], plots: [line(\"max\", COLORS.green)],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.highest(g.src(p.source), p.length)],\n reference: \"TA-Lib MAX\",\n});\nexport const min = defineStudy({\n id: \"min\", name: \"Lowest value over a period\", family: \"math\", needs: \"value\", pane: \"overlay\",\n inputs: [win(), source()], columns: [\"min\"], plots: [line(\"min\", COLORS.red)],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.lowest(g.src(p.source), p.length)],\n reference: \"TA-Lib MIN\",\n});\nexport const sum = defineStudy({\n id: \"sum\", name: \"Summation\", family: \"math\", needs: \"value\", pane: \"new\",\n inputs: [win(), source()], columns: [\"sum\"], plots: [line(\"sum\", COLORS.blue)],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.sum(g.src(p.source), p.length)],\n reference: \"TA-Lib SUM\",\n});\n\n/** Absolute bar index of the extreme (TA-Lib reports the index into the input). Its ties: the oldest maximum, the newest minimum. */\nconst idx = (g: Graph, bars: Node): Node => g.calc((i) => i - bars.v[i]!);\n\nexport const maxindex = defineStudy({\n id: \"maxindex\", name: \"Index of highest value over a period\", family: \"math\", needs: \"value\", pane: \"new\",\n inputs: [win(), source()], columns: [\"maxindex\"], plots: [line(\"maxindex\", COLORS.green)],\n label: (p) => `${p.length}`,\n build: (g, p) => [idx(g, g.highestBars(g.src(p.source), p.length, true))],\n reference: \"TA-Lib MAXINDEX\",\n});\nexport const minindex = defineStudy({\n id: \"minindex\", name: \"Index of lowest value over a period\", family: \"math\", needs: \"value\", pane: \"new\",\n inputs: [win(), source()], columns: [\"minindex\"], plots: [line(\"minindex\", COLORS.red)],\n label: (p) => `${p.length}`,\n build: (g, p) => [idx(g, g.lowestBars(g.src(p.source), p.length))],\n reference: \"TA-Lib MININDEX\",\n});\nexport const minmax = defineStudy({\n id: \"minmax\", name: \"Lowest and highest values over a period\", family: \"math\", needs: \"value\", pane: \"overlay\",\n inputs: [win(), source()], columns: [\"min\", \"max\"],\n plots: [line(\"min\", COLORS.red), line(\"max\", COLORS.green)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const x = g.src(p.source);\n return [g.lowest(x, p.length), g.highest(x, p.length)];\n },\n reference: \"TA-Lib MINMAX\",\n});\nexport const minmaxindex = defineStudy({\n id: \"minmaxindex\", name: \"Indexes of lowest and highest values over a period\", family: \"math\", needs: \"value\", pane: \"new\",\n inputs: [win(), source()], columns: [\"minidx\", \"maxidx\"],\n plots: [line(\"minidx\", COLORS.red), line(\"maxidx\", COLORS.green)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const x = g.src(p.source);\n return [idx(g, g.lowestBars(x, p.length)), idx(g, g.highestBars(x, p.length, true))];\n },\n reference: \"TA-Lib MINMAXINDEX\",\n});\n\nvoid select;\nexport type { Col };\nvoid SOURCE_NAMES;\n","// Cycle studies: TA-Lib's Hilbert-transform family (Ehlers) and MAMA/FAMA.\n//\n// TA-Lib keeps the Hilbert filters in odd/even circular buffers; here every\n// intermediate series (smoothed price, detrender, Q1, jI, jQ, I2, Q2, Re, Im,\n// period, smoothed period, ...) is a column indexed by bar. A same-parity\n// Hilbert step is the 4-tap filter a*x[i] + b*x[i-2] - b*x[i-4] - a*x[i-6]\n// scaled by 0.075*period[i-1] + 0.54, and \"I1\" is the detrender three bars back.\n//\n// TA-Lib's recursive state starts at zero at its own first processed bar\n// S = 3 + warm (warm = 9 for HT_DCPERIOD/PHASOR/MAMA, 34 for the studies that\n// also run the dominant-cycle phase). Bars before S read as 0 inside the\n// filters (that is TA-Lib's zeroed state); the outputs are absent before TA-Lib's\n// first output (index 32 or 63).\n\nimport { COLORS, defineStudy, float, hist, line, source } from \"../define.js\";\nimport type { Col, Graph, Node } from \"../engine/graph.js\";\n\nconst A = 0.0962;\nconst B = 0.5769;\nconst ATAN1 = Math.atan(1);\nconst RAD2DEG = 45 / ATAN1;\nconst DEG2RAD = 1 / RAD2DEG;\nconst TWO_PI = ATAN1 * 8;\n\ninterface Core {\n /** First bar TA-Lib processes. */\n S: number;\n sm: Col;\n det: Col;\n q1: Col;\n /** Smoothed dominant cycle period. */\n sper: Node;\n}\n\n/** Same-parity Hilbert step of `v` (value `lag` bars old is the newest tap). */\nfunction hil(v: Float64Array, i: number, lag: number, adj: number): number {\n return adj * (A * v[i - lag]! + B * v[i - lag - 2]! - B * v[i - lag - 4]! - A * v[i - lag - 6]!);\n}\n\nfunction hilbertCore(g: Graph, x: Col, warm: number): Core {\n const S = 3 + warm;\n const sm = g.col(), det = g.col(), q1 = g.col(), ji = g.col(), jq = g.col();\n const q2 = g.col(), i2 = g.col(), re = g.col(), im = g.col(), per = g.col();\n const sper = g.node((self, from, to) => {\n const xv = x.v, smv = sm.v, dv = det.v, qv = q1.v, jiv = ji.v, jqv = jq.v;\n const q2v = q2.v, i2v = i2.v, rev = re.v, imv = im.v, pv = per.v, sv = self.v;\n for (let i = from; i < to; i++) {\n if (i < S) {\n smv[i] = dv[i] = qv[i] = jiv[i] = jqv[i] = q2v[i] = i2v[i] = rev[i] = imv[i] = pv[i] = sv[i] = 0;\n continue;\n }\n const prevPeriod = pv[i - 1]!;\n const adj = 0.075 * prevPeriod + 0.54;\n smv[i] = (4 * xv[i]! + 3 * xv[i - 1]! + 2 * xv[i - 2]! + xv[i - 3]!) / 10;\n dv[i] = hil(smv, i, 0, adj);\n qv[i] = hil(dv, i, 0, adj);\n jiv[i] = hil(dv, i, 3, adj);\n jqv[i] = hil(qv, i, 0, adj);\n const pq2 = q2v[i - 1]!, pi2 = i2v[i - 1]!;\n const nq2 = 0.2 * (qv[i]! + jiv[i]!) + 0.8 * pq2;\n const ni2 = 0.2 * (dv[i - 3]! - jqv[i]!) + 0.8 * pi2;\n q2v[i] = nq2;\n i2v[i] = ni2;\n const nre = 0.8 * rev[i - 1]! + 0.2 * (ni2 * pi2 + nq2 * pq2);\n const nim = 0.8 * imv[i - 1]! + 0.2 * (ni2 * pq2 - nq2 * pi2);\n rev[i] = nre;\n imv[i] = nim;\n let p = prevPeriod;\n if (nim !== 0 && nre !== 0) p = 360 / (Math.atan(nim / nre) * RAD2DEG);\n if (p > 1.5 * prevPeriod) p = 1.5 * prevPeriod;\n if (p < 0.67 * prevPeriod) p = 0.67 * prevPeriod;\n if (p < 6) p = 6;\n else if (p > 50) p = 50;\n p = 0.2 * p + 0.8 * prevPeriod;\n pv[i] = p;\n sv[i] = 0.33 * p + 0.67 * sv[i - 1]!;\n }\n });\n return { S, sm, det, q1, sper };\n}\n\n/** `v` from bar `first` on, absent before (TA-Lib's lookback). */\nfunction from(g: Graph, v: Col, first: number): Node {\n return g.calc((i) => (i >= first ? v.v[i]! : Number.NaN));\n}\n\n/** Dominant cycle phase in degrees (TA-Lib HT_DCPHASE), carried bar to bar. */\nfunction dcPhase(g: Graph, c: Core): Node {\n const { S, sm, sper } = c;\n return g.node((self, a, b) => {\n const smv = sm.v, sp = sper.v, v = self.v;\n for (let i = a; i < b; i++) {\n if (i < S) { v[i] = 0; continue; }\n const dc = Math.floor(sp[i]! + 0.5);\n let real = 0, imag = 0;\n for (let k = 0; k < dc; k++) {\n const ang = (k * TWO_PI) / dc;\n const s = i - k >= 0 ? smv[i - k]! : 0;\n real += Math.sin(ang) * s;\n imag += Math.cos(ang) * s;\n }\n let ph = v[i - 1]!;\n if (Math.abs(imag) > 0) ph = Math.atan(real / imag) * RAD2DEG;\n else if (real < 0) ph -= 90;\n else if (real > 0) ph += 90;\n ph += 90;\n ph += 360 / sp[i]!;\n if (imag < 0) ph += 180;\n if (ph > 315) ph -= 360;\n v[i] = ph;\n }\n });\n}\n\n/** Instantaneous trendline and its running 4-3-2-1 smoothing of the cycle-period average. */\nfunction trendline(g: Graph, x: Col, c: Core): Node {\n const { S, sper } = c;\n const itr = g.col();\n return g.node((self, a, b) => {\n const xv = x.v, sp = sper.v, it = itr.v, v = self.v;\n for (let i = a; i < b; i++) {\n if (i < S) { it[i] = 0; v[i] = 0; continue; }\n const dc = Math.floor(sp[i]! + 0.5);\n let t = 0;\n for (let j = 0; j < dc && i - j >= 0; j++) t += xv[i - j]!;\n if (dc > 0) t /= dc;\n it[i] = t;\n v[i] = (4 * t + 3 * it[i - 1]! + 2 * it[i - 2]! + it[i - 3]!) / 10;\n }\n });\n}\n\nconst FIRST_SHORT = 32;\nconst FIRST_LONG = 63;\n\nexport const htDcPeriod = defineStudy({\n id: \"ht-dcperiod\", name: \"Hilbert Transform - Dominant Cycle Period\", family: \"cycle\", needs: \"value\", pane: \"new\",\n inputs: [source()], columns: [\"period\"], plots: [line(\"period\", COLORS.blue)],\n build: (g, p) => [from(g, hilbertCore(g, g.src(p.source), 9).sper, FIRST_SHORT)],\n reference: \"TA-Lib HT_DCPERIOD\",\n});\n\nexport const htDcPhase = defineStudy({\n id: \"ht-dcphase\", name: \"Hilbert Transform - Dominant Cycle Phase\", family: \"cycle\", needs: \"value\", pane: \"new\",\n inputs: [source()], columns: [\"phase\"], plots: [line(\"phase\", COLORS.orange)],\n build: (g, p) => [from(g, dcPhase(g, hilbertCore(g, g.src(p.source), 34)), FIRST_LONG)],\n reference: \"TA-Lib HT_DCPHASE\",\n});\n\nexport const htPhasor = defineStudy({\n id: \"ht-phasor\", name: \"Hilbert Transform - Phasor Components\", family: \"cycle\", needs: \"value\", pane: \"new\",\n inputs: [source()], columns: [\"inphase\", \"quadrature\"],\n plots: [line(\"inphase\", COLORS.blue), line(\"quadrature\", COLORS.orange)],\n build: (g, p) => {\n const c = hilbertCore(g, g.src(p.source), 9);\n const inphase = g.calc((i) => (i >= FIRST_SHORT ? c.det.v[i - 3]! : Number.NaN));\n return [inphase, from(g, c.q1, FIRST_SHORT)];\n },\n reference: \"TA-Lib HT_PHASOR\",\n});\n\nexport const htSine = defineStudy({\n id: \"ht-sine\", name: \"Hilbert Transform - SineWave\", family: \"cycle\", needs: \"value\", pane: \"new\",\n inputs: [source()], columns: [\"sine\", \"leadsine\"],\n plots: [line(\"sine\", COLORS.blue), line(\"leadsine\", COLORS.orange)],\n build: (g, p) => {\n const ph = dcPhase(g, hilbertCore(g, g.src(p.source), 34));\n return [\n g.calc((i) => (i >= FIRST_LONG ? Math.sin(ph.v[i]! * DEG2RAD) : Number.NaN)),\n g.calc((i) => (i >= FIRST_LONG ? Math.sin((ph.v[i]! + 45) * DEG2RAD) : Number.NaN)),\n ];\n },\n reference: \"TA-Lib HT_SINE\",\n});\n\nexport const htTrendline = defineStudy({\n id: \"ht-trendline\", name: \"Hilbert Transform - Instantaneous Trendline\", family: \"cycle\", needs: \"value\", pane: \"overlay\",\n inputs: [source()], columns: [\"trendline\"], plots: [line(\"trendline\", COLORS.blue)],\n build: (g, p) => {\n const x = g.src(p.source);\n return [from(g, trendline(g, x, hilbertCore(g, x, 34)), FIRST_LONG)];\n },\n reference: \"TA-Lib HT_TRENDLINE\",\n});\n\nexport const htTrendMode = defineStudy({\n id: \"ht-trendmode\", name: \"Hilbert Transform - Trend vs Cycle Mode\", family: \"cycle\", needs: \"value\", pane: \"new\",\n inputs: [source()], columns: [\"trendmode\"], plots: [hist(\"trendmode\", COLORS.green)],\n build: (g, p) => {\n const x = g.src(p.source);\n const c = hilbertCore(g, x, 34);\n const ph = dcPhase(g, c);\n const tl = trendline(g, x, c);\n const sine = g.col(), lead = g.col(), days = g.col();\n const trend = g.node((self, a, b) => {\n const smv = c.sm.v, sp = c.sper.v, pv = ph.v, tv = tl.v, sn = sine.v, ld = lead.v, dy = days.v, v = self.v;\n for (let i = a; i < b; i++) {\n if (i < c.S) { sn[i] = ld[i] = dy[i] = v[i] = 0; continue; }\n const s = Math.sin(pv[i]! * DEG2RAD), l = Math.sin((pv[i]! + 45) * DEG2RAD);\n sn[i] = s;\n ld[i] = l;\n const ps = sn[i - 1]!, pl = ld[i - 1]!;\n let t = 1, d = dy[i - 1]!;\n if ((s > l && ps <= pl) || (s < l && ps >= pl)) { d = 0; t = 0; }\n d += 1;\n dy[i] = d;\n if (d < 0.5 * sp[i]!) t = 0;\n const dphi = pv[i]! - pv[i - 1]!;\n if (sp[i] !== 0 && dphi > (0.67 * 360) / sp[i]! && dphi < (1.5 * 360) / sp[i]!) t = 0;\n const trl = tv[i]!;\n if (trl !== 0 && Math.abs((smv[i]! - trl) / trl) >= 0.015) t = 1;\n v[i] = t;\n }\n });\n // TA-Lib returns the integer 0 (not absent) during warm-up; the fixtures compare that.\n return [g.calc((i) => (i >= FIRST_LONG ? trend.v[i]! : 0))];\n },\n reference: \"TA-Lib HT_TRENDMODE (0 = cycle mode, 1 = trend mode; 0 during warm-up as in TA-Lib)\",\n});\n\nexport const mama = defineStudy({\n id: \"mama\", name: \"MESA Adaptive Moving Average\", family: \"overlap\", needs: \"value\", pane: \"overlay\",\n inputs: [float(\"fastlimit\", 0.5, 0.01, 0.99, 0.01), float(\"slowlimit\", 0.05, 0.01, 0.99, 0.01), source()],\n columns: [\"mama\", \"fama\"],\n plots: [line(\"mama\", COLORS.blue), line(\"fama\", COLORS.orange)],\n label: (p) => `${p.fastlimit}, ${p.slowlimit}`,\n build: (g, p) => {\n const fast: number = p.fastlimit, slow: number = p.slowlimit;\n const x = g.src(p.source);\n const c = hilbertCore(g, x, 9);\n const fama = g.col(), phase = g.col();\n const mm = g.node((self, a, b) => {\n const xv = x.v, dv = c.det.v, qv = c.q1.v, fv = fama.v, pv = phase.v, v = self.v;\n for (let i = a; i < b; i++) {\n if (i < c.S) { v[i] = fv[i] = pv[i] = 0; continue; }\n const i1 = dv[i - 3]!;\n const ph = i1 !== 0 ? Math.atan(qv[i]! / i1) * RAD2DEG : 0;\n pv[i] = ph;\n let d = pv[i - 1]! - ph;\n if (d < 1) d = 1;\n let alpha = fast;\n if (d > 1) {\n alpha = fast / d;\n if (alpha < slow) alpha = slow;\n }\n const m = (1 - alpha) * v[i - 1]! + alpha * xv[i]!;\n v[i] = m;\n const h = alpha * 0.5;\n fv[i] = (1 - h) * fv[i - 1]! + h * m;\n }\n });\n return [from(g, mm, FIRST_SHORT), from(g, fama, FIRST_SHORT)];\n },\n reference: \"TA-Lib MAMA\",\n});\n","// Parabolic SAR (TA-Lib SAR and SAREXT). A state machine whose trend flag,\n// extreme point, acceleration factors and next SAR live in columns; the first\n// output is bar 1 (TA-Lib's lookback).\n\nimport { COLORS, defineStudy, float, markers } from \"../define.js\";\nimport type { Col, Graph, Node } from \"../engine/graph.js\";\n\n/** Initial trend as TA-Lib decides it: short when the first bar's -DM(1) is positive. */\nfunction startsShort(g: Graph): boolean {\n const h = g.high.v, l = g.low.v;\n const diffP = h[1]! - h[0]!, diffM = l[0]! - l[1]!;\n return diffM > 0 && diffP < diffM;\n}\n\ninterface SarOpts {\n /** startvalue: 0 = decide from the first two bars, > 0 long from that SAR, < 0 short from |value|. */\n startValue: number;\n offsetOnReverse: number;\n initLong: number; accLong: number; maxLong: number;\n initShort: number; accShort: number; maxShort: number;\n /** Signed output (negative when short) as SAREXT. */\n signed: boolean;\n}\n\nfunction parabolic(g: Graph, o: SarOpts): Node {\n const isLong = g.col(), sarS = g.col(), ep = g.col(), afL = g.col(), afS = g.col();\n return g.node((self, a, b) => {\n const hi = g.high.v, lo = g.low.v, lg = isLong.v, ss = sarS.v, ee = ep.v, fl = afL.v, fs = afS.v, v = self.v;\n for (let i = a; i < b; i++) {\n if (i < 1) { v[i] = Number.NaN; continue; }\n let long: boolean, sar: number, e: number, al: number, as_: number, prevLow: number, prevHigh: number;\n if (i === 1) {\n if (o.startValue === 0) long = !startsShort(g);\n else long = o.startValue > 0;\n if (o.startValue === 0) {\n if (long) { e = hi[1]!; sar = lo[0]!; } else { e = lo[1]!; sar = hi[0]!; }\n } else if (o.startValue > 0) { e = hi[1]!; sar = o.startValue; } else { e = lo[1]!; sar = Math.abs(o.startValue); }\n al = o.initLong;\n as_ = o.initShort;\n // TA-Lib seeds \"previous\" with the first processed bar itself\n prevLow = lo[1]!;\n prevHigh = hi[1]!;\n } else {\n long = lg[i - 1]! === 1; sar = ss[i - 1]!; e = ee[i - 1]!; al = fl[i - 1]!; as_ = fs[i - 1]!;\n prevLow = lo[i - 1]!;\n prevHigh = hi[i - 1]!;\n }\n const newLow = lo[i]!, newHigh = hi[i]!;\n let out: number;\n if (long) {\n if (newLow <= sar) {\n long = false;\n sar = e;\n if (sar < prevHigh) sar = prevHigh;\n if (sar < newHigh) sar = newHigh;\n if (o.offsetOnReverse !== 0) sar += sar * o.offsetOnReverse;\n out = o.signed ? -sar : sar;\n as_ = o.initShort;\n e = newLow;\n sar = sar + as_ * (e - sar);\n if (sar < prevHigh) sar = prevHigh;\n if (sar < newHigh) sar = newHigh;\n } else {\n out = sar;\n if (newHigh > e) {\n e = newHigh;\n al += o.accLong;\n if (al > o.maxLong) al = o.maxLong;\n }\n sar = sar + al * (e - sar);\n if (sar > prevLow) sar = prevLow;\n if (sar > newLow) sar = newLow;\n }\n } else if (newHigh >= sar) {\n long = true;\n sar = e;\n if (sar > prevLow) sar = prevLow;\n if (sar > newLow) sar = newLow;\n if (o.offsetOnReverse !== 0) sar -= sar * o.offsetOnReverse;\n out = sar;\n al = o.initLong;\n e = newHigh;\n sar = sar + al * (e - sar);\n if (sar > prevLow) sar = prevLow;\n if (sar > newLow) sar = newLow;\n } else {\n out = o.signed ? -sar : sar;\n if (newLow < e) {\n e = newLow;\n as_ += o.accShort;\n if (as_ > o.maxShort) as_ = o.maxShort;\n }\n sar = sar + as_ * (e - sar);\n if (sar < prevHigh) sar = prevHigh;\n if (sar < newHigh) sar = newHigh;\n }\n lg[i] = long ? 1 : 0; ss[i] = sar; ee[i] = e; fl[i] = al; fs[i] = as_;\n v[i] = out;\n }\n });\n}\n\nconst acc = (key: string, def: number) => float(key, def, 0, 100, 0.01);\n\nexport const sar = defineStudy({\n id: \"sar\", name: \"Parabolic SAR\", family: \"overlap\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [acc(\"start\", 0.02), acc(\"increment\", 0.02), acc(\"maximum\", 0.2)],\n columns: [\"sar\"],\n plots: [markers(\"sar\", \"circle\", \"value\", COLORS.blue)],\n label: (p) => `${p.start}, ${p.increment}, ${p.maximum}`,\n build: (g, p) => {\n const max: number = p.maximum;\n const start = Math.min(p.start as number, max);\n return [parabolic(g, { startValue: 0, offsetOnReverse: 0, initLong: start, accLong: p.increment, maxLong: max, initShort: start, accShort: p.increment, maxShort: max, signed: false })];\n },\n reference: \"TA-Lib SAR (start = increment = acceleration)\",\n});\n\nexport const sarext = defineStudy({\n id: \"sarext\", name: \"Parabolic SAR - Extended\", family: \"overlap\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [\n float(\"startvalue\", 0, -1e9, 1e9, 0.1),\n acc(\"offsetonreverse\", 0),\n acc(\"accelerationinitlong\", 0.02), acc(\"accelerationlong\", 0.02), acc(\"accelerationmaxlong\", 0.2),\n acc(\"accelerationinitshort\", 0.02), acc(\"accelerationshort\", 0.02), acc(\"accelerationmaxshort\", 0.2),\n ],\n columns: [\"sarext\", \"level\"],\n plots: [markers(\"level\", \"circle\", \"value\", COLORS.blue, { title: \"SAR\" })],\n label: () => \"sarext is negative when short\",\n build: (g, p) => {\n const maxL: number = p.accelerationmaxlong, maxS: number = p.accelerationmaxshort;\n const sx: Node = parabolic(g, {\n startValue: p.startvalue, offsetOnReverse: p.offsetonreverse,\n initLong: Math.min(p.accelerationinitlong as number, maxL), accLong: Math.min(p.accelerationlong as number, maxL), maxLong: maxL,\n initShort: Math.min(p.accelerationinitshort as number, maxS), accShort: Math.min(p.accelerationshort as number, maxS), maxShort: maxS,\n signed: true,\n });\n // the unsigned price level, for drawing on the price pane\n const level: Col = g.map(sx, Math.abs);\n return [sx, level];\n },\n reference: \"TA-Lib SAREXT (signed: negative when short)\",\n});\n","// Candlestick patterns: the 61 TA-Lib CDL* functions, reproduced bar for bar.\n//\n// TA-Lib judges a candle against \"settings\": a range type (real body, high-low or both shadows), an\n// averaging period and a factor. A candle at offset k from the bar being judged is compared with\n// factor * (sum of that range over the `period` bars before it) / period. The sum is kept the way TA-Lib\n// keeps it (seeded once at the pattern's first bar, then moved a bar at a time) so float rounding agrees,\n// which matters on the exact-tie comparisons prices rounded to cents produce. A setting with period 0\n// (ShadowLong, ShadowVeryLong) compares with the candle's own range instead.\n//\n// Output: +100 bullish, -100 bearish (+-80 where TA-Lib weakens a signal), 0 no pattern, NaN inside the lookback.\n\nimport { COLORS, defineStudy, float, markers } from \"../define.js\";\nimport type { Graph, Node } from \"../engine/graph.js\";\nimport type { InputDef, Params, StudyDef } from \"../types.js\";\n\nconst RB = 0, HL = 1, SH = 2;\ninterface Setting { readonly rt: number; readonly p: number; readonly f: number }\nconst BL: Setting = { rt: RB, p: 10, f: 1 }; // body long\nconst BS: Setting = { rt: RB, p: 10, f: 1 }; // body short\nconst BD: Setting = { rt: HL, p: 10, f: 0.1 }; // body doji\nconst SL: Setting = { rt: RB, p: 0, f: 1 }; // shadow long\nconst SVL: Setting = { rt: RB, p: 0, f: 2 }; // shadow very long\nconst SS: Setting = { rt: SH, p: 10, f: 1 }; // shadow short\nconst SVS: Setting = { rt: HL, p: 10, f: 0.1 }; // shadow very short\nconst NEAR: Setting = { rt: HL, p: 5, f: 0.2 };\nconst FAR: Setting = { rt: HL, p: 5, f: 0.6 };\nconst EQ: Setting = { rt: HL, p: 5, f: 0.05 };\n\n/** A running total to read at each bar: the setting's range summed over the window that ends k+1 bars back, seeded at bar `from`. */\ntype Slot = readonly [Setting, number];\n\n// The bars being evaluated. Bound at the start of every node run (the graph replaces its buffers when it grows).\nlet O: Float64Array, H: Float64Array, Lw: Float64Array, C: Float64Array;\nfunction bind(g: Graph): void {\n O = g.open.v; H = g.high.v; Lw = g.low.v; C = g.close.v;\n}\nconst op = (i: number): number => O[i]!;\nconst hi = (i: number): number => H[i]!;\nconst lo = (i: number): number => Lw[i]!;\nconst cl = (i: number): number => C[i]!;\nconst col = (i: number): number => (C[i]! >= O[i]! ? 1 : -1);\nconst rb = (i: number): number => Math.abs(C[i]! - O[i]!);\nconst us = (i: number): number => H[i]! - (C[i]! >= O[i]! ? C[i]! : O[i]!);\nconst ls = (i: number): number => (C[i]! >= O[i]! ? O[i]! : C[i]!) - Lw[i]!;\n\nfunction range(s: Setting, i: number): number {\n return s.rt === RB ? rb(i) : s.rt === HL ? H[i]! - Lw[i]! : us(i) + ls(i);\n}\n\n/** TA_CANDLEAVERAGE: the setting's threshold for candle `i`, given the running total of its window. */\nfunction avg(s: Setting, total: number, i: number): number {\n return (s.f * (s.p !== 0 ? total / s.p : range(s, i))) / (s.rt === SH ? 2 : 1);\n}\n\n/** a * b + c rounded once (TA-Lib calls C fma in a few penetration tests; JS has none). */\nfunction fma(a: number, b: number, c: number): number {\n const p = a * b;\n const ca = 134217729 * a, ah = ca - (ca - a), al = a - ah;\n const cb = 134217729 * b, bh = cb - (cb - b), bl = b - bh;\n const e = ah * bh - p + ah * bl + al * bh + al * bl;\n const s = p + c, v = s - p;\n return s + (p - (s - v) + (c - v) + e);\n}\n\nfunction tot(g: Graph, s: Setting, k: number, from: number): Node {\n if (s.p === 0) throw new RangeError(\"a setting without an averaging period has no running total\");\n const P = s.p;\n return g.node((nd, a, b) => {\n bind(g);\n const v = nd.v;\n for (let i = a; i < b; i++) {\n if (i < from) { v[i] = Number.NaN; continue; }\n const end = i - k; // the window is [end - P, end - 1]\n if (i === from) {\n let t = 0;\n for (let j = end - P; j < end; j++) t += range(s, j);\n v[i] = t;\n } else v[i] = v[i - 1]! + (range(s, end - 1) - range(s, end - 1 - P));\n }\n });\n}\n\nfunction mkStudy(id: string, name: string, inputs: readonly InputDef[], build: (g: Graph, p: Params) => Node[]): StudyDef {\n return defineStudy({\n id: `cdl-${id.toLowerCase()}`, name, family: \"pattern\", needs: \"ohlc\", pane: \"overlay\", inputs, columns: [\"signal\"],\n plots: [markers(\"signal\", \"arrowUp\", \"sign\", COLORS.blue, { text: true })], build, reference: `TA-Lib CDL${id}`,\n });\n}\n\ntype Eval = (i: number, T: Float64Array, pen: number) => number;\n\n/** A stateless pattern: `fn` judges bar i from the bars before it and the running totals of its slots (in order). */\nfunction cdl(id: string, name: string, lookback: number, slots: readonly Slot[], fn: Eval, pen?: { pen: number }): StudyDef {\n const inputs = pen ? [float(\"penetration\", pen.pen, 0, 10, 0.05)] : [];\n return mkStudy(id, name, inputs, (g, p) => {\n const ts = slots.map(([s, k]) => tot(g, s, k, lookback));\n const T = new Float64Array(ts.length); // scratch, rewritten for every bar before it is read\n const penetration = pen ? (p.penetration as number) : 0;\n return [g.node((nd, a, b) => {\n bind(g);\n const v = nd.v;\n for (let i = a; i < b; i++) {\n if (i < lookback) { v[i] = Number.NaN; continue; }\n for (let s = 0; s < ts.length; s++) T[s] = ts[s]!.v[i]!;\n v[i] = fn(i, T, penetration);\n }\n })];\n });\n}\n\n// ---- 1. two to four candle reversal and continuation patterns -----------------------------------\n\nexport const cdl2Crows = cdl(\"2CROWS\", \"Two Crows\", 12, [[BL, 2]], (i, T) =>\n col(i - 2) === 1 && rb(i - 2) > avg(BL, T[0]!, i - 2) &&\n col(i - 1) === -1 && Math.min(op(i - 1), cl(i - 1)) > Math.max(op(i - 2), cl(i - 2)) &&\n col(i) === -1 && op(i) < op(i - 1) && op(i) > cl(i - 1) && cl(i) > op(i - 2) && cl(i) < cl(i - 2)\n ? -100 : 0);\n\nexport const cdl3BlackCrows = cdl(\"3BLACKCROWS\", \"Three Black Crows\", 13, [[SVS, 2], [SVS, 1], [SVS, 0]], (i, T) =>\n col(i - 3) === 1 && col(i - 2) === -1 && col(i - 1) === -1 && col(i) === -1 &&\n op(i - 1) < op(i - 2) && op(i - 1) > cl(i - 2) && op(i) < op(i - 1) && op(i) > cl(i - 1) &&\n hi(i - 3) > cl(i - 2) && cl(i - 2) > cl(i - 1) && cl(i - 1) > cl(i) &&\n ls(i - 2) < avg(SVS, T[0]!, i - 2) && ls(i - 1) < avg(SVS, T[1]!, i - 1) && ls(i) < avg(SVS, T[2]!, i)\n ? -100 : 0);\n\nexport const cdl3Inside = cdl(\"3INSIDE\", \"Three Inside Up/Down\", 12, [[BL, 2], [BS, 1]], (i, T) =>\n Math.max(cl(i - 1), op(i - 1)) < Math.max(cl(i - 2), op(i - 2)) && Math.min(cl(i - 1), op(i - 1)) > Math.min(cl(i - 2), op(i - 2)) &&\n ((col(i - 2) === 1 && col(i) === -1 && cl(i) < op(i - 2)) || (col(i - 2) === -1 && col(i) === 1 && cl(i) > op(i - 2))) &&\n rb(i - 2) > avg(BL, T[0]!, i - 2) && rb(i - 1) <= avg(BS, T[1]!, i - 1)\n ? -col(i - 2) * 100 : 0);\n\nexport const cdl3LineStrike = cdl(\"3LINESTRIKE\", \"Three-Line Strike\", 8, [[NEAR, 3], [NEAR, 2]], (i, T) =>\n col(i - 3) === col(i - 2) && col(i - 2) === col(i - 1) && col(i) === -col(i - 1) &&\n op(i - 2) >= Math.min(op(i - 3), cl(i - 3)) - avg(NEAR, T[0]!, i - 3) && op(i - 2) <= Math.max(op(i - 3), cl(i - 3)) + avg(NEAR, T[0]!, i - 3) &&\n op(i - 1) >= Math.min(op(i - 2), cl(i - 2)) - avg(NEAR, T[1]!, i - 2) && op(i - 1) <= Math.max(op(i - 2), cl(i - 2)) + avg(NEAR, T[1]!, i - 2) &&\n ((col(i - 1) === 1 && cl(i - 1) > cl(i - 2) && cl(i - 2) > cl(i - 3) && op(i) > cl(i - 1) && cl(i) < op(i - 3)) ||\n (col(i - 1) === -1 && cl(i - 1) < cl(i - 2) && cl(i - 2) < cl(i - 3) && op(i) < cl(i - 1) && cl(i) > op(i - 3)))\n ? col(i - 1) * 100 : 0);\n\nexport const cdl3Outside = cdl(\"3OUTSIDE\", \"Three Outside Up/Down\", 3, [], (i) =>\n (col(i - 1) === 1 && col(i - 2) === -1 && cl(i - 1) > op(i - 2) && op(i - 1) < cl(i - 2) && cl(i) > cl(i - 1)) ||\n (col(i - 1) === -1 && col(i - 2) === 1 && op(i - 1) > cl(i - 2) && cl(i - 1) < op(i - 2) && cl(i) < cl(i - 1))\n ? col(i - 1) * 100 : 0);\n\nexport const cdl3StarsInSouth = cdl(\"3STARSINSOUTH\", \"Three Stars In The South\", 12, [[BL, 2], [SVS, 1], [SVS, 0], [BS, 0]], (i, T) =>\n col(i - 2) === -1 && col(i - 1) === -1 && col(i) === -1 &&\n rb(i - 2) > avg(BL, T[0]!, i - 2) && ls(i - 2) > avg(SL, 0, i - 2) &&\n rb(i - 1) < rb(i - 2) && op(i - 1) > cl(i - 2) && op(i - 1) <= hi(i - 2) && lo(i - 1) < cl(i - 2) && lo(i - 1) >= lo(i - 2) &&\n ls(i - 1) > avg(SVS, T[1]!, i - 1) &&\n rb(i) < avg(BS, T[3]!, i) && ls(i) < avg(SVS, T[2]!, i) && us(i) < avg(SVS, T[2]!, i) &&\n lo(i) > lo(i - 1) && hi(i) < hi(i - 1)\n ? 100 : 0);\n\nexport const cdl3WhiteSoldiers = cdl(\"3WHITESOLDIERS\", \"Three Advancing White Soldiers\", 12,\n [[SVS, 2], [SVS, 1], [SVS, 0], [NEAR, 2], [NEAR, 1], [FAR, 2], [FAR, 1], [BS, 0]], (i, T) =>\n col(i - 2) === 1 && us(i - 2) < avg(SVS, T[0]!, i - 2) &&\n col(i - 1) === 1 && us(i - 1) < avg(SVS, T[1]!, i - 1) &&\n col(i) === 1 && us(i) < avg(SVS, T[2]!, i) &&\n cl(i) > cl(i - 1) && cl(i - 1) > cl(i - 2) && op(i - 1) > op(i - 2) && op(i - 1) <= cl(i - 2) + avg(NEAR, T[3]!, i - 2) &&\n op(i) > op(i - 1) && op(i) <= cl(i - 1) + avg(NEAR, T[4]!, i - 1) &&\n rb(i - 1) > rb(i - 2) - avg(FAR, T[5]!, i - 2) && rb(i) > rb(i - 1) - avg(FAR, T[6]!, i - 1) &&\n rb(i) > avg(BS, T[7]!, i)\n ? 100 : 0);\n\nexport const cdlAbandonedBaby = cdl(\"ABANDONEDBABY\", \"Abandoned Baby\", 12, [[BL, 2], [BD, 1], [BS, 0]], (i, T, pen) =>\n rb(i - 2) > avg(BL, T[0]!, i - 2) && rb(i - 1) <= avg(BD, T[1]!, i - 1) && rb(i) > avg(BS, T[2]!, i) &&\n ((col(i - 2) === 1 && col(i) === -1 && cl(i) < cl(i - 2) - rb(i - 2) * pen && lo(i - 1) > hi(i - 2) && hi(i) < lo(i - 1)) ||\n (col(i - 2) === -1 && col(i) === 1 && cl(i) > fma(rb(i - 2), pen, cl(i - 2)) && hi(i - 1) < lo(i - 2) && lo(i) > hi(i - 1)))\n ? col(i) * 100 : 0, { pen: 0.3 });\n\nexport const cdlAdvanceBlock = cdl(\"ADVANCEBLOCK\", \"Advance Block\", 12,\n [[SS, 2], [SS, 1], [SS, 0], [NEAR, 2], [NEAR, 1], [FAR, 2], [FAR, 1], [BL, 2]], (i, T) =>\n col(i - 2) === 1 && col(i - 1) === 1 && col(i) === 1 &&\n cl(i) > cl(i - 1) && cl(i - 1) > cl(i - 2) && op(i - 1) > op(i - 2) && op(i - 1) <= cl(i - 2) + avg(NEAR, T[3]!, i - 2) &&\n op(i) > op(i - 1) && op(i) <= cl(i - 1) + avg(NEAR, T[4]!, i - 1) &&\n rb(i - 2) > avg(BL, T[7]!, i - 2) && us(i - 2) < avg(SS, T[0]!, i - 2) &&\n ((rb(i - 1) < rb(i - 2) - avg(FAR, T[5]!, i - 2) && rb(i) < rb(i - 1) + avg(NEAR, T[4]!, i - 1)) ||\n rb(i) < rb(i - 1) - avg(FAR, T[6]!, i - 1) ||\n (rb(i) < rb(i - 1) && rb(i - 1) < rb(i - 2) && (us(i) > avg(SS, T[2]!, i) || us(i - 1) > avg(SS, T[1]!, i - 1))) ||\n (rb(i) < rb(i - 1) && us(i) > avg(SL, 0, i)))\n ? -100 : 0);\n\nexport const cdlBeltHold = cdl(\"BELTHOLD\", \"Belt-hold\", 10, [[BL, 0], [SVS, 0]], (i, T) =>\n rb(i) > avg(BL, T[0]!, i) &&\n ((col(i) === 1 && ls(i) < avg(SVS, T[1]!, i)) || (col(i) === -1 && us(i) < avg(SVS, T[1]!, i)))\n ? col(i) * 100 : 0);\n\nexport const cdlBreakaway = cdl(\"BREAKAWAY\", \"Breakaway\", 14, [[BL, 4]], (i, T) =>\n col(i - 4) === col(i - 3) && col(i - 3) === col(i - 1) && col(i - 1) === -col(i) &&\n rb(i - 4) > avg(BL, T[0]!, i - 4) &&\n ((col(i - 4) === -1 && Math.max(op(i - 3), cl(i - 3)) < Math.min(op(i - 4), cl(i - 4)) &&\n hi(i - 2) < hi(i - 3) && lo(i - 2) < lo(i - 3) && hi(i - 1) < hi(i - 2) && lo(i - 1) < lo(i - 2) &&\n cl(i) > op(i - 3) && cl(i) < cl(i - 4)) ||\n (col(i - 4) === 1 && Math.min(op(i - 3), cl(i - 3)) > Math.max(op(i - 4), cl(i - 4)) &&\n hi(i - 2) > hi(i - 3) && lo(i - 2) > lo(i - 3) && hi(i - 1) > hi(i - 2) && lo(i - 1) > lo(i - 2) &&\n cl(i) < op(i - 3) && cl(i) > cl(i - 4)))\n ? col(i) * 100 : 0);\n\nexport const cdlClosingMarubozu = cdl(\"CLOSINGMARUBOZU\", \"Closing Marubozu\", 10, [[BL, 0], [SVS, 0]], (i, T) =>\n rb(i) > avg(BL, T[0]!, i) &&\n ((col(i) === 1 && us(i) < avg(SVS, T[1]!, i)) || (col(i) === -1 && ls(i) < avg(SVS, T[1]!, i)))\n ? col(i) * 100 : 0);\n\nexport const cdlConcealBabySwall = cdl(\"CONCEALBABYSWALL\", \"Concealing Baby Swallow\", 13, [[SVS, 3], [SVS, 2], [SVS, 1]], (i, T) =>\n col(i - 3) === -1 && col(i - 2) === -1 && col(i - 1) === -1 && col(i) === -1 &&\n ls(i - 3) < avg(SVS, T[0]!, i - 3) && us(i - 3) < avg(SVS, T[0]!, i - 3) &&\n ls(i - 2) < avg(SVS, T[1]!, i - 2) && us(i - 2) < avg(SVS, T[1]!, i - 2) &&\n Math.max(op(i - 1), cl(i - 1)) < Math.min(op(i - 2), cl(i - 2)) &&\n us(i - 1) > avg(SVS, T[2]!, i - 1) && hi(i - 1) > cl(i - 2) &&\n hi(i) > hi(i - 1) && lo(i) < lo(i - 1)\n ? 100 : 0);\n\nexport const cdlCounterAttack = cdl(\"COUNTERATTACK\", \"Counterattack\", 11, [[EQ, 1], [BL, 1], [BL, 0]], (i, T) =>\n col(i - 1) === -col(i) &&\n rb(i - 1) > avg(BL, T[1]!, i - 1) && rb(i) > avg(BL, T[2]!, i) &&\n cl(i) <= cl(i - 1) + avg(EQ, T[0]!, i - 1) && cl(i) >= cl(i - 1) - avg(EQ, T[0]!, i - 1)\n ? col(i) * 100 : 0);\n\nexport const cdlDarkCloudCover = cdl(\"DARKCLOUDCOVER\", \"Dark Cloud Cover\", 11, [[BL, 1]], (i, T, pen) =>\n col(i - 1) === 1 && rb(i - 1) > avg(BL, T[0]!, i - 1) &&\n col(i) === -1 && op(i) > hi(i - 1) && cl(i) > op(i - 1) && cl(i) < cl(i - 1) - rb(i - 1) * pen\n ? -100 : 0, { pen: 0.5 });\n\nexport const cdlDoji = cdl(\"DOJI\", \"Doji\", 10, [[BD, 0]], (i, T) => rb(i) <= avg(BD, T[0]!, i) ? 100 : 0);\n\nexport const cdlDojiStar = cdl(\"DOJISTAR\", \"Doji Star\", 11, [[BL, 1], [BD, 0]], (i, T) =>\n rb(i - 1) > avg(BL, T[0]!, i - 1) && rb(i) <= avg(BD, T[1]!, i) &&\n ((col(i - 1) === 1 && Math.min(op(i), cl(i)) > Math.max(op(i - 1), cl(i - 1))) ||\n (col(i - 1) === -1 && Math.max(op(i), cl(i)) < Math.min(op(i - 1), cl(i - 1))))\n ? -col(i - 1) * 100 : 0);\n\nexport const cdlDragonflyDoji = cdl(\"DRAGONFLYDOJI\", \"Dragonfly Doji\", 10, [[BD, 0], [SVS, 0]], (i, T) =>\n rb(i) <= avg(BD, T[0]!, i) && us(i) < avg(SVS, T[1]!, i) && ls(i) > avg(SVS, T[1]!, i)\n ? 100 : 0);\n\nexport const cdlEngulfing = cdl(\"ENGULFING\", \"Engulfing Pattern\", 2, [], (i) =>\n (col(i) === 1 && col(i - 1) === -1 && ((cl(i) >= op(i - 1) && op(i) < cl(i - 1)) || (cl(i) > op(i - 1) && op(i) <= cl(i - 1)))) ||\n (col(i) === -1 && col(i - 1) === 1 && ((op(i) >= cl(i - 1) && cl(i) < op(i - 1)) || (op(i) > cl(i - 1) && cl(i) <= op(i - 1))))\n ? (op(i) !== cl(i - 1) && cl(i) !== op(i - 1) ? col(i) * 100 : col(i) * 80) : 0);\n\nexport const cdlEveningDojiStar = cdl(\"EVENINGDOJISTAR\", \"Evening Doji Star\", 12, [[BL, 2], [BD, 1], [BS, 0]], (i, T, pen) =>\n col(i - 2) === 1 && col(i) === -1 && Math.min(op(i - 1), cl(i - 1)) > Math.max(op(i - 2), cl(i - 2)) &&\n cl(i) < cl(i - 2) - rb(i - 2) * pen &&\n rb(i - 2) > avg(BL, T[0]!, i - 2) && rb(i - 1) <= avg(BD, T[1]!, i - 1) && rb(i) > avg(BS, T[2]!, i)\n ? -100 : 0, { pen: 0.3 });\n\nexport const cdlEveningStar = cdl(\"EVENINGSTAR\", \"Evening Star\", 12, [[BL, 2], [BS, 1], [BS, 0]], (i, T, pen) =>\n col(i - 2) === 1 && col(i) === -1 && Math.min(op(i - 1), cl(i - 1)) > Math.max(op(i - 2), cl(i - 2)) &&\n cl(i) < cl(i - 2) - rb(i - 2) * pen &&\n rb(i - 2) > avg(BL, T[0]!, i - 2) && rb(i - 1) <= avg(BS, T[1]!, i - 1) && rb(i) > avg(BS, T[2]!, i)\n ? -100 : 0, { pen: 0.3 });\n\nexport const cdlGapSideSideWhite = cdl(\"GAPSIDESIDEWHITE\", \"Up/Down-gap side-by-side white lines\", 7, [[NEAR, 1], [EQ, 1]], (i, T) => {\n const up = Math.min(op(i - 1), cl(i - 1)) > Math.max(op(i - 2), cl(i - 2));\n return ((up && Math.min(op(i), cl(i)) > Math.max(op(i - 2), cl(i - 2))) ||\n (Math.max(op(i - 1), cl(i - 1)) < Math.min(op(i - 2), cl(i - 2)) && Math.max(op(i), cl(i)) < Math.min(op(i - 2), cl(i - 2)))) &&\n col(i - 1) === 1 && col(i) === 1 &&\n rb(i) >= rb(i - 1) - avg(NEAR, T[0]!, i - 1) && rb(i) <= rb(i - 1) + avg(NEAR, T[0]!, i - 1) &&\n op(i) >= op(i - 1) - avg(EQ, T[1]!, i - 1) && op(i) <= op(i - 1) + avg(EQ, T[1]!, i - 1)\n ? (up ? 100 : -100) : 0;\n});\n\nexport const cdlGravestoneDoji = cdl(\"GRAVESTONEDOJI\", \"Gravestone Doji\", 10, [[BD, 0], [SVS, 0]], (i, T) =>\n rb(i) <= avg(BD, T[0]!, i) && ls(i) < avg(SVS, T[1]!, i) && us(i) > avg(SVS, T[1]!, i)\n ? 100 : 0);\n\nexport const cdlHammer = cdl(\"HAMMER\", \"Hammer\", 11, [[BS, 0], [SVS, 0], [NEAR, 1]], (i, T) =>\n rb(i) < avg(BS, T[0]!, i) && ls(i) > avg(SL, 0, i) && us(i) < avg(SVS, T[1]!, i) &&\n Math.min(cl(i), op(i)) <= lo(i - 1) + avg(NEAR, T[2]!, i - 1)\n ? 100 : 0);\n\nexport const cdlHangingMan = cdl(\"HANGINGMAN\", \"Hanging Man\", 11, [[BS, 0], [SVS, 0], [NEAR, 1]], (i, T) =>\n rb(i) < avg(BS, T[0]!, i) && ls(i) > avg(SL, 0, i) && us(i) < avg(SVS, T[1]!, i) &&\n Math.min(cl(i), op(i)) >= hi(i - 1) - avg(NEAR, T[2]!, i - 1)\n ? -100 : 0);\n\nexport const cdlHarami = cdl(\"HARAMI\", \"Harami Pattern\", 11, [[BL, 1], [BS, 0]], (i, T) => {\n if (!(rb(i - 1) > avg(BL, T[0]!, i - 1) && rb(i) <= avg(BS, T[1]!, i))) return 0;\n const mx = Math.max(cl(i), op(i)), mn = Math.min(cl(i), op(i)), pmx = Math.max(cl(i - 1), op(i - 1)), pmn = Math.min(cl(i - 1), op(i - 1));\n return mx < pmx && mn > pmn ? -col(i - 1) * 100 : mx <= pmx && mn >= pmn ? -col(i - 1) * 80 : 0;\n});\n\nexport const cdlHaramiCross = cdl(\"HARAMICROSS\", \"Harami Cross Pattern\", 11, [[BL, 1], [BD, 0]], (i, T) => {\n if (!(rb(i - 1) > avg(BL, T[0]!, i - 1) && rb(i) <= avg(BD, T[1]!, i))) return 0;\n const mx = Math.max(cl(i), op(i)), mn = Math.min(cl(i), op(i)), pmx = Math.max(cl(i - 1), op(i - 1)), pmn = Math.min(cl(i - 1), op(i - 1));\n return mx < pmx && mn > pmn ? -col(i - 1) * 100 : mx <= pmx && mn >= pmn ? -col(i - 1) * 80 : 0;\n});\n\nexport const cdlHighWave = cdl(\"HIGHWAVE\", \"High-Wave Candle\", 10, [[BS, 0]], (i, T) =>\n rb(i) < avg(BS, T[0]!, i) && us(i) > avg(SVL, 0, i) && ls(i) > avg(SVL, 0, i)\n ? col(i) * 100 : 0);\n\n// Hikkake: a state machine over the bars after an inside bar. The state (days left to confirm, result,\n// saved high/low) lives in columns written from the previous bar's; TA-Lib starts it 3 bars before the first output.\nfunction hikkake(id: string, name: string, mod: boolean) {\n const L = mod ? 10 : 5;\n const start = L - 3;\n return mkStudy(id, name, [], (g) => {\n const T = mod ? tot(g, NEAR, 2, start) : null;\n const cdC = g.col(), resC = g.col(), shC = g.col(), slC = g.col();\n const sig = g.node((nd, a, b) => {\n bind(g);\n const v = nd.v, cdv = cdC.v, rs = resC.v, sh = shC.v, sl = slC.v;\n for (let i = a; i < b; i++) {\n if (i < start) { v[i] = NaN; continue; }\n let cd = i > start ? cdv[i - 1]! : 0, res = i > start ? rs[i - 1]! : 0, sHi = i > start ? sh[i - 1]! : 0, sLo = i > start ? sl[i - 1]! : 0;\n let out = 0;\n const base = mod\n ? hi(i - 2) < hi(i - 3) && lo(i - 2) > lo(i - 3) && hi(i - 1) < hi(i - 2) && lo(i - 1) > lo(i - 2) &&\n ((hi(i) < hi(i - 1) && lo(i) < lo(i - 1) && cl(i - 2) <= lo(i - 2) + avg(NEAR, T!.v[i]!, i - 2)) ||\n (hi(i) > hi(i - 1) && lo(i) > lo(i - 1) && cl(i - 2) >= hi(i - 2) - avg(NEAR, T!.v[i]!, i - 2)))\n : hi(i - 1) < hi(i - 2) && lo(i - 1) > lo(i - 2) &&\n ((hi(i) < hi(i - 1) && lo(i) < lo(i - 1)) || (hi(i) > hi(i - 1) && lo(i) > lo(i - 1)));\n if (base) {\n res = 100 * (hi(i) < hi(i - 1) ? 1 : -1); sHi = hi(i - 1); sLo = lo(i - 1); cd = 4; out = res;\n } else if (cd > 0 && ((res > 0 && cl(i) > sHi) || (res < 0 && cl(i) < sLo))) {\n out = res + 100 * (res > 0 ? 1 : -1); cd = 0;\n }\n if (cd > 0) cd -= 1;\n cdv[i] = cd; rs[i] = res; sh[i] = sHi; sl[i] = sLo;\n v[i] = i >= L ? out : NaN;\n }\n });\n return [sig];\n });\n}\n\nexport const cdlHikkake = hikkake(\"HIKKAKE\", \"Hikkake Pattern\", false);\nexport const cdlHikkakeMod = hikkake(\"HIKKAKEMOD\", \"Modified Hikkake Pattern\", true);\n\nexport const cdlHomingPigeon = cdl(\"HOMINGPIGEON\", \"Homing Pigeon\", 11, [[BL, 1], [BS, 0]], (i, T) =>\n col(i - 1) === -1 && col(i) === -1 && rb(i - 1) > avg(BL, T[0]!, i - 1) && rb(i) <= avg(BS, T[1]!, i) &&\n op(i) < op(i - 1) && cl(i) > cl(i - 1)\n ? 100 : 0);\n\nexport const cdlIdentical3Crows = cdl(\"IDENTICAL3CROWS\", \"Identical Three Crows\", 12,\n [[SVS, 2], [SVS, 1], [SVS, 0], [EQ, 2], [EQ, 1]], (i, T) =>\n col(i - 2) === -1 && ls(i - 2) < avg(SVS, T[0]!, i - 2) &&\n col(i - 1) === -1 && ls(i - 1) < avg(SVS, T[1]!, i - 1) &&\n col(i) === -1 && ls(i) < avg(SVS, T[2]!, i) &&\n cl(i - 2) > cl(i - 1) && cl(i - 1) > cl(i) &&\n op(i - 1) <= cl(i - 2) + avg(EQ, T[3]!, i - 2) && op(i - 1) >= cl(i - 2) - avg(EQ, T[3]!, i - 2) &&\n op(i) <= cl(i - 1) + avg(EQ, T[4]!, i - 1) && op(i) >= cl(i - 1) - avg(EQ, T[4]!, i - 1)\n ? -100 : 0);\n\nexport const cdlInNeck = cdl(\"INNECK\", \"In-Neck Pattern\", 11, [[EQ, 1], [BL, 1]], (i, T) =>\n col(i - 1) === -1 && rb(i - 1) > avg(BL, T[1]!, i - 1) &&\n col(i) === 1 && op(i) < lo(i - 1) && cl(i) <= cl(i - 1) + avg(EQ, T[0]!, i - 1) && cl(i) >= cl(i - 1)\n ? -100 : 0);\n\nexport const cdlInvertedHammer = cdl(\"INVERTEDHAMMER\", \"Inverted Hammer\", 11, [[BS, 0], [SVS, 0]], (i, T) =>\n Math.max(op(i), cl(i)) < Math.min(op(i - 1), cl(i - 1)) && rb(i) < avg(BS, T[0]!, i) &&\n us(i) > avg(SL, 0, i) && ls(i) < avg(SVS, T[1]!, i)\n ? 100 : 0);\n\nfunction kicking(i: number, T: Float64Array): boolean {\n return col(i - 1) === -col(i) && rb(i - 1) > avg(BL, T[2]!, i - 1) &&\n us(i - 1) < avg(SVS, T[0]!, i - 1) && ls(i - 1) < avg(SVS, T[0]!, i - 1) &&\n rb(i) > avg(BL, T[3]!, i) && us(i) < avg(SVS, T[1]!, i) && ls(i) < avg(SVS, T[1]!, i) &&\n ((col(i - 1) === -1 && lo(i) > hi(i - 1)) || (col(i - 1) === 1 && hi(i) < lo(i - 1)));\n}\nconst KICK_SLOTS: Slot[] = [[SVS, 1], [SVS, 0], [BL, 1], [BL, 0]];\n\nexport const cdlKicking = cdl(\"KICKING\", \"Kicking\", 11, KICK_SLOTS, (i, T) => (kicking(i, T) ? col(i) * 100 : 0));\n\nexport const cdlKickingByLength = cdl(\"KICKINGBYLENGTH\", \"Kicking - bull/bear determined by the longer marubozu\", 11, KICK_SLOTS, (i, T) =>\n kicking(i, T) ? (col(rb(i) > rb(i - 1) ? i : i - 1)) * 100 : 0);\n\nexport const cdlLadderBottom = cdl(\"LADDERBOTTOM\", \"Ladder Bottom\", 14, [[SVS, 1]], (i, T) =>\n col(i - 4) === -1 && col(i - 3) === -1 && col(i - 2) === -1 &&\n op(i - 4) > op(i - 3) && op(i - 3) > op(i - 2) && cl(i - 4) > cl(i - 3) && cl(i - 3) > cl(i - 2) &&\n col(i - 1) === -1 && us(i - 1) > avg(SVS, T[0]!, i - 1) &&\n col(i) === 1 && op(i) > op(i - 1) && cl(i) > hi(i - 1)\n ? 100 : 0);\n\nexport const cdlLongLeggedDoji = cdl(\"LONGLEGGEDDOJI\", \"Long Legged Doji\", 10, [[BD, 0]], (i, T) =>\n rb(i) <= avg(BD, T[0]!, i) && (ls(i) > avg(SL, 0, i) || us(i) > avg(SL, 0, i))\n ? 100 : 0);\n\nexport const cdlLongLine = cdl(\"LONGLINE\", \"Long Line Candle\", 10, [[BL, 0], [SS, 0]], (i, T) =>\n rb(i) > avg(BL, T[0]!, i) && us(i) < avg(SS, T[1]!, i) && ls(i) < avg(SS, T[1]!, i)\n ? col(i) * 100 : 0);\n\nexport const cdlMarubozu = cdl(\"MARUBOZU\", \"Marubozu\", 10, [[BL, 0], [SVS, 0]], (i, T) =>\n rb(i) > avg(BL, T[0]!, i) && us(i) < avg(SVS, T[1]!, i) && ls(i) < avg(SVS, T[1]!, i)\n ? col(i) * 100 : 0);\n\nexport const cdlMatchingLow = cdl(\"MATCHINGLOW\", \"Matching Low\", 6, [[EQ, 1]], (i, T) =>\n col(i - 1) === -1 && col(i) === -1 &&\n cl(i) <= cl(i - 1) + avg(EQ, T[0]!, i - 1) && cl(i) >= cl(i - 1) - avg(EQ, T[0]!, i - 1)\n ? 100 : 0);\n\nexport const cdlMatHold = cdl(\"MATHOLD\", \"Mat Hold\", 14, [[BL, 4], [BS, 3], [BS, 2], [BS, 1]], (i, T, pen) =>\n col(i - 4) === 1 && col(i - 3) === -1 && col(i) === 1 &&\n Math.min(op(i - 3), cl(i - 3)) > Math.max(op(i - 4), cl(i - 4)) &&\n Math.min(op(i - 2), cl(i - 2)) < cl(i - 4) && Math.min(op(i - 1), cl(i - 1)) < cl(i - 4) &&\n Math.min(op(i - 2), cl(i - 2)) > cl(i - 4) - rb(i - 4) * pen && Math.min(op(i - 1), cl(i - 1)) > cl(i - 4) - rb(i - 4) * pen &&\n Math.max(cl(i - 2), op(i - 2)) < op(i - 3) && Math.max(cl(i - 1), op(i - 1)) < Math.max(cl(i - 2), op(i - 2)) &&\n op(i) > cl(i - 1) && cl(i) > Math.max(Math.max(hi(i - 3), hi(i - 2)), hi(i - 1)) &&\n rb(i - 4) > avg(BL, T[0]!, i - 4) &&\n rb(i - 3) < avg(BS, T[1]!, i - 3) && rb(i - 2) < avg(BS, T[2]!, i - 2) && rb(i - 1) < avg(BS, T[3]!, i - 1)\n ? 100 : 0, { pen: 0.5 });\n\nexport const cdlMorningDojiStar = cdl(\"MORNINGDOJISTAR\", \"Morning Doji Star\", 12, [[BL, 2], [BD, 1], [BS, 0]], (i, T, pen) =>\n col(i - 2) === -1 && col(i) === 1 && Math.max(op(i - 1), cl(i - 1)) < Math.min(op(i - 2), cl(i - 2)) &&\n cl(i) > fma(rb(i - 2), pen, cl(i - 2)) &&\n rb(i - 2) > avg(BL, T[0]!, i - 2) && rb(i - 1) <= avg(BD, T[1]!, i - 1) && rb(i) > avg(BS, T[2]!, i)\n ? 100 : 0, { pen: 0.3 });\n\nexport const cdlMorningStar = cdl(\"MORNINGSTAR\", \"Morning Star\", 12, [[BL, 2], [BS, 1], [BS, 0]], (i, T, pen) =>\n col(i - 2) === -1 && col(i) === 1 && Math.max(op(i - 1), cl(i - 1)) < Math.min(op(i - 2), cl(i - 2)) &&\n cl(i) > fma(rb(i - 2), pen, cl(i - 2)) &&\n rb(i - 2) > avg(BL, T[0]!, i - 2) && rb(i - 1) <= avg(BS, T[1]!, i - 1) && rb(i) > avg(BS, T[2]!, i)\n ? 100 : 0, { pen: 0.3 });\n\nexport const cdlOnNeck = cdl(\"ONNECK\", \"On-Neck Pattern\", 11, [[EQ, 1], [BL, 1]], (i, T) =>\n col(i - 1) === -1 && rb(i - 1) > avg(BL, T[1]!, i - 1) &&\n col(i) === 1 && op(i) < lo(i - 1) && cl(i) <= lo(i - 1) + avg(EQ, T[0]!, i - 1) && cl(i) >= lo(i - 1) - avg(EQ, T[0]!, i - 1)\n ? -100 : 0);\n\nexport const cdlPiercing = cdl(\"PIERCING\", \"Piercing Pattern\", 11, [[BL, 1], [BL, 0]], (i, T) =>\n col(i - 1) === -1 && rb(i - 1) > avg(BL, T[0]!, i - 1) &&\n col(i) === 1 && rb(i) > avg(BL, T[1]!, i) &&\n op(i) < lo(i - 1) && cl(i) < op(i - 1) && cl(i) > fma(rb(i - 1), 0.5, cl(i - 1))\n ? 100 : 0);\n\nexport const cdlRickshawMan = cdl(\"RICKSHAWMAN\", \"Rickshaw Man\", 10, [[BD, 0], [NEAR, 0]], (i, T) =>\n rb(i) <= avg(BD, T[0]!, i) && ls(i) > avg(SL, 0, i) && us(i) > avg(SL, 0, i) &&\n Math.min(op(i), cl(i)) <= lo(i) + (hi(i) - lo(i)) / 2 + avg(NEAR, T[1]!, i) &&\n Math.max(op(i), cl(i)) >= lo(i) + (hi(i) - lo(i)) / 2 - avg(NEAR, T[1]!, i)\n ? 100 : 0);\n\nexport const cdlRiseFall3Methods = cdl(\"RISEFALL3METHODS\", \"Rising/Falling Three Methods\", 14,\n [[BL, 4], [BS, 3], [BS, 2], [BS, 1], [BL, 0]], (i, T) => {\n const s = col(i - 4);\n return col(i - 4) === -col(i - 3) && col(i - 3) === col(i - 2) && col(i - 2) === col(i - 1) && col(i - 1) === -col(i) &&\n Math.min(op(i - 3), cl(i - 3)) < hi(i - 4) && Math.max(op(i - 3), cl(i - 3)) > lo(i - 4) &&\n Math.min(op(i - 2), cl(i - 2)) < hi(i - 4) && Math.max(op(i - 2), cl(i - 2)) > lo(i - 4) &&\n Math.min(op(i - 1), cl(i - 1)) < hi(i - 4) && Math.max(op(i - 1), cl(i - 1)) > lo(i - 4) &&\n cl(i - 2) * s < cl(i - 3) * s && cl(i - 1) * s < cl(i - 2) * s &&\n op(i) * s > cl(i - 1) * s && cl(i) * s > cl(i - 4) * s &&\n rb(i - 4) > avg(BL, T[0]!, i - 4) &&\n rb(i - 3) < avg(BS, T[1]!, i - 3) && rb(i - 2) < avg(BS, T[2]!, i - 2) && rb(i - 1) < avg(BS, T[3]!, i - 1) &&\n rb(i) > avg(BL, T[4]!, i)\n ? 100 * s : 0;\n});\n\nexport const cdlSeparatingLines = cdl(\"SEPARATINGLINES\", \"Separating Lines\", 11, [[SVS, 0], [BL, 0], [EQ, 1]], (i, T) =>\n col(i - 1) === -col(i) &&\n op(i) <= op(i - 1) + avg(EQ, T[2]!, i - 1) && op(i) >= op(i - 1) - avg(EQ, T[2]!, i - 1) &&\n rb(i) > avg(BL, T[1]!, i) &&\n ((col(i) === 1 && ls(i) < avg(SVS, T[0]!, i)) || (col(i) === -1 && us(i) < avg(SVS, T[0]!, i)))\n ? col(i) * 100 : 0);\n\nexport const cdlShootingStar = cdl(\"SHOOTINGSTAR\", \"Shooting Star\", 11, [[BS, 0], [SVS, 0]], (i, T) =>\n Math.min(op(i), cl(i)) > Math.max(op(i - 1), cl(i - 1)) && rb(i) < avg(BS, T[0]!, i) &&\n us(i) > avg(SL, 0, i) && ls(i) < avg(SVS, T[1]!, i)\n ? -100 : 0);\n\nexport const cdlShortLine = cdl(\"SHORTLINE\", \"Short Line Candle\", 10, [[BS, 0], [SS, 0]], (i, T) =>\n rb(i) < avg(BS, T[0]!, i) && us(i) < avg(SS, T[1]!, i) && ls(i) < avg(SS, T[1]!, i)\n ? col(i) * 100 : 0);\n\nexport const cdlSpinningTop = cdl(\"SPINNINGTOP\", \"Spinning Top\", 10, [[BS, 0]], (i, T) =>\n us(i) > rb(i) && ls(i) > rb(i) && rb(i) < avg(BS, T[0]!, i)\n ? col(i) * 100 : 0);\n\nexport const cdlStalledPattern = cdl(\"STALLEDPATTERN\", \"Stalled Pattern\", 12,\n [[BL, 2], [BL, 1], [BS, 0], [SVS, 1], [NEAR, 2], [NEAR, 1]], (i, T) =>\n col(i - 2) === 1 && col(i - 1) === 1 && col(i) === 1 && cl(i) > cl(i - 1) && cl(i - 1) > cl(i - 2) &&\n rb(i - 2) > avg(BL, T[0]!, i - 2) && rb(i - 1) > avg(BL, T[1]!, i - 1) &&\n us(i - 1) < avg(SVS, T[3]!, i - 1) &&\n op(i - 1) > op(i - 2) && op(i - 1) <= cl(i - 2) + avg(NEAR, T[4]!, i - 2) &&\n rb(i) < avg(BS, T[2]!, i) && op(i) >= cl(i - 1) - rb(i) - avg(NEAR, T[5]!, i - 1)\n ? -100 : 0);\n\nexport const cdlStickSandwich = cdl(\"STICKSANDWICH\", \"Stick Sandwich\", 7, [[EQ, 2]], (i, T) =>\n col(i - 2) === -1 && col(i - 1) === 1 && col(i) === -1 && lo(i - 1) > cl(i - 2) &&\n cl(i) <= cl(i - 2) + avg(EQ, T[0]!, i - 2) && cl(i) >= cl(i - 2) - avg(EQ, T[0]!, i - 2)\n ? 100 : 0);\n\nexport const cdlTakuri = cdl(\"TAKURI\", \"Takuri (Dragonfly Doji with very long lower shadow)\", 10, [[BD, 0], [SVS, 0]], (i, T) =>\n rb(i) <= avg(BD, T[0]!, i) && us(i) < avg(SVS, T[1]!, i) && ls(i) > avg(SVL, 0, i)\n ? 100 : 0);\n\nexport const cdlTasukiGap = cdl(\"TASUKIGAP\", \"Tasuki Gap\", 7, [[NEAR, 1]], (i, T) =>\n (Math.min(op(i - 1), cl(i - 1)) > Math.max(op(i - 2), cl(i - 2)) && col(i - 1) === 1 && col(i) === -1 &&\n op(i) < cl(i - 1) && op(i) > op(i - 1) && cl(i) < op(i - 1) && cl(i) > Math.max(cl(i - 2), op(i - 2)) &&\n Math.abs(rb(i - 1) - rb(i)) < avg(NEAR, T[0]!, i - 1)) ||\n (Math.max(op(i - 1), cl(i - 1)) < Math.min(op(i - 2), cl(i - 2)) && col(i - 1) === -1 && col(i) === 1 &&\n op(i) < op(i - 1) && op(i) > cl(i - 1) && cl(i) > op(i - 1) && cl(i) < Math.min(cl(i - 2), op(i - 2)) &&\n Math.abs(rb(i - 1) - rb(i)) < avg(NEAR, T[0]!, i - 1))\n ? col(i - 1) * 100 : 0);\n\nexport const cdlThrusting = cdl(\"THRUSTING\", \"Thrusting Pattern\", 11, [[EQ, 1], [BL, 1]], (i, T) =>\n col(i - 1) === -1 && rb(i - 1) > avg(BL, T[1]!, i - 1) &&\n col(i) === 1 && op(i) < lo(i - 1) && cl(i) > cl(i - 1) + avg(EQ, T[0]!, i - 1) && cl(i) <= fma(rb(i - 1), 0.5, cl(i - 1))\n ? -100 : 0);\n\nexport const cdlTriStar = cdl(\"TRISTAR\", \"Tristar Pattern\", 12, [[BD, 2]], (i, T) => {\n if (!(rb(i - 2) <= avg(BD, T[0]!, i - 2) && rb(i - 1) <= avg(BD, T[0]!, i - 2) && rb(i) <= avg(BD, T[0]!, i - 2))) return 0;\n let out = 0;\n if (Math.min(op(i - 1), cl(i - 1)) > Math.max(op(i - 2), cl(i - 2)) && Math.max(op(i), cl(i)) < Math.max(op(i - 1), cl(i - 1))) out = -100;\n if (Math.max(op(i - 1), cl(i - 1)) < Math.min(op(i - 2), cl(i - 2)) && Math.min(op(i), cl(i)) > Math.min(op(i - 1), cl(i - 1))) out = 100;\n return out;\n});\n\nexport const cdlUnique3River = cdl(\"UNIQUE3RIVER\", \"Unique 3 River\", 12, [[BL, 2], [BS, 0]], (i, T) =>\n col(i - 2) === -1 && col(i - 1) === -1 && col(i) === 1 &&\n cl(i - 1) > cl(i - 2) && op(i - 1) <= op(i - 2) && lo(i - 1) < lo(i - 2) && op(i) > lo(i - 1) &&\n rb(i - 2) > avg(BL, T[0]!, i - 2) && rb(i) < avg(BS, T[1]!, i)\n ? 100 : 0);\n\nexport const cdlUpsideGap2Crows = cdl(\"UPSIDEGAP2CROWS\", \"Upside Gap Two Crows\", 12, [[BL, 2], [BS, 1]], (i, T) =>\n col(i - 2) === 1 && rb(i - 2) > avg(BL, T[0]!, i - 2) &&\n col(i - 1) === -1 && rb(i - 1) <= avg(BS, T[1]!, i - 1) &&\n Math.min(op(i - 1), cl(i - 1)) > Math.max(op(i - 2), cl(i - 2)) &&\n col(i) === -1 && op(i) > op(i - 1) && cl(i) < cl(i - 1) && cl(i) > cl(i - 2)\n ? -100 : 0);\n\nexport const cdlXSideGap3Methods = cdl(\"XSIDEGAP3METHODS\", \"Upside/Downside Gap Three Methods\", 2, [], (i) =>\n col(i - 2) === col(i - 1) && col(i - 1) === -col(i) &&\n op(i) < Math.max(cl(i - 1), op(i - 1)) && op(i) > Math.min(cl(i - 1), op(i - 1)) &&\n cl(i) < Math.max(cl(i - 2), op(i - 2)) && cl(i) > Math.min(cl(i - 2), op(i - 2)) &&\n ((col(i - 2) === 1 && Math.min(op(i - 1), cl(i - 1)) > Math.max(op(i - 2), cl(i - 2))) ||\n (col(i - 2) === -1 && Math.max(op(i - 1), cl(i - 1)) < Math.min(op(i - 2), cl(i - 2))))\n ? col(i - 2) * 100 : 0);\n","// TradingView trend studies: moving averages, bands and channels, Ichimoku,\n// Supertrend, Alligator, Fractals and ZigZag. The specification of each study is\n// TradingView's built-in definition with its default parameters (Pine v5 `ta.*`\n// semantics); each `reference` names the definition implemented.\n//\n// Two conventions that differ from TA-Lib and matter for exact values:\n// - Pine's `ta.atr` is `ta.rma(ta.tr(true), n)`: the first bar's true range is\n// high - low, so the average is seeded one bar earlier than TA-Lib's ATR.\n// `atrTv` below is that definition (the shared `g.atr` is TA-Lib's).\n// - `offset` on a plot is a pure display shift; every column holds the\n// undisplaced value of the bar it was computed on.\n//\n// ZigZag (algorithm written here; TradingView's ZigZag is a drawing tool with no\n// closed-form definition): see the header above `zigzag`.\n\nimport { COLORS, band, bool, defineStudy, fillBetween, float, int, line, markers, select, source } from \"../define.js\";\nimport type { Col, Graph, Node } from \"../engine/graph.js\";\nimport type { PlotDef } from \"../types.js\";\n\nconst NaN_ = Number.NaN;\nconst len = (def: number, min = 1) => int(\"length\", def, min, 5000);\nconst rgba = (hex: string, a: number) => {\n const n = parseInt(hex.slice(1), 16);\n return `rgba(${n >> 16},${(n >> 8) & 255},${n & 255},${a})`;\n};\n\n/** Pine's `ta.tr(true)`: the first bar's range is high - low. */\nfunction trTv(g: Graph): Node {\n const { high, low, close } = g;\n return g.node((s, a, b) => {\n const h = high.v, l = low.v, c = close.v, v = s.v;\n for (let i = a; i < b; i++) {\n const r = h[i]! - l[i]!;\n if (i === 0) { v[i] = r; continue; }\n const pc = c[i - 1]!, u = Math.abs(h[i]! - pc), d = Math.abs(l[i]! - pc);\n v[i] = r > u ? (r > d ? r : d) : u > d ? u : d;\n }\n });\n}\n\n/** Pine's `ta.atr(n)`. */\nconst atrTv = (g: Graph, n: number): Node => g.rma(trTv(g), n);\n\n/**\n * Least-squares line over the last p bars against x = 0..p-1 (oldest..newest): `value` at the newest bar, `slope`\n * per bar, `intercept` at the oldest. Local because Graph.linreg (x increasing with the divisor of TA-Lib's reversed\n * x) returns a negated slope and a wrong intercept/value for any series that is not flat.\n */\nfunction linregFit(g: Graph, x: Col, p: number): { value: Node; slope: Col; intercept: Col } {\n if (!Number.isInteger(p) || p < 2) throw new RangeError(`linreg: period must be an integer >= 2, got ${p}`);\n const cnt = g.validRun(x);\n const sumX = (p * (p - 1)) / 2, sumXSqr = (p * (p - 1) * (2 * p - 1)) / 6;\n const div = p * sumXSqr - sumX * sumX;\n const slope = g.col(), icpt = g.col();\n const value = g.node((s, a, b) => {\n const xv = x.v, c = cnt.v, sl = slope.v, ic = icpt.v, v = s.v;\n for (let i = a; i < b; i++) {\n if (c[i]! < p) { sl[i] = NaN_; ic[i] = NaN_; v[i] = NaN_; continue; }\n let sy = 0, sxy = 0;\n for (let j = 0; j < p; j++) { const y = xv[i - p + 1 + j]!; sy += y; sxy += j * y; }\n const m = (p * sxy - sumX * sy) / div, bb = (sy - m * sumX) / p;\n sl[i] = m; ic[i] = bb; v[i] = bb + m * (p - 1);\n }\n });\n return { value, slope, intercept: icpt };\n}\n\nconst maOf = (g: Graph, type: string, x: Col, n: number): Node => (type === \"ema\" ? g.ema(x, n) : g.sma(x, n));\n\n// ---- moving averages -----------------------------------------------------------\n\nexport const smma = defineStudy({\n id: \"smma\", name: \"Smoothed Moving Average\", family: \"tv\", needs: \"value\", pane: \"overlay\",\n inputs: [len(7), source()], columns: [\"smma\"], plots: [line(\"smma\", COLORS.teal)],\n label: (p) => `${p.length}`,\n // Pine's smma: first value = sma(src, n), then (smma[1] * (n - 1) + src) / n, which is Wilder's RMA.\n build: (g, p) => [g.rma(g.src(p.source), p.length)],\n reference: \"TradingView Smoothed Moving Average: smma := na(smma[1]) ? ta.sma(src, n) : (smma[1] * (n - 1) + src) / n\",\n});\n\nexport const vwma = defineStudy({\n id: \"vwma\", name: \"Volume Weighted Moving Average\", family: \"tv\", needs: \"ohlcv\", pane: \"overlay\",\n inputs: [len(20), source()], columns: [\"vwma\"], plots: [line(\"vwma\", COLORS.purple)],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.div(g.sum(g.mul(g.src(p.source), g.volume), p.length), g.sum(g.volume, p.length))],\n reference: \"Pine ta.vwma(src, n) = ta.sma(src * volume, n) / ta.sma(volume, n)\",\n});\n\nexport const hma = defineStudy({\n id: \"hma\", name: \"Hull Moving Average\", family: \"tv\", needs: \"value\", pane: \"overlay\",\n inputs: [len(9, 2), source()], columns: [\"hma\"], plots: [line(\"hma\", COLORS.pink)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const half = Math.floor(p.length / 2), root = Math.round(Math.sqrt(p.length));\n const raw = g.map2(g.wma(x, half), g.wma(x, p.length), (a, b) => 2 * a - b);\n return [g.wma(raw, root)];\n },\n reference: \"Pine ta.hma(src, n) = ta.wma(2 * ta.wma(src, n / 2) - ta.wma(src, n), round(sqrt(n))), with n / 2 truncated to an int\",\n});\n\nexport const alma = defineStudy({\n id: \"alma\", name: \"Arnaud Legoux Moving Average\", family: \"tv\", needs: \"value\", pane: \"overlay\",\n inputs: [len(9), float(\"offset\", 0.85, 0, 1, 0.05), float(\"sigma\", 6, 0.1, 100, 0.5), source()],\n columns: [\"alma\"], plots: [line(\"alma\", COLORS.blue)],\n label: (p) => `${p.length}, ${p.offset}, ${p.sigma}`,\n build: (g, p) => {\n const n: number = p.length;\n const m = Math.floor(p.offset * (n - 1)), s = n / p.sigma;\n const w = new Float64Array(n);\n let norm = 0;\n for (let k = 0; k < n; k++) { w[k] = Math.exp(-((k - m) ** 2) / (2 * s * s)); norm += w[k]!; }\n const x = g.src(p.source), cnt = g.validRun(x);\n return [g.node((nd, a, b) => {\n const xv = x.v, c = cnt.v, v = nd.v;\n for (let i = a; i < b; i++) {\n if (c[i]! < n) { v[i] = NaN_; continue; }\n // weight k belongs to the bar n-1-k bars back from the newest: k = n-1 is the newest bar\n let t = 0;\n for (let k = 0; k < n; k++) t += xv[i - n + 1 + k]! * w[k]!;\n v[i] = t / norm;\n }\n })];\n },\n reference: \"Pine ta.alma(src, n, offset, sigma): m = floor(offset * (n - 1)), s = n / sigma, w_k = exp(-(k - m)^2 / (2 s^2)), sum(src[n-1-k] * w_k) / sum(w_k)\",\n});\n\nexport const lsma = defineStudy({\n id: \"lsma\", name: \"Least Squares Moving Average\", family: \"tv\", needs: \"value\", pane: \"overlay\",\n inputs: [len(25, 2), int(\"offset\", 0, -5000, 5000), source()], columns: [\"lsma\"], plots: [line(\"lsma\", COLORS.orange)],\n label: (p) => `${p.length}, ${p.offset}`,\n build: (g, p) => {\n const r = linregFit(g, g.src(p.source), p.length);\n // Pine ta.linreg(src, n, offset) = intercept + slope * (n - 1 - offset)\n return [g.map2(r.value, r.slope, (v, s) => v - p.offset * s)];\n },\n reference: \"TradingView Least Squares Moving Average = Pine ta.linreg(src, n, offset); offset 0 equals TA-Lib LINEARREG\",\n});\n\nexport const mcginley = defineStudy({\n id: \"mcginley\", name: \"McGinley Dynamic\", family: \"tv\", needs: \"value\", pane: \"overlay\",\n inputs: [len(14), source()], columns: [\"mcginley\"], plots: [line(\"mcginley\", COLORS.green)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const n: number = p.length;\n const x = g.src(p.source), e = g.ema(x, n);\n return [g.node((nd, a, b) => {\n const xv = x.v, ev = e.v, v = nd.v;\n for (let i = a; i < b; i++) {\n const prev = i > 0 ? v[i - 1]! : NaN_;\n v[i] = prev !== prev ? ev[i]! : prev + (xv[i]! - prev) / (n * Math.pow(xv[i]! / prev, 4));\n }\n })];\n },\n reference: \"TradingView McGinley Dynamic: mg := na(mg[1]) ? ta.ema(src, n) : mg[1] + (src - mg[1]) / (n * (src / mg[1])^4)\",\n});\n\nconst RIBBON_COLORS = [COLORS.blue, COLORS.teal, COLORS.green, COLORS.lime, COLORS.yellow, COLORS.orange, COLORS.red, COLORS.pink];\nconst RIBBON_COLS = RIBBON_COLORS.map((_, k) => `ma${k + 1}`);\n\nexport const maRibbon = defineStudy({\n id: \"ma-ribbon\", name: \"Moving Average Ribbon\", family: \"tv\", needs: \"value\", pane: \"overlay\",\n inputs: [int(\"first\", 20, 1, 5000, \"first\"), int(\"step\", 5, 1, 1000, \"step\"), source()],\n columns: RIBBON_COLS,\n plots: RIBBON_COLS.map((c, k) => line(c, RIBBON_COLORS[k]!, { title: `MA ${k + 1}`, width: 1 })),\n label: (p) => `${p.first}, ${p.step}`,\n build: (g, p) => {\n const last: number = p.first + 7 * p.step;\n if (last > 5000) throw new RangeError(`ma-ribbon: the 8th period ${last} exceeds 5000`);\n const x = g.src(p.source);\n return RIBBON_COLS.map((_, k) => g.sma(x, p.first + k * p.step));\n },\n reference: \"Moving Average Ribbon: eight simple moving averages of periods first, first + step, ... first + 7 * step (default 20..55 step 5)\",\n});\n\nexport const maCross = defineStudy({\n id: \"ma-cross\", name: \"Moving Average Cross\", family: \"tv\", needs: \"value\", pane: \"overlay\",\n inputs: [select(\"type\", \"sma\", [\"sma\", \"ema\"]), int(\"fast\", 9, 1, 5000), int(\"slow\", 21, 1, 5000), source()],\n columns: [\"fast\", \"slow\", \"crossUp\", \"crossDown\"],\n plots: [\n line(\"fast\", COLORS.blue, { title: \"Fast MA\" }),\n line(\"slow\", COLORS.orange, { title: \"Slow MA\" }),\n markers(\"crossUp\", \"circle\", \"value\", COLORS.green, { title: \"Cross up\" }),\n markers(\"crossDown\", \"circle\", \"value\", COLORS.red, { title: \"Cross down\" }),\n ],\n label: (p) => `${p.type}, ${p.fast}, ${p.slow}`,\n build: (g, p) => {\n const x = g.src(p.source), f = maOf(g, p.type, x, p.fast), s = maOf(g, p.type, x, p.slow);\n // marker value = the fast average on the bar where ta.crossover / ta.crossunder is true\n const up = g.calc((i) => (i > 0 && f.v[i]! > s.v[i]! && f.v[i - 1]! <= s.v[i - 1]! ? f.v[i]! : NaN_));\n const dn = g.calc((i) => (i > 0 && f.v[i]! < s.v[i]! && f.v[i - 1]! >= s.v[i - 1]! ? f.v[i]! : NaN_));\n return [f, s, up, dn];\n },\n reference: \"TradingView Moving Average Cross: two moving averages, circles where ta.crossover / ta.crossunder(fast, slow) is true\",\n});\n\n// ---- bands and channels ---------------------------------------------------------\n\nexport const envelopes = defineStudy({\n id: \"envelopes\", name: \"Moving Average Envelopes\", family: \"tv\", needs: \"value\", pane: \"overlay\",\n inputs: [len(20), float(\"percent\", 10, 0, 100, 0.5), select(\"basis\", \"sma\", [\"sma\", \"ema\"]), source()],\n columns: [\"basis\", \"upper\", \"lower\"],\n plots: [line(\"basis\", COLORS.orange, { title: \"Basis\" }), band(\"band\", \"upper\", \"lower\", COLORS.blue, rgba(COLORS.blue, 0.08), \"Envelope\")],\n label: (p) => `${p.length}, ${p.percent}, ${p.basis}`,\n build: (g, p) => {\n const m = maOf(g, p.basis, g.src(p.source), p.length);\n const k: number = p.percent / 100;\n return [m, g.map(m, (v) => v * (1 + k)), g.map(m, (v) => v * (1 - k))];\n },\n reference: \"TradingView Envelope: basis = sma|ema(src, n), upper = basis * (1 + percent / 100), lower = basis * (1 - percent / 100)\",\n});\n\nexport const keltner = defineStudy({\n id: \"keltner\", name: \"Keltner Channels\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [len(20), float(\"mult\", 2, 0, 100, 0.25), int(\"atrLength\", 10, 1, 5000), bool(\"useEma\", true), source()],\n columns: [\"basis\", \"upper\", \"lower\"],\n plots: [line(\"basis\", COLORS.blue, { title: \"Basis\" }), band(\"band\", \"upper\", \"lower\", COLORS.blue, rgba(COLORS.blue, 0.08), \"Channel\")],\n label: (p) => `${p.length}, ${p.mult}, ${p.atrLength}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const m = p.useEma ? g.ema(x, p.length) : g.sma(x, p.length);\n const r = g.map(atrTv(g, p.atrLength), (v) => v * p.mult);\n return [m, g.add(m, r), g.sub(m, r)];\n },\n reference: \"TradingView Keltner Channels (ATR band style): basis = ema|sma(src, n), bands = basis +- mult * ta.atr(atrLength)\",\n});\n\nfunction channel(g: Graph, n: number): { upper: Node; lower: Node; mid: Node } {\n const upper = g.highest(g.high, n), lower = g.lowest(g.low, n);\n return { upper, lower, mid: g.map2(upper, lower, (a, b) => (a + b) / 2) };\n}\n\nexport const donchian = defineStudy({\n id: \"donchian\", name: \"Donchian Channels\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [len(20)], columns: [\"upper\", \"lower\", \"basis\"],\n plots: [band(\"band\", \"upper\", \"lower\", COLORS.blue, rgba(COLORS.blue, 0.08), \"Channel\"), line(\"basis\", COLORS.orange, { title: \"Basis\" })],\n label: (p) => `${p.length}`,\n build: (g, p) => { const c = channel(g, p.length); return [c.upper, c.lower, c.mid]; },\n reference: \"TradingView Donchian Channels: upper = ta.highest(high, n), lower = ta.lowest(low, n), basis = (upper + lower) / 2; equals TA-Lib MAX(high), MIN(low), MIDPRICE\",\n});\n\nexport const priceChannel = defineStudy({\n id: \"price-channel\", name: \"Price Channel\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [len(20)], columns: [\"upper\", \"lower\", \"center\"],\n plots: [line(\"upper\", COLORS.green, { title: \"Highest high\" }), line(\"lower\", COLORS.red, { title: \"Lowest low\" }), line(\"center\", COLORS.gray, { title: \"Center\", style: \"dashed\" })],\n label: (p) => `${p.length}`,\n build: (g, p) => { const c = channel(g, p.length); return [c.upper, c.lower, c.mid]; },\n reference: \"Price Channel: highest high and lowest low of the last n bars with their midline; equals TA-Lib MAX(high), MIN(low), MIDPRICE\",\n});\n\nexport const chandeKrollStop = defineStudy({\n id: \"chande-kroll-stop\", name: \"Chande Kroll Stop\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [int(\"p\", 10, 1, 5000), float(\"x\", 1, 0, 100, 0.25), int(\"q\", 9, 1, 5000)],\n columns: [\"stopShort\", \"stopLong\"],\n plots: [line(\"stopShort\", COLORS.red, { title: \"Stop short\" }), line(\"stopLong\", COLORS.green, { title: \"Stop long\" })],\n label: (p) => `${p.p}, ${p.x}, ${p.q}`,\n build: (g, p) => {\n const a = g.map(atrTv(g, p.p), (v) => v * p.x);\n const firstHigh = g.sub(g.highest(g.high, p.p), a), firstLow = g.add(g.lowest(g.low, p.p), a);\n return [g.highest(firstHigh, p.q), g.lowest(firstLow, p.q)];\n },\n reference: \"TradingView Chande Kroll Stop: first_high = ta.highest(high, p) - x * ta.atr(p); first_low = ta.lowest(low, p) + x * ta.atr(p); stop_short = ta.highest(first_high, q); stop_long = ta.lowest(first_low, q)\",\n});\n\nexport const linregChannel = defineStudy({\n id: \"linreg-channel\", name: \"Linear Regression Channel\", family: \"tv\", needs: \"value\", pane: \"overlay\",\n inputs: [len(100, 2), float(\"upperDev\", 2, 0, 100, 0.25), float(\"lowerDev\", 2, 0, 100, 0.25), source()],\n columns: [\"base\", \"upper\", \"lower\"],\n plots: [line(\"base\", COLORS.orange, { title: \"Base\" }), band(\"band\", \"upper\", \"lower\", COLORS.blue, rgba(COLORS.blue, 0.08), \"Channel\")],\n label: (p) => `${p.length}, ${p.upperDev}, ${p.lowerDev}`,\n build: (g, p) => {\n const n: number = p.length;\n const x = g.src(p.source), r = linregFit(g, x, n);\n // population standard deviation of the residuals y_j - (intercept + slope * j) over the window\n const dev = g.node((s, a, b) => {\n const xv = x.v, sl = r.slope.v, ib = r.intercept.v, v = s.v;\n for (let i = a; i < b; i++) {\n const m = sl[i]!, c0 = ib[i]!;\n if (m !== m) { v[i] = NaN_; continue; }\n let t = 0;\n for (let j = 0; j < n; j++) { const e = xv[i - n + 1 + j]! - (c0 + m * j); t += e * e; }\n v[i] = Math.sqrt(t / n);\n }\n });\n return [r.value, g.map2(r.value, dev, (v, d) => v + p.upperDev * d), g.map2(r.value, dev, (v, d) => v - p.lowerDev * d)];\n },\n reference: \"TradingView Linear Regression Channel: base = linear regression value at the newest bar over n bars (Pine ta.linreg(src, n, 0)), bands = base +- deviation * population stdev of the residuals. TradingView draws the tool as one anchored segment between two chosen bars; this study is the rolling per-bar form (each bar's own n-bar fit, newest point), not the anchored line.\",\n});\n\nexport const median = defineStudy({\n id: \"median\", name: \"Median\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [len(3), int(\"atrLength\", 14, 1, 5000), float(\"mult\", 2, 0, 100, 0.25), source(\"hl2\")],\n columns: [\"median\", \"upper\", \"lower\"],\n plots: [line(\"median\", COLORS.blue, { title: \"Median\" }), band(\"band\", \"upper\", \"lower\", COLORS.gray, rgba(COLORS.gray, 0.08), \"ATR band\")],\n label: (p) => `${p.length}, ${p.atrLength}, ${p.mult}`,\n build: (g, p) => {\n const n: number = p.length;\n const x = g.src(p.source), cnt = g.validRun(x);\n const med = g.node((s, a, b) => {\n const xv = x.v, c = cnt.v, v = s.v, w = new Float64Array(n);\n for (let i = a; i < b; i++) {\n if (c[i]! < n) { v[i] = NaN_; continue; }\n for (let j = 0; j < n; j++) w[j] = xv[i - n + 1 + j]!;\n w.sort();\n // even n: mean of the two middle values\n v[i] = n % 2 === 1 ? w[(n - 1) / 2]! : (w[n / 2 - 1]! + w[n / 2]!) / 2;\n }\n });\n const r = g.map(atrTv(g, p.atrLength), (v) => v * p.mult);\n return [med, g.add(med, r), g.sub(med, r)];\n },\n reference: \"TradingView Median: rolling median of src (hl2) over n bars with an ATR band, median +- mult * ta.atr(atrLength). The band construction follows the task's definition; an even n takes the mean of the two middle values.\",\n});\n\n// ---- Ichimoku -------------------------------------------------------------------\n\n/** The Ichimoku displacement (TradingView's input default); plots shift by displacement - 1. */\nconst DISPLACEMENT = 26;\n\nexport const ichimoku = defineStudy({\n id: \"ichimoku\", name: \"Ichimoku Cloud\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [int(\"conversion\", 9, 1, 5000), int(\"base\", 26, 1, 5000), int(\"spanB\", 52, 1, 5000)],\n columns: [\"conversion\", \"base\", \"spanA\", \"spanB\", \"lagging\"],\n plots: [\n line(\"conversion\", COLORS.blue, { title: \"Conversion line\" }),\n line(\"base\", COLORS.red, { title: \"Base line\" }),\n fillBetween(\"cloud\", \"spanA\", \"spanB\", COLORS.green, \"Cloud\"),\n line(\"spanA\", COLORS.green, { title: \"Leading span A\", offset: DISPLACEMENT - 1 }),\n line(\"spanB\", COLORS.orange, { title: \"Leading span B\", offset: DISPLACEMENT - 1 }),\n line(\"lagging\", COLORS.purple, { title: \"Lagging span\", offset: -(DISPLACEMENT - 1) }),\n ],\n label: (p) => `${p.conversion}, ${p.base}, ${p.spanB}, ${DISPLACEMENT}`,\n build: (g, p) => {\n const conv = channel(g, p.conversion).mid, base = channel(g, p.base).mid;\n const a = g.map2(conv, base, (x, y) => (x + y) / 2);\n return [conv, base, a, channel(g, p.spanB).mid, g.map(g.close, (x) => x)];\n },\n reference: \"TradingView Ichimoku Cloud: donchian(n) = (ta.highest(high, n) + ta.lowest(low, n)) / 2; conversion = donchian(9), base = donchian(26), span A = (conversion + base) / 2, span B = donchian(52), lagging = close; leading spans plotted with offset displacement - 1 = 25, the lagging span with -25 (TradingView's own plot offsets for displacement 26). Columns hold the undisplaced values.\",\n});\n\n// ---- Supertrend -----------------------------------------------------------------\n\nexport const supertrend = defineStudy({\n id: \"supertrend\", name: \"Supertrend\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [int(\"atrLength\", 10, 1, 5000), float(\"factor\", 3, 0.1, 100, 0.1)],\n columns: [\"up\", \"down\", \"direction\"],\n plots: [line(\"up\", COLORS.green, { title: \"Up trend\" }), line(\"down\", COLORS.red, { title: \"Down trend\" })],\n label: (p) => `${p.factor}, ${p.atrLength}`,\n build: (g, p) => {\n const { high, low, close } = g;\n const atr = atrTv(g, p.atrLength);\n const lb = g.col(), ub = g.col(), dr = g.col(), st = g.col();\n const main = g.node((s, a, b) => {\n const h = high.v, l = low.v, c = close.v, at = atr.v, lo = lb.v, up = ub.v, d = dr.v, t = st.v;\n for (let i = a; i < b; i++) {\n const r = at[i]!;\n if (r !== r) { lo[i] = NaN_; up[i] = NaN_; d[i] = NaN_; t[i] = NaN_; s.v[i] = NaN_; continue; }\n const mid = (h[i]! + l[i]!) / 2;\n let lower = mid - p.factor * r, upper = mid + p.factor * r;\n const first = i === 0 || lo[i - 1]! !== lo[i - 1]!;\n if (!first) {\n const pl = lo[i - 1]!, pu = up[i - 1]!, pc = c[i - 1]!;\n lower = lower > pl || pc < pl ? lower : pl;\n upper = upper < pu || pc > pu ? upper : pu;\n }\n let dir: number;\n // Pine: na(atr[1]) -> 1; prev supertrend was the upper band -> down unless close breaks it\n if (first) dir = 1;\n else if (t[i - 1]! === up[i - 1]!) dir = c[i]! > upper ? -1 : 1;\n else dir = c[i]! < lower ? 1 : -1;\n lo[i] = lower; up[i] = upper; d[i] = dir;\n t[i] = dir === -1 ? lower : upper;\n s.v[i] = dir;\n }\n });\n return [g.calc((i) => (dr.v[i] === -1 ? st.v[i]! : NaN_)), g.calc((i) => (dr.v[i] === 1 ? st.v[i]! : NaN_)), main];\n },\n reference: \"Pine ta.supertrend(factor, atrPeriod): bands hl2 +- factor * ta.atr; direction is Pine's: -1 = uptrend (line below price, column `up`), 1 = downtrend (line above price, column `down`)\",\n});\n\n// ---- Alligator ------------------------------------------------------------------\n\nexport const alligator = defineStudy({\n id: \"alligator\", name: \"Williams Alligator\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [int(\"jawLength\", 13, 1, 5000), int(\"teethLength\", 8, 1, 5000), int(\"lipsLength\", 5, 1, 5000), source(\"hl2\")],\n columns: [\"jaw\", \"teeth\", \"lips\"],\n plots: [\n line(\"jaw\", COLORS.blue, { title: \"Jaw\", offset: 8 }),\n line(\"teeth\", COLORS.red, { title: \"Teeth\", offset: 5 }),\n line(\"lips\", COLORS.green, { title: \"Lips\", offset: 3 }),\n ],\n label: (p) => `${p.jawLength}, ${p.teethLength}, ${p.lipsLength}`,\n build: (g, p) => { const x = g.src(p.source); return [g.rma(x, p.jawLength), g.rma(x, p.teethLength), g.rma(x, p.lipsLength)]; },\n reference: \"TradingView Williams Alligator: jaw = smma(hl2, 13) shifted 8 bars, teeth = smma(hl2, 8) shifted 5, lips = smma(hl2, 5) shifted 3 (the shifts are fixed plot offsets, not inputs)\",\n});\n\n// ---- Fractals -------------------------------------------------------------------\n\n/** Williams fractals look n bars to each side. The plot offsets (-2) are static, so n is fixed. */\nconst FRACTAL_N = 2;\n/** Equal highs/lows tolerated on the left side of the extreme before the strictly beyond bar. */\nconst FRACTAL_TIES = 4;\n\nfunction fractal(g: Graph, x: Col, isHigh: boolean): Node {\n const n = FRACTAL_N;\n return g.node((s, a, b) => {\n const xv = x.v, v = s.v;\n for (let i = a; i < b; i++) {\n v[i] = NaN_;\n const c = i - n;\n if (c < 0) continue;\n const e = xv[c]!;\n const beyond = (y: number) => (isHigh ? y < e : y > e);\n let ok = true;\n for (let j = 1; j <= n && ok; j++) ok = beyond(xv[c + j]!);\n if (!ok) continue;\n let t = 0;\n while (t <= FRACTAL_TIES && c - 1 - t >= 0 && xv[c - 1 - t]! === e) t++;\n const k = c - 1 - t;\n if (t <= FRACTAL_TIES && k >= 0 && beyond(xv[k]!)) v[i] = e;\n }\n });\n}\n\nexport const fractals = defineStudy({\n id: \"fractals\", name: \"Williams Fractals\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [], columns: [\"up\", \"down\"],\n plots: [\n markers(\"up\", \"triangleUp\", \"above\", COLORS.green, { title: \"Up fractal\", offset: -FRACTAL_N }),\n markers(\"down\", \"triangleDown\", \"below\", COLORS.red, { title: \"Down fractal\", offset: -FRACTAL_N }),\n ],\n // A fractal at bar c needs bars c+1..c+n, so it is known at bar c+n: the columns hold the fractal's price at that\n // CONFIRMATION bar and the plots shift the marker back by n onto the fractal's own bar.\n build: (g) => [fractal(g, g.high, true), fractal(g, g.low, false)],\n reference: \"TradingView Williams Fractals (n = 2): high[n] strictly above the n bars after it, and above the bars before it allowing up to four tied equal highs followed by a strictly lower one; mirrored for lows. Confirmed n bars late.\",\n});\n\n// ---- ZigZag ---------------------------------------------------------------------\n//\n// Not a closed-form TradingView study, so the algorithm is defined here and is\n// causal (a bar only ever uses bars up to itself):\n// - The first pivot appears once price has moved `deviation` % off the running\n// low (a low pivot) or the running high (a high pivot) seen since bar 0.\n// - After a low pivot the leg runs up: its running extreme is the highest high.\n// The extreme becomes a high pivot when a later bar's low is `deviation` %\n// below it (the extreme was not exceeded on that bar). Mirrored after a high.\n// - depth: a pivot is confirmed no sooner than `depth` bars after the previous\n// pivot's bar, which keeps legs from being confirmed on the bar after the last\n// pivot. (It delays a confirmation, it never changes the pivot found.)\n// - `price` holds the pivot's price at the bar where it is CONFIRMED and `back`\n// the number of bars from there to the pivot bar (the chart draws the pivot at\n// confirmation bar - back). Pivots alternate high/low by construction.\n// - The unconfirmed running extreme of the current leg is the last point of the\n// line: columns `live` (its price) and `liveBack` (bars back from this bar)\n// carry it on every bar. It can still move or be abandoned, so it is not in\n// `price`, which is final; a renderer joins the last pivot to it.\n\nexport const zigzag = defineStudy({\n id: \"zigzag\", name: \"ZigZag\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [float(\"deviation\", 5, 0.01, 100, 0.5), int(\"depth\", 10, 1, 5000)],\n columns: [\"price\", \"back\", \"live\", \"liveBack\"],\n plots: [{ kind: \"zigzag\", key: \"zigzag\", title: \"ZigZag\", price: \"price\", back: \"back\", color: COLORS.blue, width: 2 } satisfies PlotDef],\n label: (p) => `${p.deviation}, ${p.depth}`,\n build: (g, p) => {\n const { high, low } = g;\n const d: number = p.deviation / 100, depth: number = p.depth;\n // state per bar: dir 0 = no pivot yet, 1 = leg up (looking for a high), -1 = leg down\n const dir = g.col(), exP = g.col(), exI = g.col(), pvI = g.col(), hP = g.col(), hI = g.col(), lP = g.col(), lI = g.col();\n const back = g.col(), live = g.col(), liveBack = g.col();\n const price = g.node((s, a, b) => {\n const H = high.v, L = low.v, v = s.v;\n for (let i = a; i < b; i++) {\n let dr = 0, eP = NaN_, eI = NaN_, pI = NaN_, hp = H[i]!, hi = i, lp = L[i]!, li = i;\n if (i > 0) { dr = dir.v[i - 1]!; eP = exP.v[i - 1]!; eI = exI.v[i - 1]!; pI = pvI.v[i - 1]!; hp = hP.v[i - 1]!; hi = hI.v[i - 1]!; lp = lP.v[i - 1]!; li = lI.v[i - 1]!; }\n let out = NaN_, ob = NaN_;\n if (dr === 0) {\n if (H[i]! > hp) { hp = H[i]!; hi = i; }\n if (L[i]! < lp) { lp = L[i]!; li = i; }\n if (hi > li && hp >= lp * (1 + d)) { out = lp; ob = i - li; pI = li; dr = 1; eP = hp; eI = hi; }\n else if (li > hi && lp <= hp * (1 - d)) { out = hp; ob = i - hi; pI = hi; dr = -1; eP = lp; eI = li; }\n } else if (dr === 1) {\n if (H[i]! > eP) { eP = H[i]!; eI = i; }\n else if (L[i]! <= eP * (1 - d) && i - pI >= depth) { out = eP; ob = i - eI; pI = eI; dr = -1; eP = L[i]!; eI = i; }\n } else {\n if (L[i]! < eP) { eP = L[i]!; eI = i; }\n else if (H[i]! >= eP * (1 + d) && i - pI >= depth) { out = eP; ob = i - eI; pI = eI; dr = 1; eP = H[i]!; eI = i; }\n }\n dir.v[i] = dr; exP.v[i] = eP; exI.v[i] = eI; pvI.v[i] = pI;\n hP.v[i] = hp; hI.v[i] = hi; lP.v[i] = lp; lI.v[i] = li;\n v[i] = out; back.v[i] = ob;\n live.v[i] = dr === 0 ? NaN_ : eP;\n liveBack.v[i] = dr === 0 ? NaN_ : i - eI;\n }\n });\n return [price, g.alias(back), g.alias(live), g.alias(liveBack)];\n },\n reference: \"ZigZag as defined in this file's header: percentage-reversal pivots on high/low with a minimum spacing in bars, confirmed causally\",\n});\n","// TradingView built-in oscillators. Each study cites the TradingView/Pine v5\n// definition it implements. Shared deviation: `ema` and `rma` seed with the\n// simple mean of the first `length` values (the engine's, TA-Lib's seeding);\n// Pine's ta.ema seeds with the first value. The two differ only in the first\n// bars and converge geometrically ((1 - alpha)^bars).\n\nimport { COLORS, bool, defineStudy, hist, hline, int, line, select, source } from \"../define.js\";\nimport type { Col, Graph, Node } from \"../engine/graph.js\";\n\nconst NaN_ = Number.NaN;\n\n// ---- local helpers (all state in columns) -----------------------------------\n\n/** Pine ta.roc: 100 * (x - x[n]) / x[n]. */\nfunction roc(g: Graph, x: Col, n: number): Node {\n return g.node((s, a, b) => {\n const xv = x.v, v = s.v;\n for (let i = a; i < b; i++) {\n const p = i >= n ? xv[i - n]! : NaN_;\n v[i] = p === 0 ? NaN_ : (100 * (xv[i]! - p)) / p;\n }\n });\n}\n\n/** Pine ta.rsi from up/down Wilder means: down == 0 -> 100, up == 0 -> 0. */\nfunction rsiOf(g: Graph, x: Col, n: number): Node {\n const ch = g.change(x, 1);\n const up = g.map(ch, (d) => (d > 0 ? d : d === d ? 0 : NaN_));\n const dn = g.map(ch, (d) => (d < 0 ? -d : d === d ? 0 : NaN_));\n const au = g.rma(up, n), ad = g.rma(dn, n);\n return g.map2(au, ad, (u, d) => (u !== u || d !== d ? NaN_ : d === 0 ? 100 : u === 0 ? 0 : 100 - 100 / (1 + u / d)));\n}\n\n/** ema(ema(x, a), b): TradingView's double_smooth(x, long = a, short = b). */\nfunction doubleEma(g: Graph, x: Col, a: number, b: number): Node {\n return g.ema(g.ema(x, a), b);\n}\n\n/** Pine ta.swma: (x + 2 x[1] + 2 x[2] + x[3]) / 6. */\nfunction swma(g: Graph, x: Col): Node {\n return g.calc((i) => (i >= 3 ? (x.v[i]! + 2 * x.v[i - 1]! + 2 * x.v[i - 2]! + x.v[i - 3]!) / 6 : NaN_));\n}\n\n/** Pine ta.tr(true): the first bar's true range is high - low. */\nfunction trFirstBar(g: Graph): Node {\n const { high, low, close } = g;\n return g.calc((i) => {\n const h = high.v[i]!, l = low.v[i]!;\n if (i === 0) return h - l;\n const pc = close.v[i - 1]!;\n return Math.max(h - l, Math.abs(h - pc), Math.abs(l - pc));\n });\n}\n\n/** Positive part where `x` rose, negative where it did not (for coloured histograms): up / down columns. */\nfunction risingFalling(g: Graph, x: Col): { up: Node; down: Node } {\n const d = g.change(x, 1);\n return { up: g.map2(x, d, (v, c) => (c > 0 ? v : NaN_)), down: g.map2(x, d, (v, c) => (c <= 0 ? v : NaN_)) };\n}\n\n/** 100 * (x - lowest) / (highest - lowest) over n bars, carrying the last value over a flat range (Pine fixnan). */\nfunction stochOf(g: Graph, x: Col, n: number): Node {\n const hi = g.highest(x, n), lo = g.lowest(x, n);\n return g.node((s, a, b) => {\n const xv = x.v, h = hi.v, l = lo.v, v = s.v;\n for (let i = a; i < b; i++) {\n const h1 = h[i]!, l1 = l[i]!;\n if (h1 !== h1 || l1 !== l1) { v[i] = NaN_; continue; }\n v[i] = h1 > l1 ? (100 * (xv[i]! - l1)) / (h1 - l1) : i > 0 ? v[i - 1]! : NaN_;\n }\n });\n}\n\n// ---- Fisher Transform -------------------------------------------------------\n\nexport const fisher = defineStudy({\n id: \"fisher\", name: \"Fisher Transform\", family: \"tv\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"length\", 9, 1, 5000)], columns: [\"fisher\", \"trigger\"],\n plots: [line(\"fisher\", COLORS.blue), line(\"trigger\", COLORS.orange), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const x = g.src(\"hl2\");\n const hi = g.highest(x, p.length), lo = g.lowest(x, p.length);\n // value = clamp(0.66 (pos - 0.5) + 0.67 nz(value[1]), +-0.999); a flat window leaves it absent (Pine: division by zero is na)\n const value = g.node((s, a, b) => {\n const xv = x.v, h = hi.v, l = lo.v, v = s.v;\n for (let i = a; i < b; i++) {\n const h1 = h[i]!, l1 = l[i]!;\n if (!(h1 > l1)) { v[i] = NaN_; continue; }\n const prev = i > 0 && v[i - 1]! === v[i - 1]! ? v[i - 1]! : 0;\n const r = 0.66 * ((xv[i]! - l1) / (h1 - l1) - 0.5) + 0.67 * prev;\n v[i] = r > 0.99 ? 0.999 : r < -0.99 ? -0.999 : r;\n }\n });\n const fish = g.node((s, a, b) => {\n const val = value.v, v = s.v;\n for (let i = a; i < b; i++) {\n const q = val[i]!;\n if (q !== q) { v[i] = NaN_; continue; }\n const prev = i > 0 && v[i - 1]! === v[i - 1]! ? v[i - 1]! : 0;\n v[i] = 0.5 * Math.log((1 + q) / (1 - q)) + 0.5 * prev;\n }\n });\n return [fish, g.lag(fish, 1)];\n },\n reference: \"TradingView 'Fisher Transform' (Pine v5): value = round(0.66 ((hl2 - lowest) / (highest - lowest) - 0.5) + 0.67 nz(value[1])), fish = 0.5 ln((1 + value) / (1 - value)) + 0.5 nz(fish[1]); trigger = fish[1]\",\n});\n\n// ---- Know Sure Thing --------------------------------------------------------\n\nexport const kst = defineStudy({\n id: \"kst\", name: \"Know Sure Thing\", family: \"tv\", needs: \"value\", pane: \"new\",\n inputs: [\n int(\"roc1\", 10, 1, 5000), int(\"roc2\", 15, 1, 5000), int(\"roc3\", 20, 1, 5000), int(\"roc4\", 30, 1, 5000),\n int(\"sma1\", 10, 1, 5000), int(\"sma2\", 10, 1, 5000), int(\"sma3\", 10, 1, 5000), int(\"sma4\", 15, 1, 5000),\n int(\"signal\", 9, 1, 5000), source(),\n ],\n columns: [\"kst\", \"signal\"],\n plots: [line(\"kst\", COLORS.green), line(\"signal\", COLORS.red), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.roc1} ${p.roc2} ${p.roc3} ${p.roc4} ${p.sma1} ${p.sma2} ${p.sma3} ${p.sma4} ${p.signal}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const parts = [1, 2, 3, 4].map((k) => g.sma(roc(g, x, p[`roc${k}`]), p[`sma${k}`]));\n const k = g.calc((i) => parts[0]!.v[i]! + 2 * parts[1]!.v[i]! + 3 * parts[2]!.v[i]! + 4 * parts[3]!.v[i]!);\n return [k, g.sma(k, p.signal)];\n },\n reference: \"TradingView 'Know Sure Thing': kst = sma(roc(c,10),10) + 2 sma(roc(c,15),10) + 3 sma(roc(c,20),10) + 4 sma(roc(c,30),15); signal = sma(kst, 9)\",\n});\n\n// ---- True Strength Index ----------------------------------------------------\n\nexport const tsi = defineStudy({\n id: \"tsi\", name: \"True Strength Index\", family: \"tv\", needs: \"value\", pane: \"new\",\n inputs: [int(\"long\", 25, 1, 5000), int(\"short\", 13, 1, 5000), int(\"signal\", 13, 1, 5000), source()],\n columns: [\"tsi\", \"signal\"],\n plots: [line(\"tsi\", COLORS.blue), line(\"signal\", COLORS.red), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.long} ${p.short} ${p.signal}`,\n build: (g, p) => {\n const pc = g.change(g.src(p.source), 1);\n const num = doubleEma(g, pc, p.long, p.short);\n const den = doubleEma(g, g.abs(pc), p.long, p.short);\n const t = g.mul(g.div(num, den), 100);\n return [t, g.ema(t, p.signal)];\n },\n reference: \"TradingView 'True Strength Index' (Pine v5): 100 ema(ema(change(src), long), short) / ema(ema(abs(change(src)), long), short); signal = ema(tsi, 13)\",\n});\n\n// ---- Vortex Indicator -------------------------------------------------------\n\nexport const vortex = defineStudy({\n id: \"vortex\", name: \"Vortex Indicator\", family: \"tv\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"length\", 14, 2, 5000)], columns: [\"viPlus\", \"viMinus\"],\n plots: [line(\"viPlus\", COLORS.blue, { title: \"VI+\" }), line(\"viMinus\", COLORS.red, { title: \"VI-\" })],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const { high, low } = g;\n const vmp = g.calc((i) => (i >= 1 ? Math.abs(high.v[i]! - low.v[i - 1]!) : NaN_));\n const vmm = g.calc((i) => (i >= 1 ? Math.abs(low.v[i]! - high.v[i - 1]!) : NaN_));\n const str = g.sum(trFirstBar(g), p.length);\n return [g.div(g.sum(vmp, p.length), str), g.div(g.sum(vmm, p.length), str)];\n },\n reference: \"TradingView 'Vortex Indicator' (Pine v5): VI+ = sum(|high - low[1]|, n) / sum(atr(1), n); VI- = sum(|low - high[1]|, n) / sum(atr(1), n)\",\n});\n\n// ---- Coppock Curve ----------------------------------------------------------\n\nexport const coppock = defineStudy({\n id: \"coppock\", name: \"Coppock Curve\", family: \"tv\", needs: \"value\", pane: \"new\",\n inputs: [int(\"length\", 10, 1, 5000, \"WMA length\"), int(\"longRoc\", 14, 1, 5000, \"Long ROC length\"), int(\"shortRoc\", 11, 1, 5000, \"Short ROC length\"), source()],\n columns: [\"coppock\"],\n plots: [line(\"coppock\", COLORS.blue), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length} ${p.longRoc} ${p.shortRoc}`,\n build: (g, p) => {\n const x = g.src(p.source);\n return [g.wma(g.add(roc(g, x, p.longRoc), roc(g, x, p.shortRoc)), p.length)];\n },\n reference: \"TradingView 'Coppock Curve' (Pine v5): wma(roc(src, 14) + roc(src, 11), 10)\",\n});\n\n// ---- Connors RSI ------------------------------------------------------------\n\nexport const connorsRsi = defineStudy({\n id: \"connors-rsi\", name: \"Connors RSI\", family: \"tv\", needs: \"value\", pane: \"new\",\n inputs: [int(\"rsiLength\", 3, 1, 5000), int(\"updownLength\", 2, 1, 5000), int(\"rocLength\", 100, 1, 5000), source()],\n columns: [\"crsi\"],\n plots: [line(\"crsi\", COLORS.blue), hline(\"upper\", 70), hline(\"lower\", 30), hline(\"middle\", 50, COLORS.gray, \"dotted\")],\n label: (p) => `${p.rsiLength} ${p.updownLength} ${p.rocLength}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const rsi = rsiOf(g, x, p.rsiLength);\n // streak length: +1, +2.. while rising, -1, -2.. while falling, 0 when unchanged (the first bar has no streak)\n const ud = g.node((s, a, b) => {\n const xv = x.v, v = s.v;\n for (let i = a; i < b; i++) {\n if (i === 0 || xv[i]! !== xv[i]! || xv[i - 1]! !== xv[i - 1]!) { v[i] = NaN_; continue; }\n const prev = v[i - 1]! === v[i - 1]! ? v[i - 1]! : 0;\n const c = xv[i]!, q = xv[i - 1]!;\n v[i] = c === q ? 0 : c > q ? (prev <= 0 ? 1 : prev + 1) : prev >= 0 ? -1 : prev - 1;\n }\n });\n const udRsi = rsiOf(g, ud, p.updownLength);\n // Pine ta.percentrank(roc(src, 1), n): share of the previous n values <= the current one\n const r1 = roc(g, x, 1);\n const cnt = g.validRun(r1);\n const rank = g.node((s, a, b) => {\n const rv = r1.v, c = cnt.v, v = s.v;\n for (let i = a; i < b; i++) {\n if (c[i]! < p.rocLength + 1) { v[i] = NaN_; continue; }\n let k = 0;\n for (let j = 1; j <= p.rocLength; j++) if (rv[i - j]! <= rv[i]!) k++;\n v[i] = (100 * k) / p.rocLength;\n }\n });\n return [g.calc((i) => (rsi.v[i]! + udRsi.v[i]! + rank.v[i]!) / 3)];\n },\n reference: \"TradingView 'Connors RSI' (Pine v5): avg(rsi(src, 3), rsi(updown streak, 2), percentrank(roc(src, 1), 100)); the first bar has no streak (absent)\",\n});\n\n// ---- Choppiness Index -------------------------------------------------------\n\nexport const choppiness = defineStudy({\n id: \"choppiness\", name: \"Choppiness Index\", family: \"tv\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"length\", 14, 2, 5000)], columns: [\"chop\"],\n plots: [line(\"chop\", COLORS.blue), hline(\"upper\", 61.8, COLORS.gray, \"dashed\"), hline(\"lower\", 38.2, COLORS.gray, \"dashed\")],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const atrSum = g.sum(trFirstBar(g), p.length);\n const range = g.sub(g.highest(g.high, p.length), g.lowest(g.low, p.length));\n const ratio = g.div(atrSum, range);\n const k = 100 / Math.log10(p.length);\n return [g.map(ratio, (r) => (r > 0 ? k * Math.log10(r) : NaN_))];\n },\n reference: \"TradingView 'Choppiness Index' (Pine v5): 100 log10(sum(atr(1), n) / (highest(high, n) - lowest(low, n))) / log10(n)\",\n});\n\n// ---- Relative Vigor Index ---------------------------------------------------\n\nexport const rviVigor = defineStudy({\n id: \"rvi-vigor\", name: \"Relative Vigor Index\", family: \"tv\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"length\", 10, 1, 5000)], columns: [\"rvi\", \"signal\"],\n plots: [line(\"rvi\", COLORS.green), line(\"signal\", COLORS.red)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const num = g.sma(swma(g, g.sub(g.close, g.open)), p.length);\n const den = g.sma(swma(g, g.sub(g.high, g.low)), p.length);\n const rvi = g.div(num, den);\n return [rvi, swma(g, rvi)];\n },\n reference: \"TradingView 'Relative Vigor Index' (Pine v5): rvi = sma(swma(close - open), n) / sma(swma(high - low), n); signal = swma(rvi)\",\n});\n\n// ---- Relative Volatility Index ----------------------------------------------\n\nexport const rviVolatility = defineStudy({\n id: \"rvi-volatility\", name: \"Relative Volatility Index\", family: \"tv\", needs: \"value\", pane: \"new\",\n inputs: [int(\"length\", 10, 2, 5000, \"StdDev length\"), int(\"smoothing\", 14, 1, 5000), select(\"ma\", \"ema\", [\"ema\", \"rma\"], \"Smoothing\"), source()],\n columns: [\"rvi\"],\n plots: [line(\"rvi\", COLORS.purple), hline(\"upper\", 80), hline(\"lower\", 20), hline(\"middle\", 50, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length} ${p.smoothing}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const sd = g.stdev(x, p.length), ch = g.change(x, 1);\n // both legs are absent until the stdev exists, so their smoothing starts on the same bar\n const upIn = g.map2(ch, sd, (c, s) => (c !== c || s !== s ? NaN_ : c <= 0 ? 0 : s));\n const dnIn = g.map2(ch, sd, (c, s) => (c !== c || s !== s ? NaN_ : c > 0 ? 0 : s));\n const sm = (c: Col) => (p.ma === \"rma\" ? g.rma(c, p.smoothing) : g.ema(c, p.smoothing));\n const up = sm(upIn), dn = sm(dnIn);\n return [g.mul(g.div(up, g.add(up, dn)), 100)];\n },\n reference: \"TradingView 'Relative Volatility Index' (Pine v5): upper = ema(change(src) <= 0 ? 0 : stdev(src, 10), 14), lower = ema(change(src) > 0 ? 0 : stdev, 14), rvi = 100 upper / (upper + lower); ma 'rma' gives Dorsey's Wilder form\",\n});\n\n// ---- SMI Ergodic ------------------------------------------------------------\n\nexport const smiErgodic = defineStudy({\n id: \"smi-ergodic\", name: \"SMI Ergodic Indicator/Oscillator\", family: \"tv\", needs: \"value\", pane: \"new\",\n inputs: [int(\"longLength\", 5, 1, 5000), int(\"shortLength\", 20, 1, 5000), int(\"signal\", 5, 1, 5000), source()],\n columns: [\"erg\", \"signal\", \"osc\"],\n plots: [hist(\"osc\", COLORS.gray, COLORS.gray, { title: \"Oscillator\" }), line(\"erg\", COLORS.blue, { title: \"SMI Ergodic\" }), line(\"signal\", COLORS.red), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.longLength} ${p.shortLength} ${p.signal}`,\n build: (g, p) => {\n const pc = g.change(g.src(p.source), 1);\n const erg = g.mul(g.div(doubleEma(g, pc, p.longLength, p.shortLength), doubleEma(g, g.abs(pc), p.longLength, p.shortLength)), 100);\n const sig = g.ema(erg, p.signal);\n return [erg, sig, g.sub(erg, sig)];\n },\n reference: \"TradingView 'SMI Ergodic Indicator/Oscillator' (Pine v5): erg = 100 ema(ema(change, long 5), short 20) / ema(ema(abs(change), 5), 20); signal = ema(erg, 5); oscillator = erg - signal\",\n});\n\n// ---- Spearman rank correlation against time ---------------------------------\n\nexport const rankCorr = defineStudy({\n id: \"rank-corr\", name: \"Rank Correlation vs Time\", family: \"tv\", needs: \"value\", pane: \"new\",\n inputs: [int(\"length\", 14, 2, 500), source()], columns: [\"rho\"],\n plots: [line(\"rho\", COLORS.teal), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const cnt = g.validRun(x);\n const n: number = p.length;\n const m = (n + 1) / 2;\n const syy = (n * (n * n - 1)) / 12; // sum of squared deviations of the time ranks 1..n\n const rho = g.node((s, a, b) => {\n const xv = x.v, c = cnt.v, v = s.v;\n for (let i = a; i < b; i++) {\n if (c[i]! < n) { v[i] = NaN_; continue; }\n const o = i - n + 1;\n let sxy = 0, sxx = 0;\n for (let j = 0; j < n; j++) {\n const y = xv[o + j]!;\n let less = 0, eq = 0;\n for (let k = 0; k < n; k++) {\n const z = xv[o + k]!;\n if (z < y) less++;\n else if (z === y && k !== j) eq++;\n }\n const r = 1 + less + eq / 2; // tied values share the mean of their ranks\n sxy += (r - m) * (j + 1 - m);\n sxx += (r - m) * (r - m);\n }\n const den = Math.sqrt(sxx * syy);\n v[i] = den > 0 ? Math.max(-1, Math.min(1, sxy / den)) : NaN_;\n }\n });\n return [rho];\n },\n reference: \"Spearman's rho of the source against the bar index over a rolling window (not a TradingView built-in): Pearson correlation of the ranks, tied source values take the mean rank; a window of all equal values is absent\",\n});\n\n// ---- Elder Ray (Bull Bear Power) --------------------------------------------\n\nexport const bullBearPower = defineStudy({\n id: \"bull-bear-power\", name: \"Bull Bear Power\", family: \"tv\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"length\", 13, 1, 5000), source()], columns: [\"bull\", \"bear\"],\n plots: [hist(\"bull\", COLORS.green, COLORS.green, { title: \"Bull Power\" }), hist(\"bear\", COLORS.red, COLORS.red, { title: \"Bear Power\" }), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const e = g.ema(g.src(p.source), p.length);\n return [g.sub(g.high, e), g.sub(g.low, e)];\n },\n reference: \"Elder Ray (TradingView 'Bull Bear Power'): bull = high - ema(close, 13), bear = low - ema(close, 13)\",\n});\n\n// ---- Awesome and Accelerator ------------------------------------------------\n\nfunction aoOf(g: Graph, fast: number, slow: number): Node {\n const m = g.src(\"hl2\");\n return g.sub(g.sma(m, fast), g.sma(m, slow));\n}\n\nexport const awesome = defineStudy({\n id: \"awesome\", name: \"Awesome Oscillator\", family: \"tv\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"fast\", 5, 1, 5000), int(\"slow\", 34, 2, 5000)], columns: [\"ao\", \"up\", \"down\"],\n plots: [hist(\"up\", COLORS.green, undefined, { title: \"AO rising\" }), hist(\"down\", COLORS.red, undefined, { title: \"AO falling\" })],\n label: () => \"\",\n build: (g, p) => {\n if (p.fast >= p.slow) throw new RangeError(`awesome: fast (${p.fast}) must be below slow (${p.slow})`);\n const ao = aoOf(g, p.fast, p.slow);\n const { up, down } = risingFalling(g, ao);\n return [ao, up, down];\n },\n reference: \"TradingView 'Awesome Oscillator': sma(hl2, 5) - sma(hl2, 34); bar green when above the previous bar's value, red otherwise\",\n});\n\nexport const accelerator = defineStudy({\n id: \"accelerator\", name: \"Accelerator Oscillator\", family: \"tv\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"fast\", 5, 1, 5000), int(\"slow\", 34, 2, 5000), int(\"signal\", 5, 1, 5000)], columns: [\"ac\", \"up\", \"down\"],\n plots: [hist(\"up\", COLORS.green, undefined, { title: \"AC rising\" }), hist(\"down\", COLORS.red, undefined, { title: \"AC falling\" })],\n label: () => \"\",\n build: (g, p) => {\n if (p.fast >= p.slow) throw new RangeError(`accelerator: fast (${p.fast}) must be below slow (${p.slow})`);\n const ao = aoOf(g, p.fast, p.slow);\n const ac = g.sub(ao, g.sma(ao, p.signal));\n const { up, down } = risingFalling(g, ac);\n return [ac, up, down];\n },\n reference: \"Bill Williams / TradingView 'Accelerator Oscillator': AO - sma(AO, 5); bar green when above the previous bar's value, red otherwise\",\n});\n\n// ---- Mass Index -------------------------------------------------------------\n\nexport const massIndex = defineStudy({\n id: \"mass-index\", name: \"Mass Index\", family: \"tv\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"length\", 10, 1, 5000, \"Sum length\"), int(\"emaLength\", 9, 1, 5000)], columns: [\"mi\"],\n plots: [line(\"mi\", COLORS.blue)],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const e1 = g.ema(g.sub(g.high, g.low), p.emaLength);\n const e2 = g.ema(e1, p.emaLength);\n return [g.sum(g.div(e1, e2), p.length)];\n },\n reference: \"TradingView 'Mass Index' (Pine v5): sum(ema(high - low, 9) / ema(ema(high - low, 9), 9), length), length 10 (Dorsey's 25 via the input)\",\n});\n\n// ---- Detrended Price Oscillator ---------------------------------------------\n\nexport const dpo = defineStudy({\n id: \"dpo\", name: \"Detrended Price Oscillator\", family: \"tv\", needs: \"value\", pane: \"new\",\n inputs: [int(\"length\", 21, 1, 5000), bool(\"centered\", false), source()], columns: [\"dpo\"],\n plots: [line(\"dpo\", COLORS.teal), hline(\"zero\", 0, COLORS.gray, \"dotted\")],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const back = Math.floor(p.length / 2) + 1;\n const ma = g.sma(x, p.length);\n const out = p.centered\n ? g.calc((i) => (i >= back ? x.v[i - back]! - ma.v[i]! : NaN_))\n : g.calc((i) => (i >= back ? x.v[i]! - ma.v[i - back]! : NaN_));\n return [out];\n },\n reference: \"TradingView 'Detrended Price Oscillator' (Pine v5): barsback = floor(n/2) + 1; dpo = src - sma(src, n)[barsback]; centered: src[barsback] - sma(src, n), which TradingView draws shifted back by barsback bars (here the value stays on the bar that computes it)\",\n});\n\n// ---- Schaff Trend Cycle -----------------------------------------------------\n\nexport const schaffTc = defineStudy({\n id: \"schaff-tc\", name: \"Schaff Trend Cycle\", family: \"tv\", needs: \"value\", pane: \"new\",\n inputs: [int(\"fast\", 23, 1, 5000), int(\"slow\", 50, 2, 5000), int(\"cycle\", 10, 2, 5000), int(\"d1\", 3, 1, 5000), int(\"d2\", 3, 1, 5000), source()], columns: [\"stc\"],\n plots: [line(\"stc\", COLORS.blue), hline(\"upper\", 75), hline(\"lower\", 25)],\n label: (p) => `${p.fast} ${p.slow} ${p.cycle}`,\n build: (g, p) => {\n const x = g.src(p.source);\n const macd = g.sub(g.ema(x, p.fast), g.ema(x, p.slow));\n const d = g.ema(stochOf(g, macd, p.cycle), p.d1);\n const stc = g.ema(stochOf(g, d, p.cycle), p.d2);\n return [g.map(stc, (v) => (v > 100 ? 100 : v < 0 ? 0 : v))];\n },\n reference: \"TradingView 'Schaff Trend Cycle' (reproduced from the published script, not fetched): macd = ema(src,23) - ema(src,50); k = stoch(macd,10); d = ema(k,3); kd = stoch(d,10); stc = clamp(ema(kd,3), 0, 100); a flat range carries the last stoch (fixnan) and warm-up stays absent instead of nz-ed to 0\",\n});\n\n// ---- TradingView Stochastic -------------------------------------------------\n\nexport const stochTv = defineStudy({\n id: \"stoch-tv\", name: \"Stochastic\", family: \"tv\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"kLength\", 14, 1, 5000, \"%K length\"), int(\"kSmooth\", 1, 1, 5000, \"%K smoothing\"), int(\"dLength\", 3, 1, 5000, \"%D smoothing\")], columns: [\"k\", \"d\"],\n plots: [line(\"k\", COLORS.blue, { title: \"%K\" }), line(\"d\", COLORS.orange, { title: \"%D\" }), hline(\"upper\", 80), hline(\"lower\", 20), hline(\"middle\", 50, COLORS.gray, \"dotted\")],\n label: (p) => `${p.kLength} ${p.kSmooth} ${p.dLength}`,\n build: (g, p) => {\n const hh = g.highest(g.high, p.kLength), ll = g.lowest(g.low, p.kLength);\n const raw = g.mul(g.div(g.sub(g.close, ll), g.sub(hh, ll)), 100);\n const k = g.sma(raw, p.kSmooth);\n return [k, g.sma(k, p.dLength)];\n },\n reference: \"TradingView 'Stochastic' (Pine v5): k = sma(stoch(close, high, low, 14), 1), d = sma(k, 3); TA-Lib STOCH with fastk 14 / slowk sma 1 / slowd sma 3 (TA-Lib gives 0 on a flat range, here it is absent)\",\n});\n","// TradingView's volume-based studies, session/anchored VWAP, pivot points and\n// historical volatility, built from the built-in definitions and their default\n// parameters. Period boundaries (session, week, month, year) are computed from\n// the bar time shifted by `utcOffsetMinutes` (the exchange time zone); the\n// boundary state lives in columns, so appends and revisions equal a batch run.\n\nimport { COLORS, band, defineStudy, float, hist, int, line, select, source } from \"../define.js\";\nimport type { Col, Graph, Node } from \"../engine/graph.js\";\n\nconst NaN_ = Number.NaN;\nconst DAY_MS = 86_400_000;\n\n// ---- helpers ----------------------------------------------------------------------\n\n/** Proleptic Gregorian year and month (0..11) of a day count since 1970-01-01 (Hinnant's civil_from_days). */\nfunction civil(days: number): [number, number] {\n const z = days + 719468;\n const era = Math.floor(z / 146097);\n const doe = z - era * 146097;\n const yoe = Math.floor((doe - Math.floor(doe / 1460) + Math.floor(doe / 36524) - Math.floor(doe / 146096)) / 365);\n const doy = doe - (365 * yoe + Math.floor(yoe / 4) - Math.floor(yoe / 100));\n const mp = Math.floor((5 * doy + 2) / 153);\n const m = mp < 10 ? mp + 3 : mp - 9; // 1..12\n const y = yoe + era * 400 + (m <= 2 ? 1 : 0);\n return [y, m - 1];\n}\n\nexport type Period = \"day\" | \"week\" | \"month\" | \"year\";\n\n/** An integer naming the calendar period (in the exchange time zone) each bar falls in; weeks start on Monday. */\nfunction periodKey(g: Graph, period: Period, offsetMin: number): Node {\n const t = g.time;\n const off = offsetMin * 60_000;\n return g.calc((i) => {\n const day = Math.floor((t.v[i]! + off) / DAY_MS);\n switch (period) {\n case \"day\": return day;\n case \"week\": return Math.floor((day + 3) / 7); // 1970-01-01 was a Thursday; day 4 is the first Monday\n case \"month\": { const [y, m] = civil(day); return y * 12 + m; }\n case \"year\": return civil(day)[0];\n }\n });\n}\n\n/** Running sum of `term(i)` that restarts at bars where `fresh(i)` is true and is absent where `live(i)` is false. */\nfunction cum(g: Graph, term: (i: number) => number, fresh: (i: number) => boolean, live: (i: number) => boolean = () => true): Node {\n return g.node((s, a, b) => {\n const v = s.v;\n for (let i = a; i < b; i++) {\n if (!live(i)) { v[i] = NaN_; continue; }\n v[i] = (fresh(i) ? 0 : v[i - 1]!) + term(i);\n }\n });\n}\n\n/** The four VWAP series from cumulative pv, v and pv2: vwap, stdev, upper, lower (zero cumulative volume is absent). */\nfunction vwapOutputs(g: Graph, cpv: Col, cv: Col, cpv2: Col, mult: number): Node[] {\n const vw = g.calc((i) => (cv.v[i]! > 0 ? cpv.v[i]! / cv.v[i]! : NaN_));\n const sd = g.calc((i) => {\n const w = vw.v[i]!;\n const r = cpv2.v[i]! / cv.v[i]! - w * w;\n return w !== w ? NaN_ : r > 0 ? Math.sqrt(r) : 0;\n });\n return [vw, g.calc((i) => vw.v[i]! + mult * sd.v[i]!), g.calc((i) => vw.v[i]! - mult * sd.v[i]!)];\n}\n\nconst OFFSET = int(\"utcOffsetMinutes\", 0, -720, 840, \"UTC offset (minutes)\");\n\n// ---- volume -----------------------------------------------------------------------\n\nexport const volume = defineStudy({\n id: \"volume\", name: \"Volume\", family: \"tv\", needs: \"ohlcv\", pane: \"new\",\n inputs: [int(\"maLength\", 20, 1, 5000, \"MA length\")],\n columns: [\"volume\", \"up\", \"down\", \"ma\"],\n plots: [hist(\"up\", COLORS.green, undefined, { title: \"Volume (up)\" }), hist(\"down\", COLORS.red, undefined, { title: \"Volume (down)\" }), line(\"ma\", COLORS.yellow, { title: \"Volume MA\" })],\n label: (p) => `${p.maLength}`,\n build: (g, p) => {\n const { volume: v, open, close } = g;\n const up = g.calc((i) => (close.v[i]! > open.v[i]! ? v.v[i]! : NaN_));\n const dn = g.calc((i) => (close.v[i]! > open.v[i]! ? NaN_ : v.v[i]!));\n return [g.calc((i) => v.v[i]!), up, dn, g.sma(v, p.maLength)];\n },\n reference: \"TradingView Volume: histogram of volume, green when close > open, red otherwise; MA is ta.sma(volume, 20). Verified against TA-Lib SMA for the MA.\",\n});\n\n// ---- volume oscillator ------------------------------------------------------------\n\nexport const volumeOsc = defineStudy({\n id: \"volume-osc\", name: \"Volume Oscillator\", family: \"tv\", needs: \"ohlcv\", pane: \"new\",\n inputs: [int(\"short\", 5, 1, 5000, \"Short length\"), int(\"long\", 10, 1, 5000, \"Long length\")],\n columns: [\"osc\"],\n plots: [line(\"osc\", COLORS.blue, { title: \"Volume Oscillator\" })],\n label: (p) => `${p.short}, ${p.long}`,\n build: (g, p) => {\n const s = g.ema(g.volume, p.short), l = g.ema(g.volume, p.long);\n return [g.map2(s, l, (a, b) => (b === 0 ? NaN_ : (100 * (a - b)) / b))];\n },\n reference: \"TradingView Volume Oscillator: 100 * (ta.ema(volume, 5) - ta.ema(volume, 10)) / ta.ema(volume, 10). Equals TA-Lib PPO(volume, 5, 10, EMA).\",\n});\n\n// ---- cumulative / flow ------------------------------------------------------------\n\nexport const pvt = defineStudy({\n id: \"pvt\", name: \"Price Volume Trend\", family: \"tv\", needs: \"ohlcv\", pane: \"new\",\n inputs: [], columns: [\"pvt\"],\n plots: [line(\"pvt\", COLORS.blue, { title: \"PVT\" })],\n build: (g) => {\n const { close, volume: vol } = g;\n // ta.pvt = ta.cum(ta.change(close) / close[1] * volume); the first bar has no change, so it is absent.\n const term = g.calc((i) => (i === 0 ? NaN_ : ((close.v[i]! - close.v[i - 1]!) / close.v[i - 1]!) * vol.v[i]!));\n return [cum(g, (i) => term.v[i]!, (i) => i <= 1, (i) => i >= 1)];\n },\n reference: \"Pine ta.pvt = ta.cum(ta.change(close) / close[1] * volume)\",\n});\n\nexport const netVolume = defineStudy({\n id: \"net-volume\", name: \"Net Volume\", family: \"tv\", needs: \"ohlcv\", pane: \"new\",\n inputs: [], columns: [\"netVolume\"],\n plots: [hist(\"netVolume\", COLORS.green, COLORS.red, { title: \"Net Volume\" })],\n build: (g) => {\n const { close, volume: vol } = g;\n return [g.calc((i) => {\n if (i === 0) return NaN_;\n const d = close.v[i]! - close.v[i - 1]!;\n return d > 0 ? vol.v[i]! : d < 0 ? -vol.v[i]! : 0;\n })];\n },\n reference: \"TradingView Net Volume: volume signed by the sign of ta.change(close) (zero on an unchanged close)\",\n});\n\nexport const elderForce = defineStudy({\n id: \"elder-force\", name: \"Elder's Force Index\", family: \"tv\", needs: \"ohlcv\", pane: \"new\",\n inputs: [int(\"length\", 13, 1, 5000)], columns: [\"efi\"],\n plots: [line(\"efi\", COLORS.red, { title: \"EFI\" })],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const { close, volume: vol } = g;\n const raw = g.calc((i) => (i === 0 ? NaN_ : (close.v[i]! - close.v[i - 1]!) * vol.v[i]!));\n return [g.ema(raw, p.length)];\n },\n reference: \"TradingView Elder's Force Index: ta.ema(ta.change(close) * volume, 13)\",\n});\n\nexport const eom = defineStudy({\n id: \"eom\", name: \"Ease of Movement\", family: \"tv\", needs: \"ohlcv\", pane: \"new\",\n inputs: [int(\"length\", 14, 1, 5000), int(\"divisor\", 10000, 1, 1_000_000_000)], columns: [\"eom\"],\n plots: [line(\"eom\", COLORS.teal, { title: \"EOM\" })],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const { high, low, volume: vol } = g;\n const hl2 = g.src(\"hl2\");\n const num = g.calc((i) => (i === 0 ? NaN_ : p.divisor * (hl2.v[i]! - hl2.v[i - 1]!) * (high.v[i]! - low.v[i]!)));\n return [g.sma(g.div(num, vol), p.length)];\n },\n reference: \"TradingView Ease of Movement: ta.sma(10000 * ta.change(hl2) * (high - low) / volume, 14); zero volume is absent\",\n});\n\nexport const chaikinMf = defineStudy({\n id: \"chaikin-mf\", name: \"Chaikin Money Flow\", family: \"tv\", needs: \"ohlcv\", pane: \"new\",\n inputs: [int(\"length\", 20, 1, 5000)], columns: [\"cmf\"],\n plots: [line(\"cmf\", COLORS.green, { title: \"CMF\" })],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const { high, low, close, volume: vol } = g;\n // ad = close == high and close == low or high == low ? 0 : (2*close - low - high) / (high - low) * volume\n const ad = g.calc((i) => {\n const h = high.v[i]!, l = low.v[i]!, c = close.v[i]!;\n return h === l ? 0 : ((2 * c - l - h) / (h - l)) * vol.v[i]!;\n });\n return [g.div(g.sum(ad, p.length), g.sum(vol, p.length))];\n },\n reference: \"TradingView Chaikin Money Flow: sum(ad, 20) / sum(volume, 20), ad = (2*close - low - high) / (high - low) * volume (0 when high == low)\",\n});\n\nexport const klinger = defineStudy({\n id: \"klinger\", name: \"Klinger Oscillator\", family: \"tv\", needs: \"ohlcv\", pane: \"new\",\n inputs: [int(\"fast\", 34, 1, 5000), int(\"slow\", 55, 1, 5000), int(\"signal\", 13, 1, 5000)],\n columns: [\"kvo\", \"signal\"],\n plots: [line(\"kvo\", COLORS.blue, { title: \"KVO\" }), line(\"signal\", COLORS.green, { title: \"Signal\" })],\n label: (p) => `${p.fast}, ${p.slow}, ${p.signal}`,\n build: (g, p) => {\n const h3 = g.src(\"hlc3\");\n const vol = g.volume;\n // sv = ta.change(hlc3) >= 0 ? volume : -volume\n const sv = g.calc((i) => (i === 0 ? NaN_ : h3.v[i]! - h3.v[i - 1]! >= 0 ? vol.v[i]! : -vol.v[i]!));\n const kvo = g.sub(g.ema(sv, p.fast), g.ema(sv, p.slow));\n return [kvo, g.ema(kvo, p.signal)];\n },\n reference: \"TradingView Klinger Oscillator: sv = ta.change(hlc3) >= 0 ? volume : -volume; kvo = ta.ema(sv, 34) - ta.ema(sv, 55); signal = ta.ema(kvo, 13)\",\n});\n\n// ---- VWAP -------------------------------------------------------------------------\n\nexport const vwap = defineStudy({\n id: \"vwap\", name: \"VWAP\", family: \"tv\", needs: \"ohlcv\", pane: \"overlay\",\n inputs: [select(\"anchor\", \"session\", [\"session\", \"week\", \"month\", \"year\"]), source(\"hlc3\"), float(\"bandMult\", 1, 0, 100, 0.1, \"Band multiplier\"), OFFSET],\n columns: [\"vwap\", \"upper\", \"lower\"],\n plots: [line(\"vwap\", COLORS.blue, { title: \"VWAP\" }), band(\"bands\", \"upper\", \"lower\", COLORS.green, \"rgba(8,153,129,0.1)\", \"VWAP bands\")],\n label: (p) => `${p.anchor}`,\n build: (g, p) => {\n const key = periodKey(g, p.anchor === \"session\" ? \"day\" : p.anchor, p.utcOffsetMinutes);\n const src = g.src(p.source), vol = g.volume;\n const fresh = (i: number) => i === 0 || key.v[i] !== key.v[i - 1];\n const cv = cum(g, (i) => vol.v[i]!, fresh);\n const cpv = cum(g, (i) => src.v[i]! * vol.v[i]!, fresh);\n const cpv2 = cum(g, (i) => src.v[i]! * src.v[i]! * vol.v[i]!, fresh);\n return vwapOutputs(g, cpv, cv, cpv2, p.bandMult);\n },\n reference: \"Pine ta.vwap(hlc3, anchor, stdev_mult 1): cumulative sum(src*volume) / sum(volume) restarting at each session/week/month/year; bands = vwap +/- mult * sqrt(sum(volume*src^2)/sum(volume) - vwap^2). Session = calendar day in the exchange time zone.\",\n});\n\nexport const anchoredVwap = defineStudy({\n id: \"anchored-vwap\", name: \"Anchored VWAP\", family: \"tv\", needs: \"ohlcv\", pane: \"overlay\",\n inputs: [float(\"anchorTime\", 0, 0, 1e15, 1, \"Anchor time (UTC ms)\"), source(\"hlc3\"), float(\"bandMult\", 1, 0, 100, 0.1, \"Band multiplier\")],\n columns: [\"vwap\", \"upper\", \"lower\"],\n plots: [line(\"vwap\", COLORS.orange, { title: \"Anchored VWAP\" }), band(\"bands\", \"upper\", \"lower\", COLORS.orange, \"rgba(255,109,0,0.1)\", \"Anchored VWAP bands\")],\n build: (g, p) => {\n const t = g.time, src = g.src(p.source), vol = g.volume;\n const live = (i: number) => t.v[i]! >= p.anchorTime;\n const fresh = (i: number) => i === 0 || !live(i - 1);\n const cv = cum(g, (i) => vol.v[i]!, fresh, live);\n const cpv = cum(g, (i) => src.v[i]! * vol.v[i]!, fresh, live);\n const cpv2 = cum(g, (i) => src.v[i]! * src.v[i]! * vol.v[i]!, fresh, live);\n return vwapOutputs(g, cpv, cv, cpv2, p.bandMult);\n },\n reference: \"TradingView Anchored VWAP: VWAP (hlc3) accumulated from the first bar at or after the anchor time, with stdev bands; earlier bars are absent\",\n});\n\n// ---- pivot points -----------------------------------------------------------------\n\ntype Levels = { p: number; r1: number; r2: number; r3: number; r4: number; s1: number; s2: number; s3: number; s4: number };\nconst LEVEL_KEYS = [\"p\", \"r1\", \"r2\", \"r3\", \"r4\", \"s1\", \"s2\", \"s3\", \"s4\"] as const;\n\n/** Levels from the previous period's open, high, low, close; kinds lacking a level leave it absent. */\nfunction levels(kind: string, O: number, H: number, L: number, C: number): Levels {\n const out: Levels = { p: NaN_, r1: NaN_, r2: NaN_, r3: NaN_, r4: NaN_, s1: NaN_, s2: NaN_, s3: NaN_, s4: NaN_ };\n const R = H - L;\n if (kind === \"dm\") {\n const x = C < O ? H + 2 * L + C : C > O ? 2 * H + L + C : H + L + 2 * C;\n out.p = x / 4; out.r1 = x / 2 - L; out.s1 = x / 2 - H;\n return out;\n }\n if (kind === \"woodie\") {\n const P = (H + L + 2 * C) / 4;\n out.p = P; out.r1 = 2 * P - L; out.s1 = 2 * P - H; out.r2 = P + R; out.s2 = P - R;\n out.r3 = H + 2 * R; out.s3 = L - 2 * R; out.r4 = out.r3 + R; out.s4 = out.s3 - R;\n return out;\n }\n if (kind === \"camarilla\") {\n out.p = (H + L + C) / 3;\n out.r1 = C + (R * 1.1) / 12; out.r2 = C + (R * 1.1) / 6; out.r3 = C + (R * 1.1) / 4; out.r4 = C + (R * 1.1) / 2;\n out.s1 = C - (R * 1.1) / 12; out.s2 = C - (R * 1.1) / 6; out.s3 = C - (R * 1.1) / 4; out.s4 = C - (R * 1.1) / 2;\n return out;\n }\n const P = (H + L + C) / 3;\n out.p = P;\n if (kind === \"fibonacci\") {\n out.r1 = P + 0.382 * R; out.r2 = P + 0.618 * R; out.r3 = P + R;\n out.s1 = P - 0.382 * R; out.s2 = P - 0.618 * R; out.s3 = P - R;\n } else if (kind === \"classic\") {\n out.r1 = 2 * P - L; out.s1 = 2 * P - H;\n out.r2 = P + R; out.s2 = P - R; out.r3 = P + 2 * R; out.s3 = P - 2 * R; out.r4 = P + 3 * R; out.s4 = P - 3 * R;\n } else { // standard (TradingView \"Traditional\")\n out.r1 = 2 * P - L; out.s1 = 2 * P - H; out.r2 = P + R; out.s2 = P - R;\n out.r3 = 2 * P + H - 2 * L; out.s3 = 2 * P - (2 * H - L); out.r4 = 3 * P + H - 3 * L; out.s4 = 3 * P - (3 * H - L);\n }\n return out;\n}\n\nconst PIVOT_COLORS: Record<(typeof LEVEL_KEYS)[number], string> = {\n p: COLORS.gray, r1: COLORS.red, r2: COLORS.red, r3: COLORS.red, r4: COLORS.red, s1: COLORS.green, s2: COLORS.green, s3: COLORS.green, s4: COLORS.green,\n};\n\nexport const pivotPoints = defineStudy({\n id: \"pivot-points\", name: \"Pivot Points Standard\", family: \"tv\", needs: \"ohlc\", pane: \"overlay\",\n inputs: [\n select(\"kind\", \"standard\", [\"standard\", \"fibonacci\", \"woodie\", \"classic\", \"dm\", \"camarilla\"]),\n select(\"period\", \"day\", [\"day\", \"week\", \"month\", \"year\"]),\n OFFSET,\n ],\n columns: [...LEVEL_KEYS],\n plots: LEVEL_KEYS.map((k) => line(k, PIVOT_COLORS[k], { title: k.toUpperCase(), width: 1 })),\n label: (p) => `${p.kind} ${p.period}`,\n build: (g, p) => {\n const key = periodKey(g, p.period, p.utcOffsetMinutes);\n const { open, high, low, close } = g;\n // current period's running O/H/L/C and the previous completed period's, one slot per bar\n const cO = g.col(), cH = g.col(), cL = g.col(), cC = g.col(), pO = g.col(), pH = g.col(), pL = g.col(), pC = g.col();\n g.node((_s, a, b) => {\n for (let i = a; i < b; i++) {\n if (i === 0 || key.v[i] !== key.v[i - 1]) {\n if (i === 0) { pO.v[i] = NaN_; pH.v[i] = NaN_; pL.v[i] = NaN_; pC.v[i] = NaN_; }\n else { pO.v[i] = cO.v[i - 1]!; pH.v[i] = cH.v[i - 1]!; pL.v[i] = cL.v[i - 1]!; pC.v[i] = cC.v[i - 1]!; }\n cO.v[i] = open.v[i]!; cH.v[i] = high.v[i]!; cL.v[i] = low.v[i]!;\n } else {\n pO.v[i] = pO.v[i - 1]!; pH.v[i] = pH.v[i - 1]!; pL.v[i] = pL.v[i - 1]!; pC.v[i] = pC.v[i - 1]!;\n cO.v[i] = cO.v[i - 1]!; cH.v[i] = Math.max(cH.v[i - 1]!, high.v[i]!); cL.v[i] = Math.min(cL.v[i - 1]!, low.v[i]!);\n }\n cC.v[i] = close.v[i]!;\n }\n });\n return LEVEL_KEYS.map((k) => g.calc((i) => (pH.v[i]! === pH.v[i]! ? levels(p.kind, pO.v[i]!, pH.v[i]!, pL.v[i]!, pC.v[i]!)[k] : NaN_)));\n },\n reference: \"TradingView Pivot Points Standard (Traditional, Fibonacci, Woodie, Classic, DM, Camarilla) from the previous completed period's open/high/low/close; constant over the current period, absent in the first\",\n});\n\n// ---- volatility / range -----------------------------------------------------------\n\nexport const histVol = defineStudy({\n id: \"hist-vol\", name: \"Historical Volatility\", family: \"tv\", needs: \"value\", pane: \"new\",\n inputs: [int(\"length\", 10, 2, 5000), int(\"annual\", 252, 1, 10_000, \"Periods per year\"), int(\"periodDays\", 1, 1, 10_000, \"Days per bar\")],\n columns: [\"hv\"],\n plots: [line(\"hv\", COLORS.blue, { title: \"HV\" })],\n label: (p) => `${p.length}`,\n build: (g, p) => {\n const c = g.close;\n const r = g.calc((i) => (i === 0 ? NaN_ : Math.log(c.v[i]! / c.v[i - 1]!)));\n const k = 100 * Math.sqrt(p.annual / p.periodDays);\n return [g.map(g.stdev(r, p.length), (s) => s * k)];\n },\n reference: \"TradingView Historical Volatility: 100 * ta.stdev(ln(close/close[1]), 10) * sqrt(annual / periodDays); ta.stdev is the population deviation (biased). annual defaults to 252 trading days (TradingView's script uses 365).\",\n});\n\nexport const adr = defineStudy({\n id: \"adr\", name: \"Average Day Range\", family: \"tv\", needs: \"ohlc\", pane: \"new\",\n inputs: [int(\"length\", 14, 1, 5000)], columns: [\"adr\"],\n plots: [line(\"adr\", COLORS.orange, { title: \"ADR\" })],\n label: (p) => `${p.length}`,\n build: (g, p) => [g.sma(g.sub(g.high, g.low), p.length)],\n reference: \"TradingView Average Day Range: ta.sma(high - low, 14) on the chart's bars\",\n});\n"],"mappings":"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"}
|