@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.
54 lines (50 loc) • 3.13 kB
text/typescript
import { SmartApiEnhanced, OrderStatus, InstrumentDump, ScripLtpMap, CandleInterval } from '@thoshpathi/utils-smartapi';
import { Logger } from '@thoshpathi/utils-core';
import { InstrumentDumpRepo, IndexScripRepo, OrderRepo, IndexTrendMapData, Order, CloseOrderParams, NewOrder, OpenOrderParams, OrderCloseTrackData, ResultSetHeader } from '../types.mjs';
interface IOrderHelper {
handleScripsTrendReversal(data: IndexTrendMapData): Promise<void>;
handleDaySquareoff(): Promise<boolean | undefined>;
processOrdersSquareoff(openOrders: Order[], status: OrderStatus): Promise<boolean | undefined>;
handleOpenOrdersTracking(): Promise<void>;
}
interface OrderHelperParams {
smartapi: SmartApiEnhanced;
logger: Logger;
instrumentDumpRepo: InstrumentDumpRepo;
indexScripRepo: IndexScripRepo;
orderRepo: OrderRepo;
orderVerfiyWaitMs?: number;
strikeRoundBy?: 50 | 100;
minimumPremium?: number;
}
declare abstract class OrderHelper implements IOrderHelper {
protected readonly smartapi: SmartApiEnhanced;
protected readonly logger: Logger;
protected readonly instrumentDumpRepo: InstrumentDumpRepo;
protected readonly indexScripRepo: IndexScripRepo;
protected readonly orderRepo: OrderRepo;
protected readonly orderVerfiyWaitMs: number;
protected readonly strikeRoundBy: number;
protected readonly minimumPremium: number;
constructor(params: OrderHelperParams);
abstract handleScripsTrendReversal(indexTrendData: IndexTrendMapData): Promise<void>;
abstract handleDaySquareoff(): Promise<boolean | undefined>;
abstract processOrdersSquareoff(openOrders: Order[], status: OrderStatus): Promise<boolean | undefined>;
abstract handleOpenOrdersTracking(): Promise<void>;
protected abstract closeTrendOpenOrders(...args: unknown[]): Promise<boolean | undefined>;
protected abstract placeNewTrendOrders(...args: unknown[]): Promise<void>;
protected abstract generateCloseOrderParams(openOrders: Order[], status: OrderStatus, ...args: unknown[]): Promise<CloseOrderParams[] | undefined>;
protected getScripLtpMap(symbols: string[], instrumentDumps: InstrumentDump[]): Promise<ScripLtpMap>;
protected getOrdersLtpMap(orders: Array<Order | NewOrder>): Promise<ScripLtpMap>;
protected generateOrderId(): string;
protected getStrike(ltp: number): number;
private getNakedFixedPremiumScrips;
private getStrategyScripMap;
protected getTrendNewOrders({ candleInterval, scripTrendMap, }: IndexTrendMapData): Promise<NewOrder[] | undefined>;
protected updateEntryPriceOfOrders(newOrders: NewOrder[]): Promise<NewOrder[]>;
protected getOpenOrders(params: OpenOrderParams): Promise<undefined | Order[]>;
protected getOrderCloseTrackDatas(): Promise<undefined | OrderCloseTrackData[]>;
protected createOrders(newOrders: NewOrder[], candleInterval: CandleInterval): Promise<ResultSetHeader | undefined>;
protected updateOrdersClose(closeOrders: CloseOrderParams[]): Promise<ResultSetHeader[] | undefined>;
}
export { type IOrderHelper, OrderHelper, type OrderHelperParams, OrderHelper as default };