# ts-qmt **Repository Path**: icezeros/ts-qmt ## Basic Information - **Project Name**: ts-qmt - **Description**: 使用ts语言连接qmt进行量化交易 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2025-05-31 - **Last Updated**: 2026-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TypeScript xtquant 客户端 这是一个用于连接 xtquant 交易系统的 TypeScript 客户端库。它提供了实时行情订阅、交易下单、账户查询等功能。 ## 项目结构 ``` ts-qmt/ ├── src/ # TypeScript 源代码 │ ├── XtQuantClient.ts # 客户端主类 │ └── example.ts # 使用示例 ├── python/ # Python 服务器代码 │ ├── xtquant_wrapper.py # Python 服务器实现 │ └── requirements.txt # Python 依赖 ├── dist/ # 编译后的 JavaScript 代码 ├── package.json # npm 配置 └── tsconfig.json # TypeScript 配置 ``` ## 功能特点 - 实时行情订阅(WebSocket) - 账户信息订阅(WebSocket) - 交易状态订阅(WebSocket) - 持仓信息订阅(WebSocket) - 资产信息订阅(WebSocket) - 交易下单 - 账户查询 - 持仓查询 - 订单查询 - 成交查询 ## 安装 ```bash # 安装 TypeScript 依赖 npm install # 安装 Python 依赖 cd python pip install -r requirements.txt ``` ## 前置条件 1. 安装 xtquant 库(通过 QMT 客户端安装) 2. 运行 Python 服务器(见下文) ## 使用方法 ```typescript import { XtQuantClient } from './XtQuantClient'; // 创建客户端实例 const client = new XtQuantClient({ baseURL: 'http://localhost:5000', wsURL: 'ws://localhost:5001', timeout: 10000 }); // 设置 WebSocket 事件监听器 client.on('wsConnected', () => { console.log('WebSocket 已连接'); }); client.on('wsDisconnected', () => { console.log('WebSocket 已断开连接'); }); // 设置行情数据监听器 client.on('quote', (quote) => { console.log('收到行情数据:', quote); }); // 设置订单状态监听器 client.on('order', (order) => { console.log('收到订单状态更新:', order); }); // 设置成交信息监听器 client.on('trade', (trade) => { console.log('收到成交信息:', trade); }); // 设置持仓信息监听器 client.on('position', (position) => { console.log('收到持仓信息更新:', position); }); // 设置资产信息监听器 client.on('asset', (asset) => { console.log('收到资产信息更新:', asset); }); // 连接到交易系统 await client.connect(); // 订阅行情 client.subscribeQuote(['600000.SH', '000001.SZ']); // 订阅账户 client.subscribeAccount(['123456']); // 获取股票行情 const quote = await client.getStockQuote('600000.SH'); // 下单 const order = await client.placeOrder({ stockCode: '600000.SH', price: quote.lastPrice, volume: 100, side: 'buy' }); // 获取账户信息 const accountInfo = await client.getAccountInfo(); // 获取持仓信息 const positions = await client.getPositions(); // 获取订单信息 const orders = await client.getOrders(); // 获取成交信息 const trades = await client.getTrades(); // 取消订阅 client.unsubscribeQuote(['600000.SH', '000001.SZ']); client.unsubscribeAccount(['123456']); // 断开连接 await client.disconnect(); ``` ## 开发 ```bash # 编译 TypeScript npm run build # 运行示例(需要先启动 Python 服务器) npm start # 开发模式运行示例 npm run dev ``` ## Python 服务器 Python 服务器需要单独运行,它负责与 xtquant 库进行交互。 ### 运行服务器 ```bash cd python python xtquant_wrapper.py ``` 服务器将在以下地址运行: - HTTP 服务:http://localhost:5000 - WebSocket 服务:ws://localhost:5001 ## 注意事项 1. 确保 Python 服务器正在运行 2. 确保已正确安装 xtquant 库 3. 使用实际的账户 ID 替换示例中的 '123456' 4. 根据实际需求调整订阅的股票代码 5. 在生产环境中,建议添加适当的错误处理和重试机制