FULL-STACK · QUANT SYSTEMS · PLATFORM ENGINEERING

从研究到执行的
全栈交易系统

独立全栈开发量化交易工程系统架构与运维

Stock Server 是一个持续迭代的交易工程项目,将 Web 分析界面、多服务后端、策略回测、多券商交易接入和生产运行治理,连接为一条可验证、可观测的交易工程链路。

系统链路示意 · 非实时状态

market.data chart / signals

strategy.config backtest worker

broker.adapters orders / events

execution trade logs / review

environment paper / live

仅展示模块关系,不连接行情、账户或交易服务。

Monorepo共享领域模型与服务基座
Action + SSE请求与实时数据的统一契约
Broker AdaptersIBKR、LongBridge、东方财富、OKX 接入
Paper / Live隔离环境、显式许可与运行治理

从业务问题出发的系统设计与工程取舍。

01

领域服务拆分

交易执行、行情接入、监控、回测与交易日志各自独立部署;服务边界围绕业务职责,而不是围绕页面或数据库表拆分。

02

统一 API 契约

ServerBootstrapregisterAction 统一普通请求、SSE stream、health、CORS 与错误响应,降低前后端和服务间集成成本。

03

回测 TradingView 图表升级

回测页面采用升级版 TradingView Lightweight Charts,扩展可复用图表组件、指标插件与实时 tick 更新能力,将回测过程和行情回放映射为交互式 K 线界面。

04

IBKR Node API 优化

围绕 @icocoding/ib-node-api 封装账户、仓位、订单、合约和实时订阅;处理事件流、错误传递与 Action API 映射,降低 TWS 接入复杂度。

05

异步回测链路

回测计算由独立的任务模块组织,将策略配置、交易过程与结果记录分离,支持任务的创建、暂停、恢复和结果查询。

06

n8n 交易自动化

TradeLog 通过前端组合函数接入 n8n Webhook 与东方财富接口,支持交易操作、状态查询及成交导入;具体自动化编排由工作流配置决定。

Web 前端、业务服务与市场连接解耦,使每一层都能独立演进。

Vue 3 Web Frontend分析界面、路由、状态与组件化交互
Visualization Layer图表、热力图、回测、监控、交易日志
Gateway / HTTPS统一入口、反向代理、服务路由
Server Base + CommonsAction 注册、HTTP/2、共享模型、策略与工具
业务服务集群Trade · Monitor · Backtesting · TradeLog
市场与券商IBKR · LongBridge · EastMoney · OKX
本地数据层SQLite · MongoDB · 运行数据

技术栈与工程组件。

Vue 3 · Vite · Pinia响应式前端、状态管理和图表交互。
Upgraded TradingView Charts · D3回测 K 线、指标插件、行情回放与市场热力图可视化。
Node.js · TypeScript按领域拆分的交易、行情、回测与监控服务。
HTTP/2 · HTTPS · Caddy安全通信、网关路由和证书入口管理。
SQLite · MongoDB交易记录、组合分析与运行数据的本地存储。
PM2 · esbuild · n8n服务进程、构建产物与 Webhook 工作流自动化。
策略引擎共享策略、市场模型与回测 Worker 执行链路。
安全边界模拟/实盘隔离、显式授权与运行配置管理。

以统一通信契约,控制多服务系统的复杂度。

request lifecycle · HTTPS / HTTP2
// Vue Web application request
GET /api/getPositions

Caddy → host-based reverse proxy
ServerBootstrap → action name resolved from /api/
registerAction("getPositions", handler)
handler(reqData) → { code, msg, data }

// Continuous data uses Server-Sent Events
GET /api/getMarketDataStream?symbol=AAPL
event: data → client chart / monitor store

// Shared response shape keeps clients predictable
type ActionResponse<T> = { code: number; msg: string; data: T }

从组件、服务基座到券商连接,技术设计都有明确落点。

回测升级版 TradingView 图表

回测页面复用升级版 TradingView 图表组件,将 K 线实例、指标、Tooltip 和交易跟踪状态封装为 Vue 能力,并对外暴露可控的行情回放与实时数据入口。

frontend/src/components/TVChart.vue
const chartRef = ref<IChartApi>()
const stockInfo = reactive({
  stockCode, timeOffset, tooltipType
})

defineExpose({
  startTrack, stopTrack, onTickData
})

Action 注册与流式分发

依据 Action 名称区分普通请求与 Stream 请求;同一服务基座处理路由校验、异步执行和流生命周期。

packages/server-base/src/register
function registerAction(name, fn) {
  name.endsWith('Stream')
    ? streamsMap.set(name, fn)
    : actionsMap.set(name, fn)
}

resolveStream(req, onData, onEnd)

IBKR Gateway 连接与事件治理

先启动 IBKR Gateway,再由 server-ibkr-api 使用 @icocoding/ib-node-api 通过 TWS API Socket 建立连接,并统一连接状态、重连、错误事件与 paper/live 配置。

servers/server-ibkr-api/src/ibapi.ts
// 1. Start IBKR Gateway (paper / live)
IBKR Gateway → TWS API Socket

