TQSDK - JS
天勤 DIFF 协议 (https://www.shinnytech.com/diff/) 的封装(JavaScript 语言版本)。
1. 安装
方案一
Html 文件添加
JavaScript 文件中可以直接使用:
var tqsdk = ;
方案二
采用 es6 开发,项目根目录下运行
npm install tqsdk
js 中引用
let tqsdk = {}
2. 使用
2.1 初始化
// 建议全局只初始化一次,后面只使用实例 tqsdkconst tqsdk =
2.2 on 事件监听
// 添加事件监听tqsdk // 取消事件监听tqsdk
支持的事件:
eventName | cb 回调函数参数 | 事件触发说明 |
---|---|---|
ready | 收到合约基础数据 | |
rtn_brokers | [] 期货公司列表 | 收到期货公司列表 |
notify | {} 单个通知对象 | 收到通知对象 |
rtn_data | 数据更新(每一次数据更新触发) | |
error | error | 发生错误(目前只有一种:合约服务下载失败) |
⚠️ 监听 rtn_data
事件,可以实时对行情数据变化作出响应。但是需要在相应组件 destory 的时候取消监听对应事件。
2.3 其他接口
TQSDK
支持以下功能,详情参见 API:
- 查询合约行情。
- 查询合约 K线图,Tick图,盘口报价。
- 登录期货交易账户。
- 查看账户资金、持仓记录、委托单记录。
- 多账户查询。
- 支持穿透视监管。
- 查询历史结算单。
3. API
- subscribe_quote 订阅合约
function subscribe_quote (payload: string | array)
example:
tqsdk tqsdk
- login 登录
function login(payload: object) : null {}
payload = {
bid: string,
user_id: string,
password: string
}
- add_account 添加期货账户信息
function add_account(bid: string, user_id: string, password: string) : null
- remove_account 删除期货账户信息
function remove_account(bid: string, user_id: string, password?: string) : null
- get_quote 获取合约详情
function get_quote(symbol: string) : object
- get 获取数据
function get(payload: object) : object
{
// 交易 ['users', 'user', 'session', 'accounts', 'account', 'positions', 'position', 'orders', 'order', 'trades', 'trade']
// 行情 ['quotes', 'quote', 'ticks', 'klines', 'charts', 'chart']
name = 'users',
user_id = '', // 以下 name 有效 ['user', 'session', 'accounts', 'account', 'positions', 'position', 'orders', 'order', 'trades', 'trade']
currency = 'CNY', // 以下 name 有效 ['account']
symbol = '', // 以下 name 有效 ['position'] ['quote', 'ticks', 'klines']
order_id = '', // 以下 name 有效 ['order']
trade_id = '', // 以下 name 有效 ['trade']
chart_id = '', // 以下 name 有效 ['chart']
input = '', // 以下 name 有效 ['quotes']
duration = 0, // 以下 name 有效 ['klines']
}
name | payload |
---|---|
'users' | {name} |
'user' | {name, user_id} |
'session' | {name, user_id} |
'accounts' | {name, user_id} |
'account' | {name, user_id, currency} |
'positions' | {name, user_id} |
'orders' | {name, user_id} |
'trades' | {name, user_id} |
'position' | {name, user_id, symbol} |
'order' | {name, user_id, order_id} |
'trade' | {name, user_id, trade_id} |
'quotes' | {name, input} |
'quote' | {name, symbol} |
'klines' | {name, symbol, duration} |
'ticks' | {name, symbol} |
- get_by_path 根据路径获取数据
function get_by_path (path: string | array) : object
- set_chart 订阅图表
function set_chart (payload: object) : null
- get_quotes_by_input 根据输入返回合约集合
function get_quotes_by_input (_input: string) : object
- get_trading_day 获取当前交易日
function get_trading_day () : string
- is_changed 数据最近是否更新
function is_changed(target: string | object, source?: object)
- is_logined 是否登录成功
function is_logined(payload) : boolean
payload = {
bid: string,
user_id: string
}
-
transfer 银期转帐
-
his_settlement 查询历史结算单
function his_settlement(payload) : null
payload = {
bid: string,
user_id: string,
trading_day: number
}
-
insert_order 下单 deprecated
-
auto_insert_order 自动平昨平今 deprecated
-
cancel_order 撤单 deprecated
-
confirm_settlement 确认结算单 deprecated
Vue Plugin
TQSDK - JS 封装为 Vue 插件,可以在组件中监听事件,不需要在单独取消监听。
let tqsdk = const NOOP = {}let tqVmEventMap = {}let tqsdkRE = /^tqsdk:/ { let on = Vueprototype$on let emit = Vueprototype$emit Vueprototype { const vm = this if Array eventName; else if tqsdkRE if !tqVmEventMapvm_uid tqVmEventMapvm_uid = {} let tq_eventName = eventName1 if !tqVmEventMapvm_uidtq_eventName tqVmEventMapvm_uidtq_eventName = tqVmEventMapvm_uidtq_eventName tqsdk else on return vm }} { Vue} { if VERSION < 2 console; return; // Exit if the plugin has already been installed. if plugininstalled return plugininstalled = true } Vue Vue$tqsdk = tqsdkVueprototype$tqsdk = tqsdk ;