import { OrderState , Order , Contract , LimitOrder , MarketOrder , MarketCloseOrder , StopOrder , StopLimitOrder , TrailingStopOrder , } from '@stoqey/ib' ; export type action = 'BUY' | 'SELL' ; export type OrderStatusType = 'PendingSubmit' | 'PendingCancel' | 'PreSubmitted' | 'Submitted' | 'ApiCancelled' | 'Cancelled' | 'Filled' ; export interface ORDER { orderId : number ; action : action ; totalQuantity : number ; orderType : string ; lmtPrice : number ; auxPrice : number ; tif : string ; ocaGroup : string ; account : string ; openClose : string ; origin : number ; orderRef : string ; clientId : number ; permId : number ; outsideRth : boolean ; hidden : boolean ; discretionaryAmt : number ; goodAfterTime : string ; faGroup : string ; faMethod : string ; faPercentage : string ; faProfile : string ; goodTillDate : string ; rule80A : string ; percentOffset : number ; settlingFirm : string ; shortSaleSlot : number ; designatedLocation : string ; exemptCode : number ; auctionStrategy : number ; startingPrice : number ; stockRefPrice : number ; delta : number ; stockRangeLower : number ; stockRangeUpper : number ; displaySize ? : any ; blockOrder : boolean ; sweepToFill : boolean ; allOrNone : boolean ; minQty : number ; ocaType : number ; eTradeOnly : boolean ; firmQuoteOnly : boolean ; nbboPriceCap : number ; parentId : number ; triggerMethod : number ; volatility : number ; volatilityType : number ; deltaNeutralOrderType : string ; deltaNeutralAuxPrice : number ; deltaNeutralConId : number ; deltaNeutralSettlingFirm : string ; deltaNeutralClearingAccount : string ; deltaNeutralClearingIntent : string ; deltaNeutralOpenClose : string ; deltaNeutralShortSale : boolean ; deltaNeutralShortSaleSlot : number ; deltaNeutralDesignatedLocation : string ; continuousUpdate : number ; referencePriceType : number ; trailStopPrice : number ; trailingPercent : number ; basisPoints : number ; basisPointsType : number ; scaleInitLevelSize : number ; scaleSubsLevelSize : number ; scalePriceIncrement : number ; hedgeType : string ; optOutSmartRouting : boolean ; clearingAccount : string ; clearingIntent : string ; notHeld : boolean ; algoStrategy : string ; whatIf : boolean ; } export interface OrderWithContract extends Order , Contract { orderId : number ; orderState : OrderState ; } export interface OrderStatus { status : OrderStatusType ; filled : number ; remaining : number ; avgFillPrice : number ; permId : any ; parentId : any ; lastFillPrice : number ; clientId : any ; whyHeld : number ; } export type OrderAction = 'BUY' | 'SELL' ; export type OrderType = 'limit' | 'market' | 'marketClose' | 'stop' | 'stopLimit' | 'trailingStop' ; export const GetOrderType = ( orderType ) : typeof LimitOrder | typeof MarketCloseOrder | typeof StopOrder | typeof StopLimitOrder | typeof TrailingStopOrder | typeof MarketOrder => { switch ( orderType ) { case 'limit' : return LimitOrder ; case 'marketClose' : return MarketCloseOrder ; case 'stop' : return StopOrder ; case 'stopLimit' : return StopLimitOrder ; case 'trailingStop' : return TrailingStopOrder ; default : case 'market' : return MarketOrder ; } } ; export interface OrderStock { symbol : string ; action : OrderAction ; type : OrderType ; parameters : any [ ] ; size ? : number ; capital ? : number ; exitTrade ? : boolean ; exitParams ? : { /**
         * When exiting a trade
         * Create sale
         */ entryTime : Date ; entryPrice : number ; exitTime : Date ; exitPrice : number ; } ; } export interface CreateSale { entryPrice : number ; entryTime : Date ; exitTime : Date ; exitPrice : number ; symbol : string ; capital : number ; profit ? : number ; website ? : string ; industry ? : string ; shortName ? : string ; }