openalgo-charts 1.0.21 → 1.0.23

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/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Library version string. Matches package.json (published npm release). */
2
- declare const VERSION = "1.0.21";
2
+ declare const VERSION = "1.0.23";
3
3
  /** Returns the current library version. */
4
4
  declare function version(): string;
5
5
 
@@ -270,11 +270,19 @@ interface Bar {
270
270
  low: number;
271
271
  close: number;
272
272
  volume?: number;
273
+ /**
274
+ * Per-bar colour override for renderers that support it (histogram, column).
275
+ * A MACD histogram is four colours by momentum, and a conditional study is
276
+ * two — neither is expressible with one colour for the whole series.
277
+ */
278
+ color?: string;
273
279
  }
274
280
  /** A single value point (for line/area/baseline series). */
275
281
  interface LinePoint {
276
282
  time: UTCSeconds;
277
283
  value: number;
284
+ /** Per-bar colour override; carried through to the Bar. */
285
+ color?: string;
278
286
  }
279
287
  /** A whitespace point: occupies a logical index for alignment but draws nothing. */
280
288
  interface Whitespace {
@@ -442,6 +450,8 @@ interface ChartTheme {
442
450
  grid: string;
443
451
  axisText: string;
444
452
  axisLine: string;
453
+ /** 1px rule between stacked panes. Subtle: it separates, it does not divide. */
454
+ paneSeparator: string;
445
455
  crosshair: string;
446
456
  /** Axis label font size in px (default 11). */
447
457
  axisFontSize?: number;
@@ -877,6 +887,19 @@ interface IndicatorPlot {
877
887
  * series without a full rebuild.
878
888
  */
879
889
  colorKey?: string;
890
+ /**
891
+ * Per-bar colour, for plots whose meaning changes bar to bar — a MACD
892
+ * histogram is four colours by sign and direction, a conditional study two.
893
+ * Return `undefined` to fall back to the plot's own colour.
894
+ *
895
+ * Renderer support is required: histogram and column honour it today.
896
+ */
897
+ colorBy?(ctx: {
898
+ value: number;
899
+ index: number;
900
+ values: IndicatorValues;
901
+ settings: IndicatorSettings;
902
+ }): string | undefined;
880
903
  }
881
904
  /** A horizontal reference level (RSI 70/30, Stochastic 80/20, a zero line). */
882
905
  interface IndicatorLevel {
@@ -1730,17 +1753,17 @@ interface ChartOptions {
1730
1753
  * land underneath and their settings / close buttons become invisible and
1731
1754
  * unclickable.
1732
1755
  *
1733
- * `paneIndex` defaults to 0, because that overlay is nearly always on the
1734
- * price pane. Every other pane keeps the default corner: a lower indicator
1735
- * pane is short, so applying a price-pane offset there would push its legend
1736
- * off the pane entirely.
1756
+ * It follows whichever pane currently renders at that corner, which is
1757
+ * normally pane 0 but maximizing a lower pane parks the others at a
1758
+ * placeholder weight, so the maximized pane moves into the same corner and
1759
+ * inherits the offset. Every other pane keeps the default corner, because a
1760
+ * short lower pane would have its legend pushed off it entirely.
1737
1761
  *
1738
- * Defaults to `{ top: 6, left: 8, paneIndex: 0 }`.
1762
+ * Defaults to `{ top: 6, left: 8 }`.
1739
1763
  */
1740
1764
  legendOffset?: {
1741
1765
  top?: number;
1742
1766
  left?: number;
1743
- paneIndex?: number;
1744
1767
  };
1745
1768
  /**
1746
1769
  * Crosshair behaviour. 'normal' (default) — the cross follows the pointer
@@ -2086,6 +2109,19 @@ declare class Chart {
2086
2109
  * the gap instead of leaving a hole where it used to sit.
2087
2110
  */
2088
2111
  private _restackLegends;
2112
+ /**
2113
+ * Apply `legendOffset` to whichever pane currently renders at the chart's
2114
+ * top-left, rather than a fixed index.
2115
+ *
2116
+ * The offset describes a region of the *chart* the host has covered with its
2117
+ * own overlay — a symbol line, an OHLC readout. Normally that is pane 0, but
2118
+ * maximizing a lower pane parks the others at a placeholder weight, so the
2119
+ * maximized pane ends up rendering in that same corner. Pinning the offset to
2120
+ * pane 0 left it drawing its legend straight through the host's readout.
2121
+ *
2122
+ * Host-added legend rows are left alone: the host positions its own.
2123
+ */
2124
+ private _syncLegendOffsets;
2089
2125
  /** A host for the (lazy-loaded) trade layer to attach/detach its primitives on a pane. */
2090
2126
  tradeHost(paneIndex?: number): {
2091
2127
  addPrimitive(p: IPrimitive): void;
@@ -16,6 +16,16 @@ declare const ADX: IndicatorDescriptor;
16
16
  declare const CCI: IndicatorDescriptor;
17
17
  declare const MFI: IndicatorDescriptor;
18
18
  declare const ATR: IndicatorDescriptor;
19
+ /**
20
+ * CM Williams Vix Fix — a synthetic VIX from price alone.
21
+ *
22
+ * `wvf` is how far the current low sits below the highest close of the lookback,
23
+ * as a percentage: a spike means capitulation. The signal is not the level but
24
+ * the *breakout* — `wvf` piercing its own Bollinger upper band, or the top
25
+ * percentile of its recent range — so the histogram carries two colours and the
26
+ * bands are what it is measured against.
27
+ */
28
+ declare const WILLIAMS_VIX_FIX: IndicatorDescriptor;
19
29
 
20
30
  /**
21
31
  * Tier-1 volume indicators, computed from the chart's own OHLCV.
@@ -136,4 +146,4 @@ declare const BUILTIN_INDICATORS: readonly IndicatorDescriptor[];
136
146
  */
137
147
  declare function registerBuiltinIndicators(): void;
138
148
 
139
- export { ADL, ADX, ATR, BOLLINGER, BUILTIN_INDICATORS, CCI, EMA, ICHIMOKU, INDICATORS_TIER, MACD, MFI, OBV, PARABOLIC_SAR, RSI, SMA, STOCHASTIC, SUPERTREND, type Tier2Context, type Tier2Descriptor, type Tier2Point, VOLUME, VWAP, WMA, createTier2Indicator, highest, lowest, nulls, registerBuiltinIndicators, rma, sma, stdev, wma };
149
+ export { ADL, ADX, ATR, BOLLINGER, BUILTIN_INDICATORS, CCI, EMA, ICHIMOKU, INDICATORS_TIER, MACD, MFI, OBV, PARABOLIC_SAR, RSI, SMA, STOCHASTIC, SUPERTREND, type Tier2Context, type Tier2Descriptor, type Tier2Point, VOLUME, VWAP, WILLIAMS_VIX_FIX, WMA, createTier2Indicator, highest, lowest, nulls, registerBuiltinIndicators, rma, sma, stdev, wma };
@@ -1,2 +1,2 @@
1
- import{sourceValues as e,isNewIstDay as l,supertrend as t,ema as o,rsi as n,trueRange as r,atr as a,registerIndicator as i}from"./openalgo-charts.mjs";function c(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0||t<l)return o;let n=0;for(let r=0;r<t;r++)n+=e[r],r>=l&&(n-=e[r-l]),r>=l-1&&(o[r]=n/l);return o}function s(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0||t<l)return o;const n=l*(l+1)/2;for(let r=l-1;r<t;r++){let t=0;for(let o=0;o<l;o++)t+=e[r-o]*(l-o);o[r]=t/n}return o}function u(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0||t<l)return o;let n=0;for(let t=0;t<l;t++)n+=e[t];let r=n/l;o[l-1]=r;for(let n=l;n<t;n++)r=(r*(l-1)+e[n])/l,o[n]=r;return o}function y(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0||t<l)return o;const n=c(e,l);for(let r=l-1;r<t;r++){let t=0;const a=n[r];for(let o=0;o<l;o++){const l=e[r-o]-a;t+=l*l}o[r]=Math.sqrt(t/l)}return o}function p(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0)return o;for(let n=l-1;n<t;n++){let t=-1/0;for(let o=0;o<l;o++)e[n-o]>t&&(t=e[n-o]);o[n]=t}return o}function m(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0)return o;for(let n=l-1;n<t;n++){let t=1/0;for(let o=0;o<l;o++)e[n-o]<t&&(t=e[n-o]);o[n]=t}return o}function d(e){const l=new Array(e.length);for(let t=0;t<e.length;t++){const o=e[t];l[t]=Number.isFinite(o)?o:null}return l}const f=(e,l,t)=>{const o=e[l];return"number"==typeof o&&Number.isFinite(o)?o:t},b=(e,l="source")=>e[l]??"close";function h(l,t,o,n){return{id:l,name:t,category:"Trend",placement:"onchart",inputs:[{key:"length",type:"number",label:"Length",default:20,min:1,max:1e3,step:1},{key:"source",type:"source",label:"Source",default:"close"},{key:"color",type:"color",label:"Color",default:o}],plots:[{key:"ma",type:"line",title:t,colorKey:"color",style:{color:o,lineWidth:1.5}}],calc:(l,t)=>({ma:d(n(e(l,b(t)),f(t,"length",20)))})}}const g=h("sma","SMA","#4f8cff",c),k=h("wma","WMA","#ab47bc",s),w=h("ema","EMA","#f5a623",o),C={id:"bollinger",name:"Bollinger Bands",category:"Volatility",placement:"onchart",inputs:[{key:"length",type:"number",label:"Length",default:20,min:2,max:1e3,step:1},{key:"stdDev",type:"number",label:"StdDev",default:2,min:.1,max:10,step:.1},{key:"source",type:"source",label:"Source",default:"close"},{key:"basisColor",type:"color",label:"Basis",default:"#f5a623"},{key:"bandColor",type:"color",label:"Bands",default:"#4f8cff"}],plots:[{key:"upper",type:"line",title:"BB Upper",colorKey:"bandColor",style:{lineWidth:1}},{key:"basis",type:"line",title:"BB Basis",colorKey:"basisColor",style:{lineWidth:1.5}},{key:"lower",type:"line",title:"BB Lower",colorKey:"bandColor",style:{lineWidth:1}}],calc:(l,t)=>{const o=e(l,b(t)),n=f(t,"length",20),r=f(t,"stdDev",2),a=c(o,n),i=y(o,n),s=a.map((e,l)=>e+r*i[l]),u=a.map((e,l)=>e-r*i[l]);return{upper:d(s),basis:d(a),lower:d(u)}}},A={id:"vwap",name:"VWAP",category:"Volume",placement:"onchart",inputs:[{key:"anchor",type:"select",label:"Anchor",default:"session",options:[{label:"Session (IST day)",value:"session"},{label:"Continuous",value:"continuous"}]},{key:"source",type:"source",label:"Source",default:"hlc3"},{key:"color",type:"color",label:"Color",default:"#26c6da"}],plots:[{key:"vwap",type:"line",title:"VWAP",colorKey:"color",style:{lineWidth:1.5}}],calc:(t,o)=>{const n=e(t,b(o)),r="continuous"!==o.anchor,a=new Array(t.length).fill(NaN);let i=0,c=0;for(let e=0;e<t.length;e++){r&&e>0&&l(t[e-1].time,t[e].time)&&(i=0,c=0);const o=t[e].volume??0;i+=n[e]*o,c+=o,a[e]=c>0?i/c:NaN}return{vwap:d(a)}}},v={id:"supertrend",name:"Supertrend",category:"Trend",placement:"onchart",inputs:[{key:"period",type:"number",label:"ATR Period",default:10,min:1,max:200,step:1},{key:"multiplier",type:"number",label:"Multiplier",default:3,min:.1,max:20,step:.1},{key:"upColor",type:"color",label:"Uptrend",default:"#26a69a"},{key:"downColor",type:"color",label:"Downtrend",default:"#ef5350"}],plots:[{key:"up",type:"line",title:"Supertrend Up",colorKey:"upColor",style:{lineWidth:2}},{key:"down",type:"line",title:"Supertrend Down",colorKey:"downColor",style:{lineWidth:2}}],calc:(e,l)=>{const o=t(e,f(l,"period",10),f(l,"multiplier",3)),n=[],r=[];for(const e of o){const l=Number.isFinite(e.value);n.push(l&&-1===e.direction?e.value:null),r.push(l&&1===e.direction?e.value:null)}return{up:n,down:r}}},N={id:"parabolic-sar",name:"Parabolic SAR",category:"Trend",placement:"onchart",inputs:[{key:"start",type:"number",label:"Start",default:.02,min:.001,max:1,step:.001},{key:"increment",type:"number",label:"Increment",default:.02,min:.001,max:1,step:.001},{key:"maximum",type:"number",label:"Maximum",default:.2,min:.01,max:1,step:.01},{key:"color",type:"color",label:"Color",default:"#e0b020"}],plots:[{key:"sar",type:"line",title:"SAR",colorKey:"color",style:{markersOnly:!0,markerRadius:1.5}}],calc:(e,l)=>{const t=e.length,o=new Array(t).fill(NaN);if(t<2)return{sar:d(o)};const n=f(l,"start",.02),r=f(l,"increment",.02),a=f(l,"maximum",.2);let i=e[1].close>=e[0].close,c=i?e[0].low:e[0].high,s=i?e[1].high:e[1].low,u=n;for(let l=1;l<t;l++){c+=u*(s-c);const t=e[l-1].low,y=e[l-1].high,p=l>=2?e[l-2].low:t,m=l>=2?e[l-2].high:y;c=i?Math.min(c,t,p):Math.max(c,y,m),i&&e[l].low<c?(i=!1,c=s,s=e[l].low,u=n):!i&&e[l].high>c?(i=!0,c=s,s=e[l].high,u=n):i&&e[l].high>s?(s=e[l].high,u=Math.min(a,u+r)):!i&&e[l].low<s&&(s=e[l].low,u=Math.min(a,u+r)),o[l]=c}return{sar:d(o)}}};function x(e,l){const t=e.length,o=new Array(t).fill(NaN);for(let n=0;n<t;n++){const r=n-l;r>=0&&r<t&&(o[n]=e[r])}return o}const S={id:"ichimoku",name:"Ichimoku Cloud",category:"Trend",placement:"onchart",inputs:[{key:"conversionPeriod",type:"number",label:"Conversion",default:9,min:1,max:200,step:1},{key:"basePeriod",type:"number",label:"Base",default:26,min:1,max:200,step:1},{key:"laggingSpanPeriod",type:"number",label:"Lagging Span",default:52,min:1,max:400,step:1},{key:"displacement",type:"number",label:"Displacement",default:26,min:0,max:200,step:1},{key:"conversionColor",type:"color",label:"Conversion",default:"#4f8cff"},{key:"baseColor",type:"color",label:"Base",default:"#ef5350"},{key:"spanAColor",type:"color",label:"Span A",default:"#26a69a"},{key:"spanBColor",type:"color",label:"Span B",default:"#ab47bc"},{key:"laggingColor",type:"color",label:"Lagging",default:"#8892a6"},{key:"cloudUpColor",type:"color",label:"Cloud up",default:"#26a69a"},{key:"cloudDownColor",type:"color",label:"Cloud down",default:"#ef5350"}],plots:[{key:"conversion",type:"line",title:"Tenkan-sen",colorKey:"conversionColor",style:{lineWidth:1}},{key:"base",type:"line",title:"Kijun-sen",colorKey:"baseColor",style:{lineWidth:1}},{key:"spanA",type:"line",title:"Senkou Span A",colorKey:"spanAColor",style:{lineWidth:1}},{key:"spanB",type:"line",title:"Senkou Span B",colorKey:"spanBColor",style:{lineWidth:1}},{key:"lagging",type:"line",title:"Chikou Span",colorKey:"laggingColor",style:{lineWidth:1}}],fills:[{between:["spanA","spanB"],colorUpKey:"cloudUpColor",colorDownKey:"cloudDownColor",opacity:.14}],calc:(e,l)=>{const t=e.length,o=f(l,"conversionPeriod",9),n=f(l,"basePeriod",26),r=f(l,"laggingSpanPeriod",52),a=f(l,"displacement",26),i=l=>{const o=new Array(t).fill(NaN);for(let n=l-1;n<t;n++){let t=-1/0,r=1/0;for(let o=0;o<l;o++)e[n-o].high>t&&(t=e[n-o].high),e[n-o].low<r&&(r=e[n-o].low);o[n]=(t+r)/2}return o},c=i(o),s=i(n),u=c.map((e,l)=>(e+s[l])/2),y=i(r),p=e.map(e=>e.close);return{conversion:d(c),base:d(s),spanA:d(x(u,a)),spanB:d(x(y,a)),lagging:d(x(p,-a))}}},K=(e,l,t)=>{const o=e[l];return"number"==typeof o&&Number.isFinite(o)?o:t},D=e=>e.source??"close",W={id:"rsi",name:"RSI",category:"Momentum",placement:"pane",inputs:[{key:"length",type:"number",label:"Length",default:14,min:1,max:500,step:1},{key:"source",type:"source",label:"Source",default:"close"},{key:"color",type:"color",label:"Color",default:"#e0b020"},{key:"overbought",type:"number",label:"Overbought",default:70,min:50,max:100,step:1},{key:"oversold",type:"number",label:"Oversold",default:30,min:0,max:50,step:1}],plots:[{key:"rsi",type:"line",title:"RSI",colorKey:"color",style:{lineWidth:1.5}}],calc:(l,t)=>({rsi:d(n(e(l,D(t)),K(t,"length",14)))}),levels:e=>[{price:K(e,"overbought",70),color:"#ef5350",title:"OB",dashed:!0},{price:50,color:"#5a6b8c",title:"",dashed:!0},{price:K(e,"oversold",30),color:"#26a69a",title:"OS",dashed:!0}],range:()=>({min:0,max:100})},B={id:"macd",name:"MACD",category:"Momentum",placement:"pane",inputs:[{key:"fastPeriod",type:"number",label:"Fast",default:12,min:1,max:500,step:1},{key:"slowPeriod",type:"number",label:"Slow",default:26,min:1,max:500,step:1},{key:"signalPeriod",type:"number",label:"Signal",default:9,min:1,max:500,step:1},{key:"source",type:"source",label:"Source",default:"close"},{key:"macdColor",type:"color",label:"MACD",default:"#4f8cff"},{key:"signalColor",type:"color",label:"Signal",default:"#f5a623"}],plots:[{key:"histogram",type:"histogram",title:"Histogram",style:{color:"#3a4666",base:0}},{key:"macd",type:"line",title:"MACD",colorKey:"macdColor",style:{lineWidth:1.5}},{key:"signal",type:"line",title:"Signal",colorKey:"signalColor",style:{lineWidth:1.5}}],calc:(l,t)=>{const n=e(l,D(t)),r=o(n,K(t,"fastPeriod",12)),a=o(n,K(t,"slowPeriod",26)),i=r.map((e,l)=>e-a[l]),c=o(i,K(t,"signalPeriod",9)),s=i.map((e,l)=>e-c[l]);return{macd:d(i),signal:d(c),histogram:d(s)}},levels:()=>[{price:0,color:"#5a6b8c",dashed:!0}]},M={id:"stochastic",name:"Stochastic",category:"Momentum",placement:"pane",inputs:[{key:"kPeriod",type:"number",label:"%K Length",default:14,min:1,max:500,step:1},{key:"kSmoothing",type:"number",label:"%K Smoothing",default:3,min:1,max:100,step:1},{key:"dPeriod",type:"number",label:"%D Smoothing",default:3,min:1,max:100,step:1},{key:"kColor",type:"color",label:"%K",default:"#4f8cff"},{key:"dColor",type:"color",label:"%D",default:"#f5a623"}],plots:[{key:"k",type:"line",title:"%K",colorKey:"kColor",style:{lineWidth:1.5}},{key:"d",type:"line",title:"%D",colorKey:"dColor",style:{lineWidth:1.5}}],calc:(e,l)=>{const t=p(e.map(e=>e.high),K(l,"kPeriod",14)),o=m(e.map(e=>e.low),K(l,"kPeriod",14)),n=c(e.map((e,l)=>{const n=t[l]-o[l];return n>0?(e.close-o[l])/n*100:NaN}),K(l,"kSmoothing",3)),r=c(n,K(l,"dPeriod",3));return{k:d(n),d:d(r)}},levels:()=>[{price:80,color:"#ef5350",title:"OB",dashed:!0},{price:20,color:"#26a69a",title:"OS",dashed:!0}],range:()=>({min:0,max:100})},P={id:"adx",name:"ADX / DMI",category:"Trend",placement:"pane",inputs:[{key:"period",type:"number",label:"DI Length",default:14,min:1,max:500,step:1},{key:"adxPeriod",type:"number",label:"ADX Smoothing",default:14,min:1,max:500,step:1},{key:"adxColor",type:"color",label:"ADX",default:"#e0e3ea"},{key:"plusColor",type:"color",label:"+DI",default:"#26a69a"},{key:"minusColor",type:"color",label:"-DI",default:"#ef5350"}],plots:[{key:"plusDi",type:"line",title:"+DI",colorKey:"plusColor",style:{lineWidth:1}},{key:"minusDi",type:"line",title:"-DI",colorKey:"minusColor",style:{lineWidth:1}},{key:"adx",type:"line",title:"ADX",colorKey:"adxColor",style:{lineWidth:1.5}}],calc:(e,l)=>{const t=e.length,o=K(l,"period",14),n=e.map(e=>e.high),a=e.map(e=>e.low),i=e.map(e=>e.close),c=r(n,a,i),s=new Array(t).fill(0),y=new Array(t).fill(0);for(let e=1;e<t;e++){const l=n[e]-n[e-1],t=a[e-1]-a[e];s[e]=l>t&&l>0?l:0,y[e]=t>l&&t>0?t:0}const p=u(c,o),m=u(s,o),f=u(y,o),b=new Array(t).fill(NaN),h=new Array(t).fill(NaN),g=new Array(t).fill(NaN);for(let e=0;e<t;e++){if(!Number.isFinite(p[e])||0===p[e])continue;b[e]=m[e]/p[e]*100,h[e]=f[e]/p[e]*100;const l=b[e]+h[e];g[e]=l>0?Math.abs(b[e]-h[e])/l*100:0}const k=g.findIndex(e=>Number.isFinite(e)),w=new Array(t).fill(NaN);if(k>=0){const e=u(g.slice(k),K(l,"adxPeriod",14));for(let l=0;l<e.length;l++)w[k+l]=e[l]}return{plusDi:d(b),minusDi:d(h),adx:d(w)}},levels:()=>[{price:25,color:"#5a6b8c",title:"25",dashed:!0}]},I={id:"cci",name:"CCI",category:"Momentum",placement:"pane",inputs:[{key:"period",type:"number",label:"Length",default:20,min:1,max:500,step:1},{key:"constant",type:"number",label:"Constant",default:.015,min:.001,max:1,step:.001},{key:"color",type:"color",label:"Color",default:"#26c6da"}],plots:[{key:"cci",type:"line",title:"CCI",colorKey:"color",style:{lineWidth:1.5}}],calc:(e,l)=>{const t=K(l,"period",20),o=K(l,"constant",.015),n=e.map(e=>(e.high+e.low+e.close)/3),r=c(n,t),a=new Array(e.length).fill(NaN);for(let l=t-1;l<e.length;l++){let e=0;for(let o=0;o<t;o++)e+=Math.abs(n[l-o]-r[l]);const i=e/t;a[l]=i>0?(n[l]-r[l])/(o*i):0}return{cci:d(a)}},levels:()=>[{price:100,color:"#ef5350",dashed:!0},{price:0,color:"#5a6b8c",dashed:!0},{price:-100,color:"#26a69a",dashed:!0}]},L={id:"mfi",name:"Money Flow Index",category:"Momentum",placement:"pane",inputs:[{key:"period",type:"number",label:"Length",default:14,min:1,max:500,step:1},{key:"color",type:"color",label:"Color",default:"#ab47bc"}],plots:[{key:"mfi",type:"line",title:"MFI",colorKey:"color",style:{lineWidth:1.5}}],calc:(e,l)=>{const t=e.length,o=K(l,"period",14),n=e.map(e=>(e.high+e.low+e.close)/3),r=new Array(t).fill(0),a=new Array(t).fill(0);for(let l=1;l<t;l++){const t=n[l]*(e[l].volume??0);n[l]>n[l-1]?r[l]=t:n[l]<n[l-1]&&(a[l]=t)}const i=new Array(t).fill(NaN);for(let e=o;e<t;e++){let l=0,t=0;for(let n=0;n<o;n++)l+=r[e-n],t+=a[e-n];i[e]=0===t?100:100-100/(1+l/t)}return{mfi:d(i)}},levels:()=>[{price:80,color:"#ef5350",title:"OB",dashed:!0},{price:20,color:"#26a69a",title:"OS",dashed:!0}],range:()=>({min:0,max:100})},O={id:"atr",name:"ATR",category:"Volatility",placement:"pane",inputs:[{key:"period",type:"number",label:"Length",default:14,min:1,max:500,step:1},{key:"color",type:"color",label:"Color",default:"#f5a623"}],plots:[{key:"atr",type:"line",title:"ATR",colorKey:"color",style:{lineWidth:1.5}}],calc:(e,l)=>({atr:d(a(e.map(e=>e.high),e.map(e=>e.low),e.map(e=>e.close),K(l,"period",14)))})},V={id:"volume",name:"Volume",category:"Volume",placement:"pane",inputs:[{key:"color",type:"color",label:"Color",default:"#3a4666"}],plots:[{key:"volume",type:"histogram",title:"Volume",colorKey:"color",style:{base:0}}],calc:e=>({volume:d(e.map(e=>e.volume??0))})},F={id:"obv",name:"On-Balance Volume",category:"Volume",placement:"pane",inputs:[{key:"color",type:"color",label:"Color",default:"#26c6da"}],plots:[{key:"obv",type:"line",title:"OBV",colorKey:"color",style:{lineWidth:1.5}}],calc:e=>{const l=new Array(e.length).fill(NaN);let t=0;for(let o=0;o<e.length;o++){if(o>0){const l=e[o].volume??0;e[o].close>e[o-1].close?t+=l:e[o].close<e[o-1].close&&(t-=l)}l[o]=t}return{obv:d(l)}}},R={id:"adl",name:"Accumulation/Distribution",category:"Volume",placement:"pane",inputs:[{key:"color",type:"color",label:"Color",default:"#4f8cff"}],plots:[{key:"adl",type:"line",title:"A/D Line",colorKey:"color",style:{lineWidth:1.5}}],calc:e=>{const l=new Array(e.length).fill(NaN);let t=0;for(let o=0;o<e.length;o++){const n=e[o],r=n.high-n.low;r>0&&(t+=(n.close-n.low-(n.high-n.close))/r*(n.volume??0)),l[o]=t}return{adl:d(l)}}},T="__tier2",U=e=>e[T];function X(e){return{id:e.id,name:e.name,category:e.category,placement:e.placement,inputs:e.inputs,plots:e.plots,levels:e.levels,range:e.range,calc:(l,t,o)=>{const n=U(o);return function(e,l,t){const o={};for(const l of t)o[l.key]=new Array(e.length).fill(null);if(0===l.length)return o;let n=-1;for(let r=0;r<e.length;r++){for(;n+1<l.length&&l[n+1].time<=e[r].time;)n+=1;if(n<0)continue;const a=l[n].values;for(const e of t){const l=a[e.key];o[e.key][r]="number"==typeof l&&Number.isFinite(l)?l:null}}return o}(l,n?.points??[],e.plots)},attach:l=>{const t=U(l.store)??{key:"",points:[],loading:!1,unsubscribe:null,dead:!1};t.dead=!1,l.store[T]=t;const o=e=>{t.dead||(!function(e,l){const t=e[e.length-1];if(void 0===t||l.time>t.time)return void e.push(l);if(l.time===t.time)return void(e[e.length-1]=l);let o=0,n=e.length;for(;o<n;){const t=o+n>>1;e[t].time<l.time?o=t+1:n=t}e[o]?.time===l.time?e[o]=l:e.splice(o,0,l)}(t.points,e),l.requestRecompute())};return(()=>{const n=(()=>{const e=l.bars();return{settings:l.settings(),bars:e,from:e.length>0?e[0].time:0,to:e.length>0?e[e.length-1].time:0}})(),r=function(e,l){return(e.refetchOn??[]).map(e=>`${e}=${String(l[e])}`).join("&")}(e,n.settings);t.loading||r===t.key&&t.points.length>0?null===t.unsubscribe&&void 0!==e.subscribe&&(t.unsubscribe=e.subscribe(n,o)):(t.loading=!0,t.key=r,e.fetch(n).then(e=>{t.loading=!1,t.dead||t.key!==r||(t.points=e.slice().sort((e,l)=>e.time-l.time),l.requestRecompute())},()=>{t.loading=!1,t.key=""}),t.unsubscribe?.(),t.unsubscribe=e.subscribe?.(n,o)??null)})(),()=>{t.dead=!0,t.unsubscribe?.(),t.unsubscribe=null}}}}const j="indicators",q=[g,w,k,A,C,v,N,S,W,B,M,P,I,L,O,V,F,R];let $=!1;function _(){if(!$){$=!0;for(const e of q)i(e)}}_();export{R as ADL,P as ADX,O as ATR,C as BOLLINGER,q as BUILTIN_INDICATORS,I as CCI,w as EMA,S as ICHIMOKU,j as INDICATORS_TIER,B as MACD,L as MFI,F as OBV,N as PARABOLIC_SAR,W as RSI,g as SMA,M as STOCHASTIC,v as SUPERTREND,V as VOLUME,A as VWAP,k as WMA,X as createTier2Indicator,p as highest,m as lowest,d as nulls,_ as registerBuiltinIndicators,u as rma,c as sma,y as stdev,s as wma};
1
+ import{sourceValues as e,isNewIstDay as l,supertrend as t,ema as o,rsi as n,trueRange as r,atr as a,registerIndicator as i}from"./openalgo-charts.mjs";function s(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0||t<l)return o;let n=0,r=0;for(let a=0;a<t;a++){const t=e[a];if(Number.isFinite(t)?n+=t:r+=1,a>=l){const t=e[a-l];Number.isFinite(t)?n-=t:r-=1}a>=l-1&&(o[a]=0===r?n/l:NaN)}return o}function c(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0||t<l)return o;const n=l*(l+1)/2;for(let r=l-1;r<t;r++){let t=0;for(let o=0;o<l;o++)t+=e[r-o]*(l-o);o[r]=t/n}return o}function u(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0||t<l)return o;let n=0;for(let t=0;t<l;t++)n+=e[t];let r=n/l;o[l-1]=r;for(let n=l;n<t;n++)r=(r*(l-1)+e[n])/l,o[n]=r;return o}function y(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0||t<l)return o;const n=s(e,l);for(let r=l-1;r<t;r++){let t=0;const a=n[r];for(let o=0;o<l;o++){const l=e[r-o]-a;t+=l*l}o[r]=Math.sqrt(t/l)}return o}function p(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0)return o;for(let n=l-1;n<t;n++){let t=-1/0;for(let o=0;o<l;o++)e[n-o]>t&&(t=e[n-o]);o[n]=t}return o}function d(e,l){const t=e.length,o=new Array(t).fill(NaN);if(l<=0)return o;for(let n=l-1;n<t;n++){let t=1/0;for(let o=0;o<l;o++)e[n-o]<t&&(t=e[n-o]);o[n]=t}return o}function m(e){const l=new Array(e.length);for(let t=0;t<e.length;t++){const o=e[t];l[t]=Number.isFinite(o)?o:null}return l}const f=(e,l,t)=>{const o=e[l];return"number"==typeof o&&Number.isFinite(o)?o:t},b=(e,l="source")=>e[l]??"close";function h(l,t,o,n){return{id:l,name:t,category:"Trend",placement:"onchart",inputs:[{key:"length",type:"number",label:"Length",default:20,min:1,max:1e3,step:1},{key:"source",type:"source",label:"Source",default:"close"},{key:"color",type:"color",label:"Color",default:o}],plots:[{key:"ma",type:"line",title:t,colorKey:"color",style:{color:o,lineWidth:1.5}}],calc:(l,t)=>({ma:m(n(e(l,b(t)),f(t,"length",20)))})}}const g=h("sma","SMA","#4f8cff",s),k=h("wma","WMA","#ab47bc",c),w=h("ema","EMA","#f5a623",o),C={id:"bollinger",name:"Bollinger Bands",category:"Volatility",placement:"onchart",inputs:[{key:"length",type:"number",label:"Length",default:20,min:2,max:1e3,step:1},{key:"stdDev",type:"number",label:"StdDev",default:2,min:.1,max:10,step:.1},{key:"source",type:"source",label:"Source",default:"close"},{key:"basisColor",type:"color",label:"Basis",default:"#f5a623"},{key:"bandColor",type:"color",label:"Bands",default:"#4f8cff"}],plots:[{key:"upper",type:"line",title:"BB Upper",colorKey:"bandColor",style:{lineWidth:1}},{key:"basis",type:"line",title:"BB Basis",colorKey:"basisColor",style:{lineWidth:1.5}},{key:"lower",type:"line",title:"BB Lower",colorKey:"bandColor",style:{lineWidth:1}}],calc:(l,t)=>{const o=e(l,b(t)),n=f(t,"length",20),r=f(t,"stdDev",2),a=s(o,n),i=y(o,n),c=a.map((e,l)=>e+r*i[l]),u=a.map((e,l)=>e-r*i[l]);return{upper:m(c),basis:m(a),lower:m(u)}}},v={id:"vwap",name:"VWAP",category:"Volume",placement:"onchart",inputs:[{key:"anchor",type:"select",label:"Anchor",default:"session",options:[{label:"Session (IST day)",value:"session"},{label:"Continuous",value:"continuous"}]},{key:"source",type:"source",label:"Source",default:"hlc3"},{key:"color",type:"color",label:"Color",default:"#26c6da"}],plots:[{key:"vwap",type:"line",title:"VWAP",colorKey:"color",style:{lineWidth:1.5}}],calc:(t,o)=>{const n=e(t,b(o)),r="continuous"!==o.anchor,a=new Array(t.length).fill(NaN);let i=0,s=0;for(let e=0;e<t.length;e++){r&&e>0&&l(t[e-1].time,t[e].time)&&(i=0,s=0);const o=t[e].volume??0;i+=n[e]*o,s+=o,a[e]=s>0?i/s:NaN}return{vwap:m(a)}}},N={id:"supertrend",name:"Supertrend",category:"Trend",placement:"onchart",inputs:[{key:"period",type:"number",label:"ATR Period",default:10,min:1,max:200,step:1},{key:"multiplier",type:"number",label:"Multiplier",default:3,min:.1,max:20,step:.1},{key:"upColor",type:"color",label:"Uptrend",default:"#26a69a"},{key:"downColor",type:"color",label:"Downtrend",default:"#ef5350"}],plots:[{key:"up",type:"line",title:"Supertrend Up",colorKey:"upColor",style:{lineWidth:2}},{key:"down",type:"line",title:"Supertrend Down",colorKey:"downColor",style:{lineWidth:2}}],calc:(e,l)=>{const o=t(e,f(l,"period",10),f(l,"multiplier",3)),n=[],r=[];for(const e of o){const l=Number.isFinite(e.value);n.push(l&&-1===e.direction?e.value:null),r.push(l&&1===e.direction?e.value:null)}return{up:n,down:r}}},A={id:"parabolic-sar",name:"Parabolic SAR",category:"Trend",placement:"onchart",inputs:[{key:"start",type:"number",label:"Start",default:.02,min:.001,max:1,step:.001},{key:"increment",type:"number",label:"Increment",default:.02,min:.001,max:1,step:.001},{key:"maximum",type:"number",label:"Maximum",default:.2,min:.01,max:1,step:.01},{key:"color",type:"color",label:"Color",default:"#e0b020"}],plots:[{key:"sar",type:"line",title:"SAR",colorKey:"color",style:{markersOnly:!0,markerRadius:1.5}}],calc:(e,l)=>{const t=e.length,o=new Array(t).fill(NaN);if(t<2)return{sar:m(o)};const n=f(l,"start",.02),r=f(l,"increment",.02),a=f(l,"maximum",.2);let i=e[1].close>=e[0].close,s=i?e[0].low:e[0].high,c=i?e[1].high:e[1].low,u=n;for(let l=1;l<t;l++){s+=u*(c-s);const t=e[l-1].low,y=e[l-1].high,p=l>=2?e[l-2].low:t,d=l>=2?e[l-2].high:y;s=i?Math.min(s,t,p):Math.max(s,y,d),i&&e[l].low<s?(i=!1,s=c,c=e[l].low,u=n):!i&&e[l].high>s?(i=!0,s=c,c=e[l].high,u=n):i&&e[l].high>c?(c=e[l].high,u=Math.min(a,u+r)):!i&&e[l].low<c&&(c=e[l].low,u=Math.min(a,u+r)),o[l]=s}return{sar:m(o)}}};function x(e,l){const t=e.length,o=new Array(t).fill(NaN);for(let n=0;n<t;n++){const r=n-l;r>=0&&r<t&&(o[n]=e[r])}return o}const S={id:"ichimoku",name:"Ichimoku Cloud",category:"Trend",placement:"onchart",inputs:[{key:"conversionPeriod",type:"number",label:"Conversion",default:9,min:1,max:200,step:1},{key:"basePeriod",type:"number",label:"Base",default:26,min:1,max:200,step:1},{key:"laggingSpanPeriod",type:"number",label:"Lagging Span",default:52,min:1,max:400,step:1},{key:"displacement",type:"number",label:"Displacement",default:26,min:0,max:200,step:1},{key:"conversionColor",type:"color",label:"Conversion",default:"#4f8cff"},{key:"baseColor",type:"color",label:"Base",default:"#ef5350"},{key:"spanAColor",type:"color",label:"Span A",default:"#26a69a"},{key:"spanBColor",type:"color",label:"Span B",default:"#ab47bc"},{key:"laggingColor",type:"color",label:"Lagging",default:"#8892a6"},{key:"cloudUpColor",type:"color",label:"Cloud up",default:"#26a69a"},{key:"cloudDownColor",type:"color",label:"Cloud down",default:"#ef5350"}],plots:[{key:"conversion",type:"line",title:"Tenkan-sen",colorKey:"conversionColor",style:{lineWidth:1}},{key:"base",type:"line",title:"Kijun-sen",colorKey:"baseColor",style:{lineWidth:1}},{key:"spanA",type:"line",title:"Senkou Span A",colorKey:"spanAColor",style:{lineWidth:1}},{key:"spanB",type:"line",title:"Senkou Span B",colorKey:"spanBColor",style:{lineWidth:1}},{key:"lagging",type:"line",title:"Chikou Span",colorKey:"laggingColor",style:{lineWidth:1}}],fills:[{between:["spanA","spanB"],colorUpKey:"cloudUpColor",colorDownKey:"cloudDownColor",opacity:.14}],calc:(e,l)=>{const t=e.length,o=f(l,"conversionPeriod",9),n=f(l,"basePeriod",26),r=f(l,"laggingSpanPeriod",52),a=f(l,"displacement",26),i=l=>{const o=new Array(t).fill(NaN);for(let n=l-1;n<t;n++){let t=-1/0,r=1/0;for(let o=0;o<l;o++)e[n-o].high>t&&(t=e[n-o].high),e[n-o].low<r&&(r=e[n-o].low);o[n]=(t+r)/2}return o},s=i(o),c=i(n),u=s.map((e,l)=>(e+c[l])/2),y=i(r),p=e.map(e=>e.close);return{conversion:m(s),base:m(c),spanA:m(x(u,a)),spanB:m(x(y,a)),lagging:m(x(p,-a))}}},D=(e,l,t)=>{const o=e[l];return"number"==typeof o&&Number.isFinite(o)?o:t},B=e=>e.source??"close",K={id:"rsi",name:"RSI",category:"Momentum",placement:"pane",inputs:[{key:"length",type:"number",label:"Length",default:14,min:1,max:500,step:1},{key:"source",type:"source",label:"Source",default:"close"},{key:"color",type:"color",label:"Color",default:"#e0b020"},{key:"overbought",type:"number",label:"Overbought",default:70,min:50,max:100,step:1},{key:"oversold",type:"number",label:"Oversold",default:30,min:0,max:50,step:1}],plots:[{key:"rsi",type:"line",title:"RSI",colorKey:"color",style:{lineWidth:1.5}}],calc:(l,t)=>({rsi:m(n(e(l,B(t)),D(t,"length",14)))}),levels:e=>[{price:D(e,"overbought",70),color:"#ef5350",title:"OB",dashed:!0},{price:50,color:"#5a6b8c",title:"",dashed:!0},{price:D(e,"oversold",30),color:"#26a69a",title:"OS",dashed:!0}],range:()=>({min:0,max:100})},W={id:"macd",name:"MACD",category:"Momentum",placement:"pane",inputs:[{key:"fastPeriod",type:"number",label:"Fast",default:12,min:1,max:500,step:1},{key:"slowPeriod",type:"number",label:"Slow",default:26,min:1,max:500,step:1},{key:"signalPeriod",type:"number",label:"Signal",default:9,min:1,max:500,step:1},{key:"source",type:"source",label:"Source",default:"close"},{key:"macdColor",type:"color",label:"MACD",default:"#2962ff"},{key:"histUpColor",type:"color",label:"Histogram up",default:"#26a69a"},{key:"histUpFadeColor",type:"color",label:"Histogram up (weakening)",default:"#a7d8d2"},{key:"histDownColor",type:"color",label:"Histogram down",default:"#ef5350"},{key:"histDownFadeColor",type:"color",label:"Histogram down (weakening)",default:"#f5b0ae"},{key:"signalColor",type:"color",label:"Signal",default:"#ff6d00"}],plots:[{key:"histogram",type:"histogram",title:"Histogram",style:{color:"#3a4666",base:0},colorBy:({value:e,index:l,values:t,settings:o})=>{const n=t.histogram?.[l-1],r=null==n||!Number.isFinite(n)||e>=n,a=(e,l)=>{const t=o[e];return"string"==typeof t?t:l};return e>=0?r?a("histUpColor","#26a69a"):a("histUpFadeColor","#a7d8d2"):r?a("histDownFadeColor","#f5b0ae"):a("histDownColor","#ef5350")}},{key:"macd",type:"line",title:"MACD",colorKey:"macdColor",style:{lineWidth:1.5}},{key:"signal",type:"line",title:"Signal",colorKey:"signalColor",style:{lineWidth:1.5}}],calc:(l,t)=>{const n=e(l,B(t)),r=o(n,D(t,"fastPeriod",12)),a=o(n,D(t,"slowPeriod",26)),i=r.map((e,l)=>e-a[l]),s=o(i,D(t,"signalPeriod",9)),c=i.map((e,l)=>e-s[l]);return{macd:m(i),signal:m(s),histogram:m(c)}},levels:()=>[{price:0,color:"#5a6b8c",dashed:!0}]},P={id:"stochastic",name:"Stochastic",category:"Momentum",placement:"pane",inputs:[{key:"kPeriod",type:"number",label:"%K Length",default:14,min:1,max:500,step:1},{key:"kSmoothing",type:"number",label:"%K Smoothing",default:3,min:1,max:100,step:1},{key:"dPeriod",type:"number",label:"%D Smoothing",default:3,min:1,max:100,step:1},{key:"kColor",type:"color",label:"%K",default:"#4f8cff"},{key:"dColor",type:"color",label:"%D",default:"#f5a623"}],plots:[{key:"k",type:"line",title:"%K",colorKey:"kColor",style:{lineWidth:1.5}},{key:"d",type:"line",title:"%D",colorKey:"dColor",style:{lineWidth:1.5}}],calc:(e,l)=>{const t=p(e.map(e=>e.high),D(l,"kPeriod",14)),o=d(e.map(e=>e.low),D(l,"kPeriod",14)),n=s(e.map((e,l)=>{const n=t[l]-o[l];return n>0?(e.close-o[l])/n*100:NaN}),D(l,"kSmoothing",3)),r=s(n,D(l,"dPeriod",3));return{k:m(n),d:m(r)}},levels:()=>[{price:80,color:"#ef5350",title:"OB",dashed:!0},{price:20,color:"#26a69a",title:"OS",dashed:!0}],range:()=>({min:0,max:100})},F={id:"adx",name:"ADX / DMI",category:"Trend",placement:"pane",inputs:[{key:"period",type:"number",label:"DI Length",default:14,min:1,max:500,step:1},{key:"adxPeriod",type:"number",label:"ADX Smoothing",default:14,min:1,max:500,step:1},{key:"adxColor",type:"color",label:"ADX",default:"#e0e3ea"},{key:"plusColor",type:"color",label:"+DI",default:"#26a69a"},{key:"minusColor",type:"color",label:"-DI",default:"#ef5350"}],plots:[{key:"plusDi",type:"line",title:"+DI",colorKey:"plusColor",style:{lineWidth:1}},{key:"minusDi",type:"line",title:"-DI",colorKey:"minusColor",style:{lineWidth:1}},{key:"adx",type:"line",title:"ADX",colorKey:"adxColor",style:{lineWidth:1.5}}],calc:(e,l)=>{const t=e.length,o=D(l,"period",14),n=e.map(e=>e.high),a=e.map(e=>e.low),i=e.map(e=>e.close),s=r(n,a,i),c=new Array(t).fill(0),y=new Array(t).fill(0);for(let e=1;e<t;e++){const l=n[e]-n[e-1],t=a[e-1]-a[e];c[e]=l>t&&l>0?l:0,y[e]=t>l&&t>0?t:0}const p=u(s,o),d=u(c,o),f=u(y,o),b=new Array(t).fill(NaN),h=new Array(t).fill(NaN),g=new Array(t).fill(NaN);for(let e=0;e<t;e++){if(!Number.isFinite(p[e])||0===p[e])continue;b[e]=d[e]/p[e]*100,h[e]=f[e]/p[e]*100;const l=b[e]+h[e];g[e]=l>0?Math.abs(b[e]-h[e])/l*100:0}const k=g.findIndex(e=>Number.isFinite(e)),w=new Array(t).fill(NaN);if(k>=0){const e=u(g.slice(k),D(l,"adxPeriod",14));for(let l=0;l<e.length;l++)w[k+l]=e[l]}return{plusDi:m(b),minusDi:m(h),adx:m(w)}},levels:()=>[{price:25,color:"#5a6b8c",title:"25",dashed:!0}]},M={id:"cci",name:"CCI",category:"Momentum",placement:"pane",inputs:[{key:"period",type:"number",label:"Length",default:20,min:1,max:500,step:1},{key:"constant",type:"number",label:"Constant",default:.015,min:.001,max:1,step:.001},{key:"color",type:"color",label:"Color",default:"#26c6da"}],plots:[{key:"cci",type:"line",title:"CCI",colorKey:"color",style:{lineWidth:1.5}}],calc:(e,l)=>{const t=D(l,"period",20),o=D(l,"constant",.015),n=e.map(e=>(e.high+e.low+e.close)/3),r=s(n,t),a=new Array(e.length).fill(NaN);for(let l=t-1;l<e.length;l++){let e=0;for(let o=0;o<t;o++)e+=Math.abs(n[l-o]-r[l]);const i=e/t;a[l]=i>0?(n[l]-r[l])/(o*i):0}return{cci:m(a)}},levels:()=>[{price:100,color:"#ef5350",dashed:!0},{price:0,color:"#5a6b8c",dashed:!0},{price:-100,color:"#26a69a",dashed:!0}]},L={id:"mfi",name:"Money Flow Index",category:"Momentum",placement:"pane",inputs:[{key:"period",type:"number",label:"Length",default:14,min:1,max:500,step:1},{key:"color",type:"color",label:"Color",default:"#ab47bc"}],plots:[{key:"mfi",type:"line",title:"MFI",colorKey:"color",style:{lineWidth:1.5}}],calc:(e,l)=>{const t=e.length,o=D(l,"period",14),n=e.map(e=>(e.high+e.low+e.close)/3),r=new Array(t).fill(0),a=new Array(t).fill(0);for(let l=1;l<t;l++){const t=n[l]*(e[l].volume??0);n[l]>n[l-1]?r[l]=t:n[l]<n[l-1]&&(a[l]=t)}const i=new Array(t).fill(NaN);for(let e=o;e<t;e++){let l=0,t=0;for(let n=0;n<o;n++)l+=r[e-n],t+=a[e-n];i[e]=0===t?100:100-100/(1+l/t)}return{mfi:m(i)}},levels:()=>[{price:80,color:"#ef5350",title:"OB",dashed:!0},{price:20,color:"#26a69a",title:"OS",dashed:!0}],range:()=>({min:0,max:100})},I={id:"atr",name:"ATR",category:"Volatility",placement:"pane",inputs:[{key:"period",type:"number",label:"Length",default:14,min:1,max:500,step:1},{key:"color",type:"color",label:"Color",default:"#f5a623"}],plots:[{key:"atr",type:"line",title:"ATR",colorKey:"color",style:{lineWidth:1.5}}],calc:(e,l)=>({atr:m(a(e.map(e=>e.high),e.map(e=>e.low),e.map(e=>e.close),D(l,"period",14)))})},V={id:"williams-vix-fix",name:"William VIX FIX",category:"Volatility",placement:"pane",inputs:[{key:"pd",type:"number",label:"LookBack Period Standard Deviation High",default:22,min:1,max:500,step:1},{key:"bbl",type:"number",label:"Bollinger Band Length",default:20,min:1,max:500,step:1},{key:"mult",type:"number",label:"Bollinger Band Standard Deviation Up",default:2,min:1,max:5,step:.1},{key:"lb",type:"number",label:"Look Back Period Percentile High",default:50,min:1,max:500,step:1},{key:"ph",type:"number",label:"Highest Percentile",default:.85,min:0,max:1,step:.01},{key:"pl",type:"number",label:"Lowest Percentile",default:1.01,min:1,max:2,step:.01},{key:"hp",type:"boolean",label:"Show High Range",default:!1},{key:"sd",type:"boolean",label:"Show Standard Deviation Line",default:!1},{key:"highColor",type:"color",label:"Alert",default:"#00ff00"},{key:"normalColor",type:"color",label:"Normal",default:"#808080"},{key:"rangeColor",type:"color",label:"Range",default:"#ffa500"},{key:"bandColor",type:"color",label:"Band",default:"#00ffff"}],plots:[{key:"wvf",type:"histogram",title:"Williams Vix Fix",style:{lineWidth:4,base:0},colorBy:({index:e,values:l,settings:t})=>{const o=l.wvf?.[e],n=l.alertUpper?.[e],r=l.alertHigh?.[e],a=(e,l)=>"string"==typeof t[e]?t[e]:l;if(null==o)return;return null!=n&&o>=n||null!=r&&o>=r?a("highColor","#00ff00"):a("normalColor","#808080")}},{key:"rangeHigh",type:"line",title:"Range High Percentile",colorKey:"rangeColor",style:{lineWidth:4}},{key:"rangeLow",type:"line",title:"Range Low Percentile",colorKey:"rangeColor",style:{lineWidth:4}},{key:"upperBand",type:"line",title:"Upper Band",colorKey:"bandColor",style:{lineWidth:3}}],calc:(e,l)=>{const t=e.length,o=e.map(e=>e.close),n=e.map(e=>e.low),r=D(l,"pd",22),a=D(l,"bbl",20),i=D(l,"mult",2),c=D(l,"lb",50),u=D(l,"ph",.85),f=D(l,"pl",1.01),b=!0===l.hp,h=!0===l.sd,g=p(o,r),k=new Array(t);for(let e=0;e<t;e++){const l=g[e];k[e]=Number.isFinite(l)&&0!==l?(l-n[e])/l*100:NaN}const w=y(k,a),C=s(k,a),v=p(k,c),N=d(k,c),A=new Array(t),x=new Array(t),S=new Array(t),B=new Array(t),K=new Array(t);for(let e=0;e<t;e++){const l=C[e]+i*w[e],t=v[e]*u,o=N[e]*f;A[e]=Number.isFinite(l)?l:null,x[e]=Number.isFinite(t)?t:null,S[e]=h?A[e]:null,B[e]=b?x[e]:null,K[e]=b&&Number.isFinite(o)?o:null}return{wvf:m(k),rangeHigh:B,rangeLow:K,upperBand:S,alertUpper:A,alertHigh:x}}},H={id:"volume",name:"Volume",category:"Volume",placement:"pane",inputs:[{key:"color",type:"color",label:"Color",default:"#3a4666"}],plots:[{key:"volume",type:"histogram",title:"Volume",colorKey:"color",style:{base:0}}],calc:e=>({volume:m(e.map(e=>e.volume??0))})},R={id:"obv",name:"On-Balance Volume",category:"Volume",placement:"pane",inputs:[{key:"color",type:"color",label:"Color",default:"#26c6da"}],plots:[{key:"obv",type:"line",title:"OBV",colorKey:"color",style:{lineWidth:1.5}}],calc:e=>{const l=new Array(e.length).fill(NaN);let t=0;for(let o=0;o<e.length;o++){if(o>0){const l=e[o].volume??0;e[o].close>e[o-1].close?t+=l:e[o].close<e[o-1].close&&(t-=l)}l[o]=t}return{obv:m(l)}}},U={id:"adl",name:"Accumulation/Distribution",category:"Volume",placement:"pane",inputs:[{key:"color",type:"color",label:"Color",default:"#4f8cff"}],plots:[{key:"adl",type:"line",title:"A/D Line",colorKey:"color",style:{lineWidth:1.5}}],calc:e=>{const l=new Array(e.length).fill(NaN);let t=0;for(let o=0;o<e.length;o++){const n=e[o],r=n.high-n.low;r>0&&(t+=(n.close-n.low-(n.high-n.close))/r*(n.volume??0)),l[o]=t}return{adl:m(l)}}},O="__tier2",T=e=>e[O];function X(e){return{id:e.id,name:e.name,category:e.category,placement:e.placement,inputs:e.inputs,plots:e.plots,levels:e.levels,range:e.range,calc:(l,t,o)=>{const n=T(o);return function(e,l,t){const o={};for(const l of t)o[l.key]=new Array(e.length).fill(null);if(0===l.length)return o;let n=-1;for(let r=0;r<e.length;r++){for(;n+1<l.length&&l[n+1].time<=e[r].time;)n+=1;if(n<0)continue;const a=l[n].values;for(const e of t){const l=a[e.key];o[e.key][r]="number"==typeof l&&Number.isFinite(l)?l:null}}return o}(l,n?.points??[],e.plots)},attach:l=>{const t=T(l.store)??{key:"",points:[],loading:!1,unsubscribe:null,dead:!1};t.dead=!1,l.store[O]=t;const o=e=>{t.dead||(!function(e,l){const t=e[e.length-1];if(void 0===t||l.time>t.time)return void e.push(l);if(l.time===t.time)return void(e[e.length-1]=l);let o=0,n=e.length;for(;o<n;){const t=o+n>>1;e[t].time<l.time?o=t+1:n=t}e[o]?.time===l.time?e[o]=l:e.splice(o,0,l)}(t.points,e),l.requestRecompute())};return(()=>{const n=(()=>{const e=l.bars();return{settings:l.settings(),bars:e,from:e.length>0?e[0].time:0,to:e.length>0?e[e.length-1].time:0}})(),r=function(e,l){return(e.refetchOn??[]).map(e=>`${e}=${String(l[e])}`).join("&")}(e,n.settings);t.loading||r===t.key&&t.points.length>0?null===t.unsubscribe&&void 0!==e.subscribe&&(t.unsubscribe=e.subscribe(n,o)):(t.loading=!0,t.key=r,e.fetch(n).then(e=>{t.loading=!1,t.dead||t.key!==r||(t.points=e.slice().sort((e,l)=>e.time-l.time),l.requestRecompute())},()=>{t.loading=!1,t.key=""}),t.unsubscribe?.(),t.unsubscribe=e.subscribe?.(n,o)??null)})(),()=>{t.dead=!0,t.unsubscribe?.(),t.unsubscribe=null}}}}const j="indicators",q=[g,w,k,v,C,N,A,S,K,W,P,F,M,L,I,V,H,R,U];let $=!1;function _(){if(!$){$=!0;for(const e of q)i(e)}}_();export{U as ADL,F as ADX,I as ATR,C as BOLLINGER,q as BUILTIN_INDICATORS,M as CCI,w as EMA,S as ICHIMOKU,j as INDICATORS_TIER,W as MACD,L as MFI,R as OBV,A as PARABOLIC_SAR,K as RSI,g as SMA,P as STOCHASTIC,N as SUPERTREND,H as VOLUME,v as VWAP,V as WILLIAMS_VIX_FIX,k as WMA,X as createTier2Indicator,p as highest,d as lowest,m as nulls,_ as registerBuiltinIndicators,u as rma,s as sma,y as stdev,c as wma};
2
2
  //# sourceMappingURL=openalgo-charts.indicators.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"openalgo-charts.indicators.mjs","sources":["../src/indicators/calc.ts","../src/indicators/tier1-trend.ts","../src/indicators/tier1-momentum.ts","../src/indicators/tier1-volume.ts","../src/indicators/tier2.ts","../src/indicators/index.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["sma","values","period","n","length","out","Array","fill","NaN","sum","i","wma","denom","acc","k","rma","prev","stdev","means","m","d","Math","sqrt","highest","Infinity","lowest","nulls","v","Number","isFinite","num","s","src","movingAverage","id","name","color","kernel","category","placement","inputs","key","type","label","default","min","max","step","plots","title","colorKey","style","lineWidth","calc","bars","ma","sourceValues","SMA","WMA","EMA","ema","BOLLINGER","mult","basis","dev","upper","map","b","lower","VWAP","options","value","perSession","anchor","pv","vol","isNewIstDay","time","volume","vwap","SUPERTREND","st","supertrend","up","down","p","live","push","direction","PARABOLIC_SAR","markersOnly","markerRadius","sar","inc","rising","close","low","high","ep","af","lo1","hi1","lo2","hi2","shift","j","ICHIMOKU","fills","between","colorUpKey","colorDownKey","opacity","conv","base","lag","disp","mid","hi","lo","conversion","baseLine","spanA","c","spanB","closes","lagging","source","RSI","rsi","levels","price","dashed","range","MACD","fast","slow","macd","f","signal","histogram","STOCHASTIC","span","ADX","tr","trueRange","plusDm","minusDm","trR","plusR","minusR","plusDi","minusDi","dx","abs","start","findIndex","adx","smoothed","slice","CCI","tp","avg","md","cci","MFI","pos","neg","flow","q","mfi","ATR","atr","VOLUME","OBV","obv","ADL","adl","STATE","stateOf","store","createTier2Indicator","_settings","state","points","plot","align","attach","ctx","loading","unsubscribe","dead","onPoint","point","last","undefined","splice","upsert","requestRecompute","settings","from","to","context","refetchOn","String","join","cacheKey","subscribe","fetch","then","sort","a","load","INDICATORS_TIER","BUILTIN_INDICATORS","_registered","registerBuiltinIndicators","descriptor","registerIndicator"],"mappings":"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"}
