UNPKG

@neabyte/candlestick-cli

Version:

Beautiful terminal candlestick charts with real-time trading data. Create stunning ASCII art charts directly in your terminal with support for live market data, custom colors, and professional trading visualization.

1 lines 1.24 kB
export class CandleSet{candles;minPrice=0;maxPrice=0;minVolume=0;maxVolume=0;variation=0;average=0;lastPrice=0;cumulativeVolume=0;constructor(i){this.candles=i,this.computeAll()}addCandles(i){this.candles.push(...i),this.computeAll()}setCandles(i){this.candles=i,this.computeAll()}computeAll(){if(0===this.candles.length)return void this.resetStats();const i=this.candles.flatMap(i=>[i.high,i.low]);this.minPrice=Math.min(...i),this.maxPrice=Math.max(...i);const t=this.candles.map(i=>i.volume).filter(i=>void 0!==i);t.length>0?(this.minVolume=Math.min(...t),this.maxVolume=Math.max(...t),this.cumulativeVolume=t.reduce((i,t)=>i+t,0)):(this.minVolume=0,this.maxVolume=0,this.cumulativeVolume=0);const e=this.candles[0].open,s=this.candles[this.candles.length-1].close;this.lastPrice=s,this.variation=(s-e)/e*100,this.average=i.reduce((i,t)=>i+t,0)/i.length}resetStats(){this.minPrice=0,this.maxPrice=0,this.minVolume=0,this.maxVolume=0,this.variation=0,this.average=0,this.lastPrice=0,this.cumulativeVolume=0}getStats(){return{minPrice:this.minPrice,maxPrice:this.maxPrice,minVolume:this.minVolume,maxVolume:this.maxVolume,variation:this.variation,average:this.average,lastPrice:this.lastPrice,cumulativeVolume:this.cumulativeVolume}}}