hft-js
Version:
High-Frequency Trading in Node.js
111 lines (110 loc) • 4.49 kB
TypeScript
import { CTPProvider } from "./provider.js";
import type { OffsetType, OrderData, OrderFlag, ProductType, SideType, TickData } from "./typedef.js";
import type { ICancelOrderResultReceiver, ICommissionRateReceiver, IInstrumentReceiver, IInstrumentsReceiver, ILifecycleListener, IMarginRateReceiver, IOrderReceiver, IOrdersReceiver, IPlaceOrderResultReceiver, IPositionDetailsReceiver, IPositionReceiver, IPositionsReceiver, ITraderProvider, ITradingAccountsReceiver } from "./interfaces.js";
export type CTPUserInfo = {
BrokerID: string;
UserID: string;
Password: string;
InvestorID: string;
UserProductInfo: string;
AuthCode: string;
AppID: string;
};
export type FastQueryLastTickFunc = (instrumentId: string) => TickData | undefined;
export type TraderOptions = {
fastQueryLastTick?: FastQueryLastTickFunc;
};
export declare class Trader extends CTPProvider implements ITraderProvider {
private traderApi?;
private tradingDay;
private frontId;
private sessionId;
private orderRef;
private accountsQueryTime;
private positionDetailsChanged;
private readonly fastQueryLastTick?;
private readonly userInfo;
private readonly receivers;
private readonly accounts;
private readonly positionDetails;
private readonly instruments;
private readonly positions;
private readonly orders;
private readonly trades;
private readonly marginRates;
private readonly commRates;
private readonly placeOrders;
private readonly cancelOrders;
private readonly marketOrdersQueue;
private readonly priceLimit;
private readonly orderStatistics;
private readonly marginRatesQueue;
private readonly commRatesQueue;
private readonly accountsQueue;
private readonly positionDetailsQueue;
constructor(flowTdPath: string, frontTdAddrs: string | string[], userInfo: CTPUserInfo, options?: TraderOptions);
open(lifecycle: ILifecycleListener): boolean;
close(lifecycle: ILifecycleListener): void;
addOrderReceiver(receiver: IOrderReceiver): void;
removeOrderReceiver(receiver: IOrderReceiver): void;
getTradingDay(): number;
getOrderStatistics(): Readonly<{
symbol: string;
places: number;
entrusts: number;
filleds: number;
cancels: number;
rejects: number;
}>[];
getOrderStatistic(symbol: string): Readonly<{
symbol: string;
places: number;
entrusts: number;
filleds: number;
cancels: number;
rejects: number;
}>;
queryCommissionRate(symbol: string, receiver: ICommissionRateReceiver): void;
queryMarginRate(symbol: string, receiver: IMarginRateReceiver): void;
queryInstrument(symbol: string, receiver: IInstrumentReceiver): void;
queryPosition(symbol: string, receiver: IPositionReceiver): void;
queryInstruments(receiver: IInstrumentsReceiver, type?: ProductType): void;
queryTradingAccounts(receiver: ITradingAccountsReceiver): void;
queryPositionDetails(receiver: IPositionDetailsReceiver): void;
queryPositions(receiver: IPositionsReceiver): void;
queryOrders(receiver: IOrdersReceiver): void;
private _placeLimitOrder;
private _clearAllMarketOrders;
private _placeMarketOrder;
placeOrder(symbol: string, offset: OffsetType, side: SideType, volume: number, price: number, flag: OrderFlag, receiver: IPlaceOrderResultReceiver): void;
cancelOrder(order: OrderData, receiver: ICancelOrderResultReceiver): void;
private _toSymbol;
private _calcOrderId;
private _calcReceiptId;
private _calcOrderStatus;
private _calcOrderFlag;
private _calcSideType;
private _toDirection;
private _calcOffsetType;
private _toOffsetFlag;
private _calcProductType;
private _calcOptionsType;
private _ensurePositionInfo;
private _ensureOrderStatistic;
private _calcPosition;
private _recordPending;
private _recoverPending;
private _freezePosition;
private _unfreezePosition;
private _toTradeData;
private _toOrderData;
private _toInstrumentData;
private _toCommissionRate;
private _toMarginRate;
private _toTradingAccount;
private _toPositionDetail;
private _toPositionData;
private _processMarginRatesQueue;
private _processCommissionRatesQueue;
}
export declare const createTrader: (flowTdPath: string, frontTdAddrs: string | string[], userInfo: CTPUserInfo, options?: TraderOptions) => Trader;