UNPKG

@thoshpathi/utils-smartapi-order

Version:

Utility functions for placing live and dummy orders using Angel One's SmartAPI, with helper methods for streamlined trading workflows.

105 lines (102 loc) 2.94 kB
import { InstrumentDump, Trend, CandleInterval, ScripIdentify, Transaction, OrderStatus } from '@thoshpathi/utils-smartapi'; type AlgoMode = "dummy" | "live"; type SpreadType = "call_spread" | "put_spread"; type OptionLabel = "ATM" | `${number}-ITM` | `${number}-OTM`; type OptionType = "CE" | "PE"; type Strategy = Trend | "SPREAD"; interface InstrumentDumpRepo { getMany(symbols: string[]): Promise<InstrumentDump[]>; } interface IndexScrip extends InstrumentDump { strategy: Strategy; noOfLots: number; contractPrefix: string; profitPoints: number; stoplossPoints: number; bullishSpread: SpreadType; bearishSpread: SpreadType; leg1Gap: OptionLabel; leg2Gap: OptionLabel; premium?: number; } interface IndexScripRepo { getAll(params: { activeOnly?: boolean; }): Promise<IndexScrip[]>; } type IndexTrendData = { indexScrip: IndexScrip; trend: "BUY" | "SELL"; ltp: number; }; /** * Map data of <symbol, {}> */ type ScripTrendDataMap = Map<string, { symbol: string; trend: Trend; ltp?: number; }>; /** * Map data of <symbol, IndexScripTrendData> */ type IndexTrendMap = Map<string, IndexTrendData>; type IndexTrendMapData = { candleInterval: CandleInterval; scripTrendMap: IndexTrendMap; }; interface Order extends ScripIdentify { id: number; candleInterval: CandleInterval; transaction: Transaction; qty: number; entryOrderId: string; entryPrice: number; entryAt: string; exitOrderId?: string; exitPrice?: number; exitAt?: string; targetPrice?: number; stoplossPrice?: number; isClosed: boolean; status: OrderStatus; updatedAt: string; } interface NewOrder extends Omit<Order, "id" | "createdAt" | "updatedAt"> { id?: number; createdAt?: string; updatedAt?: string; } interface OpenOrderParams { symbols?: string[]; names?: string[]; candleInterval?: CandleInterval; } interface OrderRepo { getOpenOrders(params: OpenOrderParams): Promise<Order[]>; createOrders(newOrders: NewOrder[]): Promise<ResultSetHeader>; closeOpenOrders(closeOrders: CloseOrderParams[]): Promise<ResultSetHeader[]>; } interface CloseOrderParams { id: number; symbol: string; candleInterval: CandleInterval; exitOrderid: string; exitPrice: number; exitAt?: string; status: OrderStatus; } type OrderCloseTrackData = { order: Order; status: OrderStatus; ltp: number; }; interface ResultSetHeader { affectedRows: number; fieldCount: number; info: string; insertId: number; serverStatus: number; warningStatus: number; } export type { AlgoMode, CloseOrderParams, IndexScrip, IndexScripRepo, IndexTrendData, IndexTrendMap, IndexTrendMapData, InstrumentDumpRepo, NewOrder, OpenOrderParams, OptionLabel, OptionType, Order, OrderCloseTrackData, OrderRepo, ResultSetHeader, ScripTrendDataMap, SpreadType, Strategy };