// 2. Connect from server-ibkr-api
const ibnext = new IBApiNext({ reconnectInterval: 1000 })
ibnext.connect(isLive ? liveClientId : paperClientId)

ibnext.connectionState.subscribe(onState)
ibnext.error.subscribe(onBrokerError)

TradeLog × n8n × 东方财富自动化

功能入口位于 frontend/src/views/tradelog 的持仓页面。可切换 n8n 代理或嵌入式交易端,两种模式均向页面返回统一的资产、持仓、委托和成交状态。

账户与持仓同步查询资产、持仓与当日委托,并在界面中同步开仓/平仓状态、成本价及止盈止损信息。
选中标的买入将选中标的、价格与数量组织为买入请求,并查询已有委托;具体撤单和提交行为由交易模式及工作流配置决定。
清仓与撤单结合持仓与未完成委托组织清仓、卖出和撤单操作,并回查订单处理状态。
止盈与止损以实时价格、回撤和止盈止损条件组织检查与交易请求;实际执行依赖所选交易模式、授权与运行配置。
当日成交自动导入查询买入/卖出成交记录,映射成交时间、数量、价格、金额和订单号,写入 TradeLog 流水。
登录与会话恢复嵌入式交易端路径包含前端可见的会话检查与登录流程;n8n 路径的会话/自动登录职责由工作流运行时承担,需以工作流定义确认。

服务按业务边界拆分,而非将所有逻辑堆进一个后端。

gateway

Unified ingress

统一 HTTPS/HTTP2 代理入口。按路径将 `/trade`、`/lb`、`/ib`、`/okx` 等请求路由到后端服务,隔离前端与具体端口,并集中处理面向 Web 前端和本地开发的访问入口。

http2-proxyroute prefixTLS terminationbackend routing

server-trade

自动交易执行域:承接策略触发,管理订单生命周期、Paper Worker 与订单监控服务。模拟与实盘使用独立配置与运行环境,减少调试误操作风险。

AutoTradeApiManualTradeApiOrderMonitorpaper/live

server-monitor

持续运行的市场与风险控制域。包含盘前扫描、候选池、证券主数据同步、安全列表、自动化配置与监控任务,负责把市场事件转化为可操作信号。

MonitorServiceScannerSecurity masterPM2 + esbuild

server-backtesting

历史数据验证与策略评估域。通过回测 Worker 执行策略,保存交易过程和结果,使研究参数、信号与最终表现可以被重复验证。

BackTestingWorkerSQLitestrategy runnerrecords

server-tradelog

交易后分析与投资组合域。维护组合、持仓、交易流水、指标和 AI 分析,将账户执行结果回流到研究与决策界面。东方财富自动化操作由前端 TradeLog 模块负责发起。

PortfolioHoldingTransactionanalytics

server-ibkr-api

Interactive Brokers 适配层。依赖已启动的 IBKR Gateway,再通过 @icocoding/ib-node-api 连接 TWS API Socket;将账户摘要、仓位、盈亏、订单、合约详情和实时订阅转换为 Action 与 SSE 接口。

IBKR GatewayIBApiNextSSE streamerror mapping

server-lb-api

LongBridge 行情与交易接入层,封装行情订阅、账户查询和交易请求;通过独立服务组织连接、事件与接口响应。

LongBridgemarket dataesbuildstable mode

server-okx-api

OKX REST 适配层,提供公开行情、账户、仓位与订单接口。私有请求以 HMAC 签名,默认模拟盘;真实下单需显式的 live 与许可开关。

REST v5HMAC-SHA256expTimedemo protected

Monorepo 让共享逻辑、独立服务与持续部署同时成立。

/F

frontend/

Vue 3、Vite、Pinia 与 Element Plus。页面按热力图、个股、回测、IBKR、监控和交易日志等业务域组织。

/S

servers/

每个能力独立为 TypeScript 服务。ServerBootstrap 统一实现 HTTPS、HTTP/2、health、CORS、普通请求和 SSE stream。

/P

packages/

commons 维护券商抽象、市场模型、策略与工具;server-base 维护 action 注册、初始化扫描和服务基座。

交易场景中的工程风险控制。

环境隔离模拟与实盘使用独立配置和进程;实盘操作需要相应账户权限和明确授权。
订单时效OKX 适配通过请求有效期和显式实盘许可控制订单提交;这些机制不构成成交或收益保证。
部署可观测PM2 管理服务进程,esbuild 生成构建产物,服务提供健康检查与运行日志,Caddy 承担反向代理。

Stock Server 项目概要

连接行情可视化、策略回测、模拟与实盘执行、交易日志和组合分析的全栈工程平台。以 Vue 3 / TypeScript 构建交互界面,以 Node.js 多服务、共享领域模型和 Action / SSE 契约组织后端,处理数据流、异步任务、券商事件与运行环境之间的协作。

AutoTrading 承载交易与研究服务;WorthInvesting 提供独立分析前端,复用共享模型与图表能力。项目也包含复用 Web 界面的 Electron 桌面应用工程。

本页为软件项目介绍,不提供投资建议、收益承诺或公开交易入口。示意图和代码为结构说明,不代表实时状态;券商功能与自动化能力受账户权限、配置和实际运行环境限制。