UNPKG

@thoshpathi/utils-smartapi

Version:

Extended utilities for Angel One's smartapi-javascript SDK, including custom methods and helpers for market data like candles, P&L, and more.

79 lines (75 loc) 2.64 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/candle_utils.ts var candle_utils_exports = {}; __export(candle_utils_exports, { default: () => getLastCompletedMarketCandle, getLastCompletedMarketCandle: () => getLastCompletedMarketCandle }); module.exports = __toCommonJS(candle_utils_exports); // src/configs.ts var candleMaxDayConfigs = { ONE_MINUTE: 30, THREE_MINUTE: 60, FIVE_MINUTE: 100, TEN_MINUTE: 100, FIFTEEN_MINUTE: 200, THIRTY_MINUTE: 200, ONE_HOUR: 400, ONE_DAY: 2e3 }; var candleFetchDayConfigs = Object.fromEntries( Object.entries(candleMaxDayConfigs).map(([key, value]) => [ key, Math.floor(value / 5) ]) ); var intervalMinuteConfigs = { ONE_MINUTE: 1, THREE_MINUTE: 3, FIVE_MINUTE: 5, TEN_MINUTE: 10, FIFTEEN_MINUTE: 15, THIRTY_MINUTE: 30, ONE_HOUR: 60, ONE_DAY: 24 * 60 }; // src/candle_utils.ts function getLastCompletedMarketCandle(interval, marketOpenTime = "09:15:00") { const [openHour, openMinute] = marketOpenTime.split(":").map((s) => +s.trim()); const marketOpen = /* @__PURE__ */ new Date(); marketOpen.setHours(openHour, openMinute, 0, 0); const diffMs = +/* @__PURE__ */ new Date() - +marketOpen; if (diffMs < 0) return null; const diffMinutes = Math.floor(diffMs / 6e4); const intervalMinutes = intervalMinuteConfigs[interval]; let completedCandles = Math.floor(diffMinutes / intervalMinutes); const minutesSinceLastCandle = diffMinutes % intervalMinutes; if (minutesSinceLastCandle === 0 && diffMinutes !== 0) { completedCandles -= 1; } const lastCandleMinutes = completedCandles * intervalMinutes; const lastCandleTime = new Date(marketOpen); lastCandleTime.setMinutes(marketOpen.getMinutes() + lastCandleMinutes); return lastCandleTime; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { getLastCompletedMarketCandle });