@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
text/typescript
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 };