# tqsdk-js **Repository Path**: zhuzhenping/tqsdk-js ## Basic Information - **Project Name**: tqsdk-js - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2021-03-22 - **Last Updated**: 2025-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TQSDK - JS 天勤 [DIFF 协议 (https://www.shinnytech.com/diff/)](https://www.shinnytech.com/diff/) 的封装(JavaScript 语言版本)。

kuaiqi logo

js-standard-style Downloads Version License

`TQSDK-JS` 支持以下功能,详情参见 [API Reference](#api_reference): * [x] 查询合约行情。 * [x] 查询合约 K线图,Tick图,盘口报价。 * [x] 登录期货交易账户。 * [x] 查看账户资金、持仓记录、委托单记录。 * [x] 多账户查询。 * [x] 支持穿透视监管。 * [x] 查询历史结算单。 ## 1. 安装 ### 方案一 Html 文件添加 ```html ``` JavaScript 文件中可以直接使用: ```js var tqsdk = new TQSDK(); ``` ### 方案二 采用 es6 开发,项目根目录下运行 ```bash npm install tqsdk ``` js 中引用 ```js import TQSDK from 'tqsdk' let tqsdk = new TQSDK() ``` ## 2. 使用 ### 2.1 初始化 ```js // 建议全局只初始化一次,后面只使用实例 tqsdk const tqsdk = new TQSDK() // or 使用指定参数初始化 const tqsdk = new TQSDK({ symbolsServerUrl: 'https://openmd.shinnytech.com/t/md/symbols/latest.json', wsQuoteUrl: 'wss://openmd.shinnytech.com/t/md/front/mobile', autoInit: true }) ``` ### 2.2 on 事件监听 ```js // 添加事件监听 tqsdk.on(eventName, cb) // 取消事件监听 tqsdk.off(eventName, cb) ``` 支持的事件: |eventName|cb 回调函数参数|事件触发说明| |---|---|---| |ready | | 收到合约基础数据| |rtn_brokers | [] 期货公司列表 | 收到期货公司列表| |notify | {} 单个通知对象 | 收到通知对象| |rtn_data | | 数据更新(每一次数据更新触发)| |error | error | 发生错误(目前只有一种:合约服务下载失败)| :warning: 监听 `rtn_data` 事件,可以实时对行情数据变化作出响应。但是需要在相应组件 destory 的时候取消监听对应事件。 ## 3. API Reference #### TQSDK~Tqsdk **Kind**: inner class of [TQSDK](#module_TQSDK) **Emits**: [ready](#TQSDK+event_ready), [rtn\_data](#TQSDK+event_rtn_data), [rtn\_brokers](#TQSDK+event_rtn_brokers), [notify](#TQSDK+event_notify), [error](#TQSDK+event_error) * [~Tqsdk](#module_TQSDK..Tqsdk) * [new Tqsdk([opts], [wsOption])](#new_module_TQSDK..Tqsdk_new) * [.initMdWebsocket()](#module_TQSDK..Tqsdk+initMdWebsocket) * [.initTdWebsocket()](#module_TQSDK..Tqsdk+initTdWebsocket) * [.get(payload)](#module_TQSDK..Tqsdk+get) ⇒ object \| null * [.getByPath(pathArray, dm)](#module_TQSDK..Tqsdk+getByPath) ⇒ object \| null * [.getQuotesByInput(input, filterOption)](#module_TQSDK..Tqsdk+getQuotesByInput) ⇒ list * [.getQuote(symbol)](#module_TQSDK..Tqsdk+getQuote) ⇒ Quote * [.setChart(payload)](#module_TQSDK..Tqsdk+setChart) ⇒ object * [.getChart(chart_id)](#module_TQSDK..Tqsdk+getChart) ⇒ object * [.getKlines(symbol, dur)](#module_TQSDK..Tqsdk+getKlines) ⇒ object * [.getTicks(symbol)](#module_TQSDK..Tqsdk+getTicks) ⇒ object * [.isChanging(target|pathArray)](#module_TQSDK..Tqsdk+isChanging) ⇒ boolean * [.subscribeQuote(quotes)](#module_TQSDK..Tqsdk+subscribeQuote) * [.addAccount(payload)](#module_TQSDK..Tqsdk+addAccount) ⇒ object * [.removeAccount(payload)](#module_TQSDK..Tqsdk+removeAccount) * [.login(payload)](#module_TQSDK..Tqsdk+login) * [.isLogined(payload)](#module_TQSDK..Tqsdk+isLogined) ⇒ boolean * [.refreshAccount(payload)](#module_TQSDK..Tqsdk+refreshAccount) * [.refreshAccounts()](#module_TQSDK..Tqsdk+refreshAccounts) * [.getAllAccounts()](#module_TQSDK..Tqsdk+getAllAccounts) ⇒ list * [.getAccount(payload)](#module_TQSDK..Tqsdk+getAccount) ⇒ object \| null * [.insertOrder(payload)](#module_TQSDK..Tqsdk+insertOrder) ⇒ object * [.autoInsertOrder(payload)](#module_TQSDK..Tqsdk+autoInsertOrder) ⇒ list * [.cancelOrder(payload)](#module_TQSDK..Tqsdk+cancelOrder) * [.getPosition(payload)](#module_TQSDK..Tqsdk+getPosition) ⇒ object \| null * [.getPositions(payload)](#module_TQSDK..Tqsdk+getPositions) ⇒ object \| null * [.getOrder(payload)](#module_TQSDK..Tqsdk+getOrder) ⇒ object \| null * [.getOrders(payload)](#module_TQSDK..Tqsdk+getOrders) ⇒ object \| null * [.getOrdersBySymbol(payload)](#module_TQSDK..Tqsdk+getOrdersBySymbol) ⇒ object \| null * [.getTrade(payload)](#module_TQSDK..Tqsdk+getTrade) ⇒ object \| null * [.getTrades(payload)](#module_TQSDK..Tqsdk+getTrades) ⇒ object \| null * [.getTradesByOrder(payload)](#module_TQSDK..Tqsdk+getTradesByOrder) ⇒ object \| null * [.getTradesBySymbol(payload)](#module_TQSDK..Tqsdk+getTradesBySymbol) ⇒ object \| null * [.getHisSettlements(payload)](#module_TQSDK..Tqsdk+getHisSettlements) ⇒ object \| null * [.getHisSettlement(payload)](#module_TQSDK..Tqsdk+getHisSettlement) ⇒ object \| null * [.confirmSettlement(payload)](#module_TQSDK..Tqsdk+confirmSettlement) * [.transfer(payload)](#module_TQSDK..Tqsdk+transfer) * [.hisSettlement(payload)](#module_TQSDK..Tqsdk+hisSettlement) * * * ##### new Tqsdk([opts], [wsOption]) | Param | Type | Default | Description | | --- | --- | --- | --- | | [opts] | object | {} | 描述 TQSDK 构造参数 | | [opts.symbolsServerUrl] | string | "https://openmd.shinnytech.com/t/md/symbols/latest.json" | 合约服务地址 | | [opts.wsQuoteUrl] | string | "wss://openmd.shinnytech.com/t/md/front/mobile" | 行情连接地址 | | [opts.autoInit] | boolean | true | TQSDK 初始化后立即开始行情连接 | | [opts.clientSystemInfo=] | string | | 客户端信息 | | [opts.clientAppId=] | string | | 客户端信息 | | [opts.data] | object | {} | 存储数据对象 | | [wsOption] | object | {} | 描述 TQSDK 构造参数 | | [wsOption.reconnectInterval] | number | 3000 | websocket 自动重连时间间隔 | | [wsOption.reconnectMaxTimes] | number | 2 | websocket 自动重连最大次数 | | [wsOption.WebSocket] | object | WebSocket | 浏览器 WebSocket 对象,在 nodejs 运行时,需要传入 WebSocket | **Example** ```js // 浏览器 const tqsdk = new TQSDK() tqsdk.on('ready', function () { console.log(tqsdk.getQuote('SHFE.au2006')) }) tqsdk.on('rtn_brokers', function (brokers) { console.log(brokers) }) ``` **Example** ```js // 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** ```js // 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')) }) ``` * * * ##### tqsdk.initMdWebsocket() 初始化行情链接 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Emits**: [ready](#TQSDK+event_ready) **Example** ```js const tqsdk = new TQSDK({autoInit: false}) tqsdk.initMdWebsocket() tqsdk.on('ready', function(){ console.log(tqsdk.getQuote('DCE.m2009')) }) ``` * * * ##### tqsdk.initTdWebsocket() 初始化交易链接 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Emits**: [rtn\_brokers](#TQSDK+event_rtn_brokers) **Example** ```js const tqsdk = new TQSDK({autoInit: false}) tqsdk.initMdWebsocket() tqsdk.initTdWebsocket() tqsdk.on('rtn_brokers', function(brokers){ console.log(brokers) }) ``` * * * ##### tqsdk.get(payload) ⇒ object \| null 获取数据 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Default | Description | | --- | --- | --- | --- | | payload | object | | | | [payload.name] | string | "users" | | | [payload.bid] | string | | 当 name in ['user', 'session', 'accounts', 'account', 'positions', 'position', 'orders', 'order', 'trades', 'trade'] | | [payload.user_id] | string | | 当 name in ['user', 'session', 'accounts', 'account', 'positions', 'position', 'orders', 'order', 'trades', 'trade'] | | [payload.currency] | string | | 当 name='account' | | [payload.symbol] | string | | 当 name in ['position', 'quote', 'ticks', 'klines'] | | [payload.order_id] | string | | 当 name='order' | | [payload.trade_id] | string | | 当 name='trade' | | [payload.trading_day] | string | | 当 name='his_settlement' | | [payload.chart_id] | string | | 当 name='chart' | | [payload.input] | string | | 当 name='quotes' | | [payload.duration] | string | | 当 name='klines' | * * * ##### tqsdk.getByPath(pathArray, dm) ⇒ object \| null 获取数据对象 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | pathArray | list | | | dm | object | 获取对象数据源,默认为当前实例的 datamanager | **Example** ```js // 获取某个合约下市时间 // 推荐使用这种方式,先获取 quote 对象的引用 let quote = tqdsk.getQuote('SHFE.au2006') let dt = quote.expire_datetime // 以上代码等价于 let dt = tqsdk.getByPath(['quotes', 'SHFE.au2006', 'expire_datetime']) ``` * * * ##### tqsdk.getQuotesByInput(input, filterOption) ⇒ list 根据输入字符串查询合约列表 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Returns**: list - [symbol, ...] | Param | Type | Default | Description | | --- | --- | --- | --- | | input | string | | | | filterOption | object | | 查询合约列表条件限制 | | [filterOption.symbol] | boolean | true | 是否根据合约ID匹配 | | [filterOption.pinyin] | boolean | true | 是否根据拼音匹配 | | [filterOption.include_expired] | boolean | false | 匹配结果是否包含已下市合约 | | [filterOption.future] | boolean | true | 匹配结果是否包含期货合约 | | [filterOption.future_index] | boolean | false | 匹配结果是否包含期货指数 | | [filterOption.future_cont] | boolean | false | 匹配结果是否包含期货主连 | | [filterOption.option] | boolean | false | 匹配结果是否包含期权 | | [filterOption.combine] | boolean | false | 匹配结果是否包含组合 | **Example** ```js 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 })) }) ``` * * * ##### tqsdk.getQuote(symbol) ⇒ Quote 根据合约代码获取合约对象 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | symbol | string | 合约代码 | **Example** ```js const tqsdk = new TQSDK() const quote = tqsdk.getQuote('SHFE.au2006') tqsdk.on('rtn_data', function () { console.log(quote.last_price, quote.pre_settlement) }) ``` * * * ##### tqsdk.setChart(payload) ⇒ object 请求 K 线图表 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Returns**: object - chart | Param | Type | Description | | --- | --- | --- | | payload | object | | | payload.chart_id | string | 图表 id | | payload.symbol | string | 合约代码 | | payload.duration | number | 图表周期,0 表示 tick, 1e9 表示 1s, UnixNano 时间 | | [payload.view_width] | number | 图表柱子宽度 | | [payload.left_kline_id] | number | 指定一个K线id,向右请求view_width个数据 | | [payload.trading_day_start] | number | 指定交易日,返回对应的数据 | | [payload.trading_day_count] | number | 请求交易日天数 | | [payload.focus_datetime] | number | 使得指定日期的K线位于屏幕第M个柱子的位置 | | [payload.focus_position] | number | 使得指定日期的K线位于屏幕第M个柱子的位置 | **Example** ```js 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) }) ``` * * * ##### tqsdk.getChart(chart_id) ⇒ object 获取 chart 对象 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Returns**: object - {} | Param | Type | | --- | --- | | chart_id | string | * * * ##### tqsdk.getKlines(symbol, dur) ⇒ object 获取 K 线序列 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Returns**: object - {data, last_id} | Param | Type | | --- | --- | | symbol | string | | dur | number | * * * ##### tqsdk.getTicks(symbol) ⇒ object 获取 Ticks 序列 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Returns**: object - {data, last_id} | Param | Type | | --- | --- | | symbol | string | * * * ##### tqsdk.isChanging(target|pathArray) ⇒ boolean 判断某个对象是否最近一次有变动 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | target|pathArray | object \| list | 检查变动的对象或者路径数组 | **Example** ```js 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) } }) ``` * * * ##### tqsdk.subscribeQuote(quotes) 订阅合约, 手动订阅合约 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Default | | --- | --- | --- | | quotes | list \| string | [ | **Example** ```js let tqsdk = new TQSDK() tqsdk.subscribeQuote('SHFE.au2006') tqsdk.subscribeQuote(['SHFE.au2006', 'DCE.m2008']) ``` * * * ##### tqsdk.addAccount(payload) ⇒ object 添加期货账户 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Returns**: object - account {bid, user_id, password, ws, dm} | Param | Type | Description | | --- | --- | --- | | payload | object | | | payload.bid | string | 期货公司 | | payload.user_id | string | 账户名 | | payload.password | string | 密码 | **Example** ```js 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)) }) ``` * * * ##### tqsdk.removeAccount(payload) 删除期货账户 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | * * * ##### tqsdk.login(payload) 登录期货账户 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | payload.bid | string | 期货公司 | | payload.user_id | string | 账户名 | | payload.password | string | 密码 | **Example** ```js 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)) }) ``` * * * ##### tqsdk.isLogined(payload) ⇒ boolean 判断账户是否登录 [x] **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | | --- | --- | | payload | object | | [payload.bid] | string | | payload.user_id | string | * * * ##### tqsdk.refreshAccount(payload) 刷新账户信息,用于账户资金没有同步正确 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | * * * ##### tqsdk.refreshAccounts() 刷新全部账户信息,用于账户资金没有同步正确 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) * * * ##### tqsdk.getAllAccounts() ⇒ list 获取全部账户信息 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Example** ```js 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) }) ``` * * * ##### tqsdk.getAccount(payload) ⇒ object \| null 获取账户资金信息 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | | --- | --- | | payload | object | | [payload.bid] | string | | payload.user_id | string | **Example** ```js 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) } }) ``` * * * ##### tqsdk.insertOrder(payload) ⇒ object 下单 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Returns**: object - order={order_id, status, ...} | Param | Type | Default | Description | | --- | --- | --- | --- | | payload | object | | | | [payload.bid] | string | | 期货公司 | | payload.user_id | string | | 账户名 | | payload.exchange_id | string | | 交易所 | | payload.instrument_id | string | | 合约名称 | | payload.direction | string | | 方向 [`BUY` | `SELL`] | | payload.offset | string | | 开平 [`OPEN` | `CLOSE` | `CLOSETODAY`] | | payload.price_type | string | "LIMIT" | 限价 [`LIMIT` | `ANY`] | | payload.limit_price | number | | 价格 | | payload.volume | number | | 手数 | **Example** ```js 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) }) ``` * * * ##### tqsdk.autoInsertOrder(payload) ⇒ list 下单,但是平仓单会自动先平今再平昨,不需要用户区分 CLOSE | CLOSETODAY **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) **Returns**: list - list=[{order_id, status, ...}, ...] 返回委托单数组,可能拆分为多个单 | Param | Type | Default | Description | | --- | --- | --- | --- | | payload | object | | | | [payload.bid] | string | | 期货公司 | | payload.user_id | string | | 账户名 | | payload.exchange_id | string | | 交易所 | | payload.instrument_id | string | | 合约名称 | | payload.direction | string | | 方向 [`BUY` | `SELL`] | | payload.offset | string | | 开平 [`OPEN` | `CLOSE`] | | payload.price_type | string | "LIMIT" | 限价 [`LIMIT` | `ANY`] | | payload.limit_price | number | | 价格 | | payload.volume | number | | 手数 | * * * ##### tqsdk.cancelOrder(payload) 撤销委托单 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | | payload.order_id | string | 委托单 id | * * * ##### tqsdk.getPosition(payload) ⇒ object \| null 获取账户某个合约的持仓信息 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | | | payload.user_id | string | | | payload.symbol | string | 合约名称 | **Example** ```js 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) } }) ``` * * * ##### tqsdk.getPositions(payload) ⇒ object \| null 获取账户全部持仓信息 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | **Example** ```js 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) } }) ``` * * * ##### tqsdk.getOrder(payload) ⇒ object \| null 获取账户某个合约的委托单信息 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | | | payload.user_id | string | | | payload.order_id | string | 委托单 id | * * * ##### tqsdk.getOrders(payload) ⇒ object \| null 获取账户全部委托单信息 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | * * * ##### tqsdk.getOrdersBySymbol(payload) ⇒ object \| null 获取账户下某个合约对应的全部委托单信息 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | | payload.symbol | string | 合约名称 | * * * ##### tqsdk.getTrade(payload) ⇒ object \| null 获取账户某个合约的成交记录 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | | | payload.user_id | string | | | payload.trade_id | string | 成交记录 id | * * * ##### tqsdk.getTrades(payload) ⇒ object \| null 获取账户全部成交记录 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | * * * ##### tqsdk.getTradesByOrder(payload) ⇒ object \| null 获取账户下某个委托单对应的全部成交记录 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | | payload.order_id | string | 委托单 id | * * * ##### tqsdk.getTradesBySymbol(payload) ⇒ object \| null 获取账户下某个合约对应的全部成交记录 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | | payload.symbol | string | 合约名称 | * * * ##### tqsdk.getHisSettlements(payload) ⇒ object \| null 获取账户的历史结算单 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | * * * ##### tqsdk.getHisSettlement(payload) ⇒ object \| null 获取账户某一日历史结算单 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | | payload.trading_day | string | 查询日期 | * * * ##### tqsdk.confirmSettlement(payload) 确认结算单, 每个交易日需要确认一次 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | **Example** ```js 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({....}) } }) ``` * * * ##### tqsdk.transfer(payload) 银期转账 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Default | Description | | --- | --- | --- | --- | | payload | object | | | | [payload.bid] | string | | 期货公司 | | payload.user_id | string | | 账户名 | | payload.bank_id | string | | 银行ID | | payload.bank_password | string | | 银行账户密码 | | payload.future_account | string | | 期货账户 | | payload.future_password | string | | 期货账户密码 | | payload.currency | string | "CNY" | 币种代码 | | payload.amount | string | | 转账金额 >0 表示转入期货账户, <0 表示转出期货账户 | * * * ##### tqsdk.hisSettlement(payload) 查询历史结算单 **Kind**: instance method of [Tqsdk](#module_TQSDK..Tqsdk) | Param | Type | Description | | --- | --- | --- | | payload | object | | | [payload.bid] | string | 期货公司 | | payload.user_id | string | 账户名 | | payload.trading_day | string | 交易日 | * * * ## Vue Plugin TQSDK - JS 封装为 Vue 插件,可以在组件中监听事件,不需要在单独取消监听。 ```js import Vue from 'vue' import TQSDK from 'tqsdk' let tqsdk = new TQSDK() const NOOP = () => {} let tqVmEventMap = {} let tqsdkRE = /^tqsdk:/ function mixinEvents(Vue) { let on = Vue.prototype.$on let emit = Vue.prototype.$emit Vue.prototype.$on = function proxyOn(eventName, fn = NOOP) { const vm = this if (Array.isArray(eventName)) { eventName.forEach((item) => vm.$on(item, fn)); } else if (tqsdkRE.test(eventName)) { if (!tqVmEventMap[vm._uid]) tqVmEventMap[vm._uid] = {} let tq_eventName = eventName.match(/^tqsdk:(.*)/)[1] if (!tqVmEventMap[vm._uid][tq_eventName]) tqVmEventMap[vm._uid][tq_eventName] = [] tqVmEventMap[vm._uid][tq_eventName].push(fn) tqsdk.on(tq_eventName, fn.bind(vm)) } else { on.call(vm, eventName, fn) } return vm } } function applyMixin(Vue) { Vue.mixin({ beforeDestroy() { const vm = this const tqevents = tqVmEventMap[vm._uid] || {}; for (let eventName in tqevents) { let eventsArr = tqevents[eventName] eventsArr.forEach((fn) => { tqsdk.removeEventListener(eventName, fn) }) } delete tqVmEventMap[vm._uid]; } }) } function plugin(Vue) { if (VERSION < 2) { console.error('[vue-event-proxy] only support Vue 2.0+'); return; } // Exit if the plugin has already been installed. if (plugin.installed) return plugin.installed = true mixinEvents(Vue) applyMixin(Vue) } Vue.use(plugin) Vue.$tqsdk = tqsdk Vue.prototype.$tqsdk = tqsdk export default tqsdk; ``` © 2017-2020 [Shinnytech](https://www.shinnytech.com/). Documented by [jsdoc-to-markdown](https://github.com/jsdoc2md/jsdoc-to-markdown).