项目:基于 MB Trading API 的 MATLAB 实时与模拟股票交易系统
项目介绍
本项目是一个专为量化交易者设计的集成方案,旨在 MATLAB 环境下实现金融市场数据的实时采集、策略分析与交易指令的自动化执行。系统深度结合了 MATLAB 的数值计算能力与 MB Trading 的 API 交互技术,支持在真实账户和模拟账户之间灵活切换,提供从行情订阅到订单管理的全流程自动化体验。
功能特性
- 双模式运行机制:支持通过 Datafeed Toolbox 连接 MB Trading 真实服务器进行实盘操作,或在无 API 环境下自动切换至内建的随机过程行情模拟器。
- 多品种实时监控:能够同时订阅并解析多个证券代码(如 AAPL, TSLA 等)的行情数据,利用滑动窗口机制维护高频报价缓存。
- 自动化信号引擎:内置基于事件驱动的均线交叉计算模型,能够自动识别市场趋势并触发毫秒级的买入或卖出信号。
- 动态风险控制:集成实时位头寸监控与资金管理模块,包含单笔最大持仓限制及持仓成本自动核算功能。
- 可视化监控终端:提供四象限交互式 GUI 界面,实时展示行情走势、账户资产明细、策略执行日志以及累计盈亏曲线。
使用方法
- 认证配置:在配置区域填写 MB Trading 提供的用户名、密码、服务器地址及账户 ID。
- 模式设定:通过修改布尔变量切换为模拟(true)或真实(false)环境。
- 策略调整:根据需求自定义短期均线(fast_ma)、长期均线(slow_ma)以及下单量限制。
- 运行监控:直接运行程序,系统将自动建立通信链路、启动定时处理引擎并弹出图形化监控窗口。
- 安全退出:直接关闭 GUI 窗口,系统将触发清理机制,自动停止计时器任务并确保数据完整性。
系统要求
- 软件版本:MATLAB R2016b 或更高版本。
- 必要组件:Datafeed Toolbox(用于 COM 自动化交互)。
- 系统环境:Windows 操作系统(以支持 COM 组件调用)。
核心实现逻辑与算法分析
1. 系统初始化与数据结构
系统采用全局数据容器存储运行时的关键信息。其中:
- 使用 containers.Map 实现证券代码与价格序列、持仓数量的高效映射,确保多品种交易时的检索效率。
- 利用 MATLAB table 结构构建订单审计追踪(Order Audit Trail),记录每笔交易的时间戳、类型、价格和成交状态。
2. 定时处理引擎(Timer Engine)
系统的核心动力源是一个固定频率(Fixed Rate)为 1Hz 的计时器对象。在该计时器的回调函数中,循环执行以下任务:
- 数据获取:模拟环境下通过正态分布随机数生成连续价格流。
- 缓存管理:维护一个长度为 100 的价格与时间戳队列,超过限制时自动剔除旧数据,保证内存占用恒定。
3. 双均线交叉策略算法
系统实现了一种经典的趋势跟踪算法。通过核心计算函数对缓存的价格序列进行分析:
- 金叉(Golden Cross):当短期算数平均线向上穿过长期算数平均线,且前一时刻价格处于低位时,判断为买入信号。
- 死叉(Death Cross):当短期平均线向下穿过长期平均线时,判断为卖出信号。
逻辑利用 mean 函数在每一滴答周期内对切片数据进行实时运算。
4. 交易执行与风险检查逻辑
当策略触发信号时,系统进入 place_order 模块:
- 头寸限制检查:在执行下单前,自动对 symbol 对应的当前持仓量进行累加校验,若超过预设的 max_position_size 则直接拦截交易。
- 模拟结算:在模拟模式下,根据成交价实时扣除或增加 account.balance,并同步更新 map 中的持仓数值。
- 日志系统:采用持久化 persistent 变量管理日志队列,确保 GUI 上的执行记录能够滚动更新且不丢失最近的成交信息。
5. GUI 实时渲染技术
监控界面通过 subplot 划分布局,利用动态绘图技术实现可视化:
- 使用 animatedline 对象的 addpoints 方法,实现价格曲线和盈亏曲线的平滑增量更新,避免全图重绘造成的闪烁。
- 利用 text 渲染引擎在账户面板和日志面板实时刷新动态文本,展示最新的资产明细和持仓分布。
- 盈亏计算公式:总资产 = 当前余额 + ∑(各品种持仓量 × 最新市价),通过所得值与初始资金的差额实时计算 PnL。