export default Tqsdk; /** * @external EventEmitter */ /** * @extends EventEmitter * @alias module:TQSDK */ declare class Tqsdk extends EventEmitter { /** * @param {object} [opts={}] 描述 TQSDK 构造参数 * @param {string=} [opts.symbolsServerUrl=https://openmd.shinnytech.com/t/md/symbols/latest.json] 合约服务地址 * @param {string=} [opts.wsQuoteUrl=wss://openmd.shinnytech.com/t/md/front/mobile] 行情连接地址 * @param {boolean=} [opts.autoInit=true] TQSDK 初始化后立即开始行情连接 * @param {string=} [opts.clientSystemInfo=] 客户端信息 * @param {string=} [opts.clientAppId=] 客户端信息 * @param {object=} [opts.data={}] 存储数据对象 * @param {object} [wsOption={}] 描述 TQSDK 构造参数 * @param {number=} [wsOption.reconnectInterval=3000] websocket 自动重连时间间隔 * @param {number=} [wsOption.reconnectMaxTimes=2] websocket 自动重连最大次数 * @param {object=} [wsOption.WebSocket=WebSocket] 浏览器 WebSocket 对象,在 nodejs 运行时,需要传入 WebSocket * * @fires TQSDK#ready * @fires TQSDK#rtn_data * @fires TQSDK#rtn_brokers * @fires TQSDK#notify * @fires TQSDK#error * * @example * // 浏览器 * const tqsdk = new TQSDK() * tqsdk.on('ready', function () { * console.log(tqsdk.getQuote('SHFE.au2006')) * }) * tqsdk.on('rtn_brokers', function (brokers) { * console.log(brokers) * }) * @example * // nodejs * const TQSDK = require('./dist/umd/tqsdk-nocache') * const WebSocket = require('ws') * const tqsdk = new TQSDK({}, {WebSocket}) * tqsdk.on('ready', function () { * console.log(tqsdk.getQuote('SHFE.au2006')) * }) * tqsdk.on('rtn_brokers', function (brokers) { * console.log(brokers) * }) * * @example * // 1 autoInit 为 true,构造函数会执行 tqsdk.initMdWebsocket(), tqsdk.initTdWebsocket(), 代码中不需要再运行 * // 推荐使用这种初始化方式 * const tqsdk = new TQSDK({autoInit: true}) // 等价于 const tqsdk = new TQSDK() * tqsdk.on('ready', function(){ * console.log(tqsdk.getQuote('DCE.m2009')) * }) * * // 2 autoInit 为 false,构造函数不会去执行 tqsdk.initMdWebsocket(), tqsdk.initTdWebsocket() * // 在代码中需要的地方再执行 * const tqsdk = new TQSDK({autoInit: false}) * tqsdk.initMdWebsocket() * // 如果不运行 tqsdk.initMdWebsocket(), 则不会有 ready 事件发生 * tqsdk.on('ready', function(){ * console.log(tqsdk.getQuote('DCE.m2009')) * }) */ constructor({ symbolsServerUrl, wsQuoteUrl, requestMethod, clientSystemInfo, clientAppId, autoInit, accessToken, data }?: { symbolsServerUrl?: string | undefined; wsQuoteUrl?: string | undefined; autoInit?: boolean | undefined; clientSystemInfo?: string | undefined; clientAppId?: string | undefined; data?: object | undefined; }, wsOption?: { reconnectInterval?: number | undefined; reconnectMaxTimes?: number | undefined; WebSocket?: object | undefined; }); _insUrl: string; _mdUrl: string; clientSystemInfo: string; clientAppId: string; wsOption: { reconnectInterval?: number | undefined; reconnectMaxTimes?: number | undefined; WebSocket?: object | undefined; }; requestMethod: any; _accessToken: any; _prefix: string; dm: DataManager; brokers_list: any; brokers: any; trade_accounts: {}; subscribeQuotesSet: Set; quotesWs: TqQuoteWebsocket; quotesInfo: {}; /** * 初始化行情链接 * @fires TQSDK#ready * * @example * const tqsdk = new TQSDK({autoInit: false}) * tqsdk.initMdWebsocket() * tqsdk.on('ready', function(){ * console.log(tqsdk.getQuote('DCE.m2009')) * }) */ initMdWebsocket(): void; /** * 初始化交易链接 * @fires TQSDK#rtn_brokers * @example * const tqsdk = new TQSDK({autoInit: false}) * tqsdk.initMdWebsocket() * tqsdk.initTdWebsocket() * tqsdk.on('rtn_brokers', function(brokers){ * console.log(brokers) * }) */ initTdWebsocket(): void; /** * 添加 websocket 数据源 * @private * @param {string} url */ private addWebSocket; /** * 获取数据 * @param {object} payload * @param {string} [payload.name=users] * @param {string=} [payload.bid] 当 name in ['user', 'session', 'accounts', 'account', 'positions', 'position', 'orders', 'order', 'trades', 'trade'] * @param {string=} [payload.user_id] 当 name in ['user', 'session', 'accounts', 'account', 'positions', 'position', 'orders', 'order', 'trades', 'trade'] * @param {string=} [payload.currency] 当 name='account' * @param {string=} [payload.symbol] 当 name in ['position', 'quote', 'ticks', 'klines'] * @param {string=} [payload.order_id] 当 name='order' * @param {string=} [payload.trade_id] 当 name='trade' * @param {string=} [payload.trading_day] 当 name='his_settlement' * @param {string=} [payload.chart_id] 当 name='chart' * @param {string=} [payload.input] 当 name='quotes' * @param {string=} [payload.duration] 当 name='klines' * @returns {object|null} */ get({ name, bid, user_id, currency, symbol, order_id, trade_id, trading_day, chart_id, input, duration }?: { name?: string; bid?: string | undefined; user_id?: string | undefined; currency?: string | undefined; symbol?: string | undefined; order_id?: string | undefined; trade_id?: string | undefined; trading_day?: string | undefined; chart_id?: string | undefined; input?: string | undefined; duration?: string | undefined; }): object | null; /** * 获取数据对象 * @param {list} pathArray * @param {object} dm 获取对象数据源,默认为当前实例的 datamanager * @returns {object|null} * * @example * // 获取某个合约下市时间 * // 推荐使用这种方式,先获取 quote 对象的引用 * let quote = tqdsk.getQuote('SHFE.au2006') * let dt = quote.expire_datetime * * // 以上代码等价于 * let dt = tqsdk.getByPath(['quotes', 'SHFE.au2006', 'expire_datetime']) */ getByPath(pathArray: list, dm?: object): object | null; /** * 根据输入字符串查询合约列表 * @param {string} input * @param {object} filterOption 查询合约列表条件限制 * @param {boolean=} filterOption.symbol=true 是否根据合约ID匹配 * @param {boolean=} filterOption.pinyin=true 是否根据拼音匹配 * @param {boolean=} filterOption.include_expired=false 匹配结果是否包含已下市合约 * @param {boolean=} filterOption.future=true 匹配结果是否包含期货合约 * @param {boolean=} filterOption.future_index=false 匹配结果是否包含期货指数 * @param {boolean=} filterOption.future_cont=false 匹配结果是否包含期货主连 * @param {boolean=} filterOption.option=false 匹配结果是否包含期权 * @param {boolean=} filterOption.combine=false 匹配结果是否包含组合 * @returns {list} [symbol, ...] * * @example * const tqsdk = new TQSDK() * const quote = tqsdk.getQuote('SHFE.au2006') * tqsdk.on('ready', function () { * console.log(tqsdk.getQuotesByInput('huangjin')) * console.log(tqsdk.getQuotesByInput('doupo', { future_index: true, future_cont: true })) * }) */ getQuotesByInput(input: string, filterOption?: { symbol?: boolean | undefined; pinyin?: boolean | undefined; include_expired?: boolean | undefined; future?: boolean | undefined; future_index?: boolean | undefined; future_cont?: boolean | undefined; option?: boolean | undefined; combine?: boolean | undefined; }): list; /** * @private * @param {object} filterOption 筛选条件 * @param {object} quote 合约对象 * @returns {list} */ private _filterSymbol; /** * 根据合约代码获取合约对象 * @param {string} symbol 合约代码 * @returns {Quote} * * @example * const tqsdk = new TQSDK() * const quote = tqsdk.getQuote('SHFE.au2006') * tqsdk.on('rtn_data', function () { * console.log(quote.last_price, quote.pre_settlement) * }) */ getQuote(symbol: string): Quote; /** * 请求 K 线图表 * @param {object} payload * @param {string} payload.chart_id 图表 id * @param {string} payload.symbol 合约代码 * @param {number} payload.duration 图表周期,0 表示 tick, 1e9 表示 1s, UnixNano 时间 * @param {number=} payload.view_width 图表柱子宽度 * @param {number=} payload.left_kline_id 指定一个K线id,向右请求view_width个数据 * @param {number=} payload.trading_day_start 指定交易日,返回对应的数据 * @param {number=} payload.trading_day_count 请求交易日天数 * @param {number=} payload.focus_datetime 使得指定日期的K线位于屏幕第M个柱子的位置 * @param {number=} payload.focus_position 使得指定日期的K线位于屏幕第M个柱子的位置 * @returns {object} chart * * @example * let tqsdk = new TQSDK() * let chart = tqsdk.setChart({symbol: 'SHFE.au2006', duration: 60 * 1e9, view_width: 100}) * tqsdk.on('rtn_data', function(){ * console.log('chart.right_id', chart && chart.right_id) * }) */ setChart(payload: { chart_id: string; symbol: string; duration: number; view_width?: number | undefined; left_kline_id?: number | undefined; trading_day_start?: number | undefined; trading_day_count?: number | undefined; focus_datetime?: number | undefined; focus_position?: number | undefined; }): object; /** * 获取 chart 对象 * @param {string} chart_id * @returns {object} {} */ getChart(chart_id: string): object; /** * 获取 K 线序列 * @param {string} symbol * @param {number} dur * @returns {object} {data, last_id} */ getKlines(symbol: string, dur: number): object; /** * 获取 Ticks 序列 * @param {string} symbol * @returns {object} {data, last_id} */ getTicks(symbol: string): object; /** * 判断某个对象是否最近一次有变动 * @param {object|list} target|pathArray 检查变动的对象或者路径数组 * @returns {boolean} * * @example * let tqsdk = new TQSDK() * let quote = tqsdk.getQuote('DCE.m2006') * let quote1 = tqsdk.getQuote('DCE.cs2006') * tqsdk.on('rtn_data', function(){ * if (tqsdk.isChanging(quote)) { * console.log('DCE.m2006 updated', quote.datetime, quote.last_price, quote.volume) * } * if (tqsdk.isChanging(['quotes', 'DCE.cs2006'])) { * console.log('DCE.cs2006 updated', quote1.datetime, quote1.last_price, quote1.volume) * } * }) */ isChanging(target: object | list): boolean; /** * 订阅合约, 手动订阅合约 * @param {list|string} quotes=[] * * @example * let tqsdk = new TQSDK() * tqsdk.subscribeQuote('SHFE.au2006') * tqsdk.subscribeQuote(['SHFE.au2006', 'DCE.m2008']) */ subscribeQuote(quotes?: list | string): void; /** * 添加期货账户 * @param {object} payload * @param {string} payload.bid 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.password 密码 * @returns {object} account {bid, user_id, password, ws, dm} * * @example * const tqsdk = new TQSDK() * const account = { bid: '快期模拟', user_id: 'test123', password: '123456' } * tqsdk.on('rtn_brokers', function(brokers){ * tqsdk.addAccount(account) // 仅添加期货账户信息并建立链接,不会登录账户 * tqsdk.login(account) // 发送登录期货账户的请求 * }) * tqsdk.on('rtn_data', function(){ * console.log(tqsdk.isLogined(account)) * }) */ addAccount(payload: { bid: string; user_id: string; password: string; }): object; /** * 删除期货账户 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 */ removeAccount(payload: { bid?: string; user_id: string; }): void; /** * 登录期货账户 * @param {object} payload * @param {string} payload.bid 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.password 密码 * * @example * const tqsdk = new TQSDK() * const account = { bid: '快期模拟', user_id: 'test123', password: '123456' } * tqsdk.on('rtn_brokers', function(brokers){ * tqsdk.login(account) // 发送登录期货账户的请求 * }) * tqsdk.on('rtn_data', function(){ * console.log(tqsdk.isLogined(account)) * }) */ login(payload: { bid: string; user_id: string; password: string; }): void; /** * 判断账户是否登录 [x] * @param {object} payload * @param {string} [payload.bid] * @param {string} payload.user_id * @returns {boolean} */ isLogined(payload: { bid?: string; user_id: string; }): boolean; /** * 刷新账户信息,用于账户资金没有同步正确 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 */ refreshAccount(payload: { bid?: string; user_id: string; }): void; /** * 刷新全部账户信息,用于账户资金没有同步正确 */ refreshAccounts(): void; /** * 获取全部账户信息 * @returns {list} * * @example * const tqsdk = new TQSDK() * const account = { bid: '快期模拟', user_id: 'test123', password: '123456' } * const account1 = { bid: '快期模拟', user_id: 'test1234', password: '123456' } * tqsdk.on('rtn_brokers', function(brokers){ * tqsdk.login(account) // 发送登录期货账户的请求 * tqsdk.login(account1) // 发送登录期货账户的请求 * // ........ * const accounts = tqsdk.getAllAccounts() * console.log(accounts) * }) */ getAllAccounts(payload: any): list; /** * 获取账户资金信息 * @param {object} payload * @param {string} [payload.bid] * @param {string} payload.user_id * @returns {object|null} * * @example * const tqsdk = new TQSDK() * const account = { bid: '快期模拟', user_id: 'test123', password: '123456' } * tqsdk.on('rtn_brokers', function(brokers){ * tqsdk.addAccount(account) // 仅添加期货账户信息并建立链接,不会登录账户 * tqsdk.login(account) // 发送登录期货账户的请求 * }) * tqsdk.on('rtn_data', function(){ * if (tqsdk.isLogined(account)) { * let account = tqsdk.getAccount(account) * console.log(account.balance, account.risk_ratio) * } * }) */ getAccount(payload: { bid?: string; user_id: string; }): object | null; /** * 获取期货账户对象唯一 key 值 * @private * @param {object} payload * @param {string} [payload.bid] * @param {string} payload.user_id * @returns {string} payload.bid + ',' + payload.user_id or '' */ private _getAccountKey; /** * 获取期货账户对象 * @private * @param {object} payload * @param {string} [payload.bid] * @param {string} payload.user_id * @returns {object} account = {bid, user_id, password, ws, dm} */ private _getAccountRef; /** * 下单 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.exchange_id 交易所 * @param {string} payload.instrument_id 合约名称 * @param {string} payload.direction 方向 [`BUY` | `SELL`] * @param {string} payload.offset 开平 [`OPEN` | `CLOSE` | `CLOSETODAY`] * @param {string} payload.price_type=LIMIT 限价 [`LIMIT` | `ANY`] * @param {number} payload.limit_price 价格 * @param {number} payload.volume 手数 * @returns {object} order={order_id, status, ...} * * @example * let tqsdk = new TQSDK() * const account = { bid: '快期模拟', user_id: 'test123', password: '123456' } * tqsdk.on('rtn_brokers', function(brokers){ * tqsdk.addAccount(account) // 仅添加期货账户信息并建立链接,不会登录账户 * tqsdk.login(account) // 发送登录期货账户的请求 * }) * tqsdk.on('rtn_data', function(){ * if (!tqsdk.isLogined(account)) return * let order = tqsdk.insertOrder(Object.assign({ * exchange_id: 'SHFE', * instrument_id: 'au2006', * direction: 'BUY', * offset: 'OPEN', * price_type: 'LIMIT', * limit_price: 359.62, * volume: 2 * }, account)) * console.log(order.orderId, order.status, order.volume_left) * }) */ insertOrder(payload: { bid?: string; user_id: string; exchange_id: string; instrument_id: string; direction: string; offset: string; price_type: string; limit_price: number; volume: number; }): object; /** * 下单,但是平仓单会自动先平今再平昨,不需要用户区分 CLOSE | CLOSETODAY * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.exchange_id 交易所 * @param {string} payload.instrument_id 合约名称 * @param {string} payload.direction 方向 [`BUY` | `SELL`] * @param {string} payload.offset 开平 [`OPEN` | `CLOSE`] * @param {string} payload.price_type=LIMIT 限价 [`LIMIT` | `ANY`] * @param {number} payload.limit_price 价格 * @param {number} payload.volume 手数 * @returns {list} list=[{order_id, status, ...}, ...] 返回委托单数组,可能拆分为多个单 */ autoInsertOrder(payload: { bid?: string; user_id: string; exchange_id: string; instrument_id: string; direction: string; offset: string; price_type: string; limit_price: number; volume: number; }): list; /** * 撤销委托单 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.order_id 委托单 id */ cancelOrder(payload: { bid?: string; user_id: string; order_id: string; }): void; /** * 获取账户某个合约的持仓信息 * @param {object} payload * @param {string} [payload.bid] * @param {string} payload.user_id * @param {string} payload.symbol 合约名称 * @returns {object|null} * * @example * const tqsdk = new TQSDK() * const account = { bid: '快期模拟', user_id: 'test123', password: '123456' } * tqsdk.on('rtn_brokers', function(brokers){ * tqsdk.addAccount(account) // 仅添加期货账户信息并建立链接,不会登录账户 * tqsdk.login(account) // 发送登录期货账户的请求 * }) * tqsdk.on('rtn_data', function(){ * if (tqsdk.isLogined(account)) { * let pos = tqsdk.getPosition(Object.assign({ symbol: 'SHFE.au2006' }, account)) * console.log(pos) * } * }) */ getPosition(payload: { bid?: string; user_id: string; symbol: string; }): object | null; /** * 获取账户全部持仓信息 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @returns {object|null} * * @example * const tqsdk = new TQSDK() * const account = { bid: '快期模拟', user_id: 'test123', password: '123456' } * tqsdk.on('rtn_brokers', function(brokers){ * tqsdk.addAccount(account) // 仅添加期货账户信息并建立链接,不会登录账户 * tqsdk.login(account) // 发送登录期货账户的请求 * }) * tqsdk.on('rtn_data', function(){ * if (tqsdk.isLogined(account)) { * let pos = tqsdk.getPositions(account) * console.log(pos) * } * }) */ getPositions(payload: { bid?: string; user_id: string; }): object | null; /** * 获取账户某个合约的委托单信息 * @param {object} payload * @param {string} [payload.bid] * @param {string} payload.user_id * @param {string} payload.order_id 委托单 id * @returns {object|null} */ getOrder(payload: { bid?: string; user_id: string; order_id: string; }): object | null; /** * 获取账户全部委托单信息 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @returns {object|null} */ getOrders(payload: { bid?: string; user_id: string; }): object | null; /** * 获取账户下某个合约对应的全部委托单信息 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.symbol 合约名称 * @returns {object|null} */ getOrdersBySymbol(payload: { bid?: string; user_id: string; symbol: string; }): object | null; /** * 获取账户某个合约的成交记录 * @param {object} payload * @param {string} [payload.bid] * @param {string} payload.user_id * @param {string} payload.trade_id 成交记录 id * @returns {object|null} */ getTrade(payload: { bid?: string; user_id: string; trade_id: string; }): object | null; /** * 获取账户全部成交记录 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @returns {object|null} */ getTrades(payload: { bid?: string; user_id: string; }): object | null; /** * 获取账户下某个委托单对应的全部成交记录 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.order_id 委托单 id * @returns {object|null} */ getTradesByOrder(payload: { bid?: string; user_id: string; order_id: string; }): object | null; /** * 获取账户下某个合约对应的全部成交记录 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.symbol 合约名称 * @returns {object|null} */ getTradesBySymbol(payload: { bid?: string; user_id: string; symbol: string; }): object | null; /** * 获取账户的历史结算单 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @returns {object|null} */ getHisSettlements(payload: { bid?: string; user_id: string; }): object | null; /** * 获取账户某一日历史结算单 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.trading_day 查询日期 * @returns {object|null} */ getHisSettlement(payload: { bid?: string; user_id: string; trading_day: string; }): object | null; /** * 获取账户 指定路径下的对象 * @private * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @param {list} [pathArray] */ private _getAccountInfoByPaths; /** * 确认结算单, 每个交易日需要确认一次 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * * @example * const tqsdk = new TQSDK() * const account = { bid: '快期模拟', user_id: 'test123', password: '123456' } * tqsdk.on('rtn_brokers', function(brokers){ * tqsdk.addAccount(account) // 仅添加期货账户信息并建立链接,不会登录账户 * tqsdk.login(account) // 发送登录期货账户的请求 * }) * tqsdk.on('rtn_data', function(){ * if (tqsdk.isLogined(account)) { * tqsdk.confirmSettlement(account) // 每个交易日都需要在确认结算单后才可以下单 * // tqsdk.insertOrder({....}) * } * }) * */ confirmSettlement(payload: { bid?: string; user_id: string; }): void; /** * 银期转账 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.bank_id 银行ID * @param {string} payload.bank_password 银行账户密码 * @param {string} payload.future_account 期货账户 * @param {string} payload.future_password 期货账户密码 * @param {string} payload.currency=CNY 币种代码 * @param {string} payload.amount 转账金额 >0 表示转入期货账户, <0 表示转出期货账户 */ transfer(payload: { bid?: string; user_id: string; bank_id: string; bank_password: string; future_account: string; future_password: string; currency: string; amount: string; }): void; /** * 查询历史结算单 * @param {object} payload * @param {string} [payload.bid] 期货公司 * @param {string} payload.user_id 账户名 * @param {string} payload.trading_day 交易日 */ hisSettlement(payload: { bid?: string; user_id: string; trading_day: string; }): any; /** * @event TQSDK#ready * @type {null} */ subscribe_quote: any; his_settlement: (payload: { bid?: string; user_id: string; trading_day: string; }) => any; confirm_settlement: (payload: { bid?: string; user_id: string; }) => void; add_account: (payload: { bid: string; user_id: string; password: string; }) => object; remove_account: (payload: { bid?: string; user_id: string; }) => void; get_by_path: (pathArray: list, dm?: object) => object | null; get_quotes_by_input: (input: string, filterOption?: { symbol?: boolean | undefined; pinyin?: boolean | undefined; include_expired?: boolean | undefined; future?: boolean | undefined; future_index?: boolean | undefined; future_cont?: boolean | undefined; option?: boolean | undefined; combine?: boolean | undefined; }) => list; get_quote: (symbol: string) => Quote; set_chart: (payload: { chart_id: string; symbol: string; duration: number; view_width?: number | undefined; left_kline_id?: number | undefined; trading_day_start?: number | undefined; trading_day_count?: number | undefined; focus_datetime?: number | undefined; focus_position?: number | undefined; }) => object; get_user: (payload: { bid?: string; user_id: string; }) => object | null; is_logined: (payload: { bid?: string; user_id: string; }) => boolean; is_changed: (target: object | list) => boolean; insert_order: (payload: { bid?: string; user_id: string; exchange_id: string; instrument_id: string; direction: string; offset: string; price_type: string; limit_price: number; volume: number; }) => object; auto_insert_order: (payload: { bid?: string; user_id: string; exchange_id: string; instrument_id: string; direction: string; offset: string; price_type: string; limit_price: number; volume: number; }) => list; cancel_order: (payload: { bid?: string; user_id: string; order_id: string; }) => void; } import EventEmitter from "eventemitter3"; import DataManager from "./datamanage"; import { TqQuoteWebsocket } from "./tqwebsocket"; import { Quote } from "./datastructure";