1
+ {"version":3,"file":"openalgo-charts.indicators.mjs","sources":["../src/indicators/calc.ts","../src/indicators/tier1-trend.ts","../src/indicators/tier1-momentum.ts","../src/indicators/tier1-volume.ts","../src/indicators/tier2.ts","../src/indicators/index.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["sma","values","period","n","length","out","Array","fill","NaN","sum","bad","i","v","Number","isFinite","gone","wma","denom","acc","k","rma","prev","stdev","means","m","d","Math","sqrt","highest","Infinity","lowest","nulls","num","s","src","movingAverage","id","name","color","kernel","category","placement","inputs","key","type","label","default","min","max","step","plots","title","colorKey","style","lineWidth","calc","bars","ma","sourceValues","SMA","WMA","EMA","ema","BOLLINGER","mult","basis","dev","upper","map","b","lower","VWAP","options","value","perSession","anchor","pv","vol","isNewIstDay","time","volume","vwap","SUPERTREND","st","supertrend","up","down","p","live","push","direction","PARABOLIC_SAR","markersOnly","markerRadius","sar","inc","rising","close","low","high","ep","af","lo1","hi1","lo2","hi2","shift","j","ICHIMOKU","fills","between","colorUpKey","colorDownKey","opacity","conv","base","lag","disp","mid","hi","lo","conversion","baseLine","spanA","c","spanB","closes","lagging","source","RSI","rsi","levels","price","dashed","range","MACD","colorBy","index","settings","histogram","pick","fallback","fast","slow","macd","f","signal","STOCHASTIC","span","ADX","tr","trueRange","plusDm","minusDm","trR","plusR","minusR","plusDi","minusDi","dx","abs","start","findIndex","adx","smoothed","slice","CCI","tp","avg","md","cci","MFI","pos","neg","flow","q","mfi","ATR","atr","WILLIAMS_VIX_FIX","wvf","alertUpper","alertHigh","str","lows","pd","bbl","lb","ph","pl","showRange","hp","showBand","sd","highestClose","hc","highestWvf","lowestWvf","plotUpper","plotHigh","plotLow","rh","rl","rangeHigh","rangeLow","upperBand","VOLUME","OBV","obv","ADL","adl","STATE","stateOf","store","createTier2Indicator","_settings","state","points","plot","align","attach","ctx","loading","unsubscribe","dead","onPoint","point","last","undefined","splice","upsert","requestRecompute","from","to","context","refetchOn","String","join","cacheKey","subscribe","fetch","then","sort","a","load","INDICATORS_TIER","BUILTIN_INDICATORS","_registered","registerBuiltinIndicators","descriptor","registerIndicator"],"mappings":"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"}