easytrader 远端服务模式实战:交易服务端与量化策略端分离部署指南
easytrader 远端服务模式实战交易服务端与量化策略端分离部署指南【免费下载链接】easytrader提供同花顺客户端/miniqmt/雪球的股票量化交易支持跟踪 joinquant /ricequant 模拟交易 和 实盘雪球组合项目地址: https://gitcode.com/gh_mirrors/ea/easytrader导读本文讲解 easytrader 的远端服务模式Remote Server Mode将交易服务端与量化策略端部署在不同机器上通过 HTTP 接口远程驱动券商客户端完成下单、查询等操作。读完本文你将掌握如何在固定 IP 的云服务器上启动 easytrader 交易服务如何用remoteclient在本地或任意量化平台远程调用买卖、撤单、查询资金持仓等全部交易能力并理解底层 Flask 路由与请求参数的实现细节。一、什么是远端服务模式远端服务模式的核心思想是交易与策略分离。整个系统被拆成两个物理上独立的角色角色部署位置职责交易服务端通常是有固定IP地址的云服务器运行easytrader交易服务被动或主动接收交易信号驱动交易软件完成实际下单量化策略端JoinQuant、RiceQuant、Vn.Py等物理上与交易服务端不在同一台电脑运行量化策略通过 HTTP 请求把交易指令发送给交易服务端其中交易软件包括运行在交易服务端同一台机器上的下单软件例如同花顺客户端xiadan.exe也可以是运行在另一台服务器上的雪球xq账户。这种分离模式的价值在于量化策略往往运行在云端或本地的 Python 环境里聚宽、米筐等平台而券商交易客户端如同花顺通常依赖 Windows 桌面 GUI、受限于网络与安全策略只能运行在特定的云服务器上。远端服务模式让两者各司其职策略端只需通过 HTTP 即可驱动远端的交易客户端。二、交易服务端启动服务交易服务端的启动代码非常简洁from easytrader import server server.run(port1430) # 默认端口为 1430从源码 easytrader/server.py 可以看到server.run内部基于 Flask 启动了一个监听在0.0.0.0的 Web 服务def run(port1430): app.run(host0.0.0.0, portport)几点值得注意默认端口为1430可通过port参数自定义服务监听0.0.0.0即对外网开放因此必须结合云服务器安全组/防火墙规则做好访问控制只允许可信来源访问服务端通过api.use(broker)创建券商交易对象支持的 broker 类型与本地模式完全一致见 easytrader/api.pyminiqmtQMT 量化接口xq/雪球雪球组合yh_client/银河客户端、ht_client/华泰客户端、wk_client/五矿客户端、htzq_client/海通证券客户端、gj_client/国金客户端、gf_client/广发客户端universal_client/通用同花顺客户端、ths/同花顺客户端。服务端 HTTP 接口一览服务端启动后会暴露一组 RESTful 风格的接口见 easytrader/server.py方法路径说明POST/prepare初始化并登录券商客户端body 中带broker字段成功后返回{msg: login success}GET/balance获取资金状况GET/position获取持仓GET/auto_ipo一键打新GET/today_entrusts查询当日委托GET/today_trades查询当日成交GET/cancel_entrusts查询可撤委托POST/buy买入body 携带security、price、amountPOST/sell卖出body 携带security、price、amountPOST/cancel_entrust按委托号撤单body 携带entrust_noGET/exit退出客户端软件其中/prepare的实现逻辑为从 JSON body 中取出broker字段调用api.use(broker)创建交易对象再将剩余参数透传给user.prepare(**json_data)最后把创建好的user保存在服务端的全局字典global_store中供后续请求复用见 easytrader/server.py。所有接口都经过error_handle装饰器包装一旦底层抛出异常会返回400状态码以及{error: 异常类名: 异常信息}的 JSON 错误体见 easytrader/server.py方便远端定位问题。三、量化策略端调用服务量化策略端无需安装任何券商客户端只需要通过remoteclient创建一个远端用户对象即可调用服务from easytrader import remoteclient user remoteclient.use( 使用客户端类型可选 yh_client, ht_client, ths, xq等, host服务器ip, port服务器端口默认为1430 ) user.buy(......) user.sell(......)remoteclient.use的签名定义在 easytrader/remoteclient.pydef use(broker, host, port1430, **kwargs): return RemoteClient(broker, host, port, **kwargs)RemoteClient在初始化时会做三件事见 easytrader/remoteclient.py创建一个requests.Session用于复用 TCP 连接、保持 HTTP 基本认证状态若传入了user与passwd则自动启用HTTPBasicAuth基本认证若传入auth则使用自定义的认证对象对应服务端可配合 Flask 的认证中间件使用拼接 API 基础地址默认走http://协议若传入sslTrue则切换为https://适用于反向代理强制走 HTTPS 的场景。因此完整的调用还可以这样写user remoteclient.use( yh_client, host123.45.67.89, port1430, user服务端HTTP认证用户名, # 可选 passwd服务端HTTP认证密码, # 可选 sslFalse, # 可选反向代理要求 HTTPS 时置为 True )四、登录准备prepare与本地模式一样在交易之前需要先调用prepare完成客户端登录。远端模式下prepare支持两种传参方式见 easytrader/remoteclient.py方式一直接传登录参数user.prepare(user账号, password明文密码, exe_pathrC:\htzqzyb2\xiadan.exe, comm_password通讯密码(华泰))方式二传配置文件路径user.prepare(config_path/path/to/yh_client.json)传入config_path时客户端会调用 easytrader/utils/misc.py 中的file2dict读取 JSON 配置并自动把其中的user、password填充进请求参数。仓库根目录提供了现成的配置模板例如 yh_client.json{ user: 银河用户名, password: 银河明文密码 }以及 gj_client.json{ user: 国金用户名, password: 国金明文密码 }无论哪种方式prepare最终都会把broker类型一起打包POST 到服务端的/prepare接口完成登录见 easytrader/remoteclient.py。注意服务端创建交易对象时使用的 broker 类型由remoteclient.use()的第一个参数决定登录参数只是传给客户端完成认证两者不要混淆。五、远端交易操作与查询登录成功后远端用户对象提供了与本地用户完全一致的交易与查询 API底层分别映射到服务端对应的 HTTP 接口见 easytrader/remoteclient.py。5.1 买入与卖出user.buy(162411, price0.55, amount100) # return {entrust_no: xxxxxxxx} user.sell(162411, price0.55, amount100) # return {entrust_no: xxxxxxxx}buy/sell会把security、price、amount三个参数 POST 到/buy、/sell接口见 easytrader/remoteclient.py因此远端下参数含义与本地完全一致security为证券代码price为委托价格amount为委托数量。5.2 撤单user.cancel_entrust(buy/sell 获取的 entrust_no) # return {message: success}按委托号撤单委托号来自买卖操作返回的entrust_no见 easytrader/remoteclient.py。5.3 查询资金与持仓user.balance # GET /balance返回资金列表字段如 总资产、可用资金、参考市值 user.position # GET /position返回持仓列表字段如 证券代码、证券名称、当前持仓5.4 当日委托与当日成交user.today_entrusts # GET /today_entrusts user.today_trades # GET /today_trades5.5 查询可撤委托与一键打新user.cancel_entrusts # GET /cancel_entrusts查询当日可撤委托 user.auto_ipo() # GET /auto_ipo一键打新5.6 退出客户端user.exit() # return {msg: exit success}上述返回字段的具体形态与本地模式一致可参考 docs/usage.md 中给出的balance、position、today_entrusts、today_trades等真实返回示例例如user.balance返回形如[{总资产: 50136.21, 可用资金: 28494.21, ...}]的字典列表。六、工作流程与调用链解析一次完整的远端交易请求其调用链可以概括为量化策略端 交易服务端(云服务器) ┌──────────────────┐ HTTP ┌──────────────────────────────┐ │ remoteclient.use │ ───────▶ │ Flask app (0.0.0.0:1430) │ │ user.prepare() │ /prepare│ api.use(broker) │ │ user.buy(...) │ /buy │ user.prepare(**json_data) │ │ user.sell(...) │ /sell │ global_store[user] 复用 │ │ user.balance │ /balance│ user.buy(**json_data) │ └──────────────────┘ └──────────────────────────────┘关键设计细节单用户状态保存在服务端内存/prepare成功后user对象被存入模块级字典global_store之后的买卖、查询请求都直接复用该对象见 easytrader/server.py。因此一次服务进程内通常对应一个已登录的交易账户错误以 JSON 形式回传所有接口失败时返回400状态码与{error: ...}RemoteClient会检测status_code 300并抛出异常见 easytrader/remoteclient.py可扩展的协议远端模式本质上只是把本地Trader对象的属性和方法逐个暴露为 HTTP 接口仓库测试 tests/test_easytrader.py 中验证的balance、today_entrusts、today_trades、cancel_entrust、buy、sell、auto_ipo等能力在远端模式下均有对应接口业务语义保持一致。七、部署注意事项结合 docs/install.md 中的云端部署建议远端服务模式下需要注意以下几点交易客户端环境若交易软件是 Windows 上的同花顺客户端如xiadan.exe云服务器需具备图形界面运行环境官方文档建议在云服务上部署时使用 TightVNC 等远程桌面工具自带的远程桌面可能存在兼容问题客户端设置按 docs/install.md 的要求设置客户端——系统设置中将界面不操作超时时间设为 0将默认买入/卖出价格、数量都置空客户端不能最小化、不能处于精简模式否则会导致下单价格出错或客户端超时锁定网络与安全服务默认监听0.0.0.0建议通过云安全组限制来源 IP或结合user/passwd参数启用 HTTP Basic Auth若经过反向代理强制 HTTPS可在remoteclient.use中传sslTrue登录方式部分券商专用同花顺客户端不支持自动登录需要先手动登录客户端再由服务端复用已登录窗口此时prepare的作用是让 easytrader 识别到已登录的窗口验证码若券商登录需要验证码需在服务端单独安装tesseract注意不是pytesseract保证命令行下tesseract可用也可以手动登录后由 easytrader 直接识别已登录窗口。八、最小可运行示例综合以上内容一个最小可运行的远端交易示例如下。交易服务端云服务器上运行from easytrader import server if __name__ __main__: server.run(port1430) # 默认端口 1430可自定义量化策略端策略机上运行from easytrader import remoteclient # 1. 连接远端交易服务指定券商类型 user remoteclient.use(yh_client, host服务器ip, port1430) # 2. 登录交易客户端方式一直接传参 user.prepare(user账号, password明文密码) # 方式二配置文件登录 # user.prepare(config_pathyh_client.json) # 3. 查询资金与持仓 print(user.balance) print(user.position) # 4. 交易 result user.buy(162411, price0.55, amount100) print(result) user.sell(162411, price0.55, amount100) # 5. 撤单使用买卖返回的委托号 user.cancel_entrust(xxxxxxxx)至此量化策略端与交易客户端彻底解耦策略逻辑可以运行在任意具备 Python 环境的机器上而所有涉及券商客户端的敏感操作都被收敛在固定 IP 的交易服务端这正是远端服务模式在 easytrader 生态中的核心价值所在。【免费下载链接】easytrader提供同花顺客户端/miniqmt/雪球的股票量化交易支持跟踪 joinquant /ricequant 模拟交易 和 实盘雪球组合项目地址: https://gitcode.com/gh_mirrors/ea/easytrader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

templ ADR 0001 解析:如何在文本行内书写 `@Component()` 组件表达式

templ ADR 0001 解析:如何在文本行内书写 `@Component()` 组件表达式

开发工具代码生成后端 【免费下载链接】templ A language for writing HTML user interfaces in Go. 项目地址: https://gitcode.com/gh_mirrors/te/templ 点击查看 免费下载 符号在 templ 模板语言中用于调用组件表达式(templ element expression&…

2026/9/24 17:00:11 阅读更多 →
刷题笔记:

刷题笔记:

标准刷题结构:public class Main{ public static void main(String[] args){ } }输入:import java.util.Scanner; public class Main{ public class void main(String[] args){ Scanner sc new Scanner(String.in); } }格式化输出:printf(&…

2026/9/24 17:00:11 阅读更多 →
Jackett 跨平台部署 3 步跑通 BT Tracker 聚合

Jackett 跨平台部署 3 步跑通 BT Tracker 聚合

Jackett 跨平台部署 3 步跑通 BT Tracker 聚合 Jackett 把多个 BT Tracker 的搜索结果统一成 Torznab API,让 Sonarr、Radarr 等客户端免适配直接调用。想在 Windows、macOS、Linux 上部署?这篇教程按场景给最短安装路径,并覆盖启动验证、后…

2026/9/24 17:00:11 阅读更多 →

最新新闻

PHP数据建模的术语大全的庖丁解牛

PHP数据建模的术语大全的庖丁解牛

总纲 PHP的数据建模,本质就是面向对象思想落地到业务数据:把业务里的实体(用户、订单、商品)抽象成模型,打通PHP代码和MySQL数据库。和Java的OOP建模同源,但PHP有自身特点:常用Laravel/ThinkPHP…

2026/9/24 17:48:44 阅读更多 →
【Dify】思维导图生成应用

【Dify】思维导图生成应用

自动化思维导图工具已成为内容整理与知识可视化的重要助手。围绕文本到导图的全流程自动化,简化信息梳理与展示流程,提升表达效率。 本文聚焦于Dify平台下自动生成思维导图的实际流程、核心技术组件及典型应用场景,介绍关键节点功能和操作步骤,助力高效知识结构化。 文章目…

2026/9/24 17:48:44 阅读更多 →
汽车电子瞬变脉冲干扰测试全解析:从ISO 7637标准到TPI-7637系列模拟器实战

汽车电子瞬变脉冲干扰测试全解析:从ISO 7637标准到TPI-7637系列模拟器实战

一、为什么汽车电子必须做瞬传脉冲测试现代汽车上装载的 ECU(电子控制单元)数量动辄上百个,从发动机管理、ABS、车身控制到智驾域控制器,都工作在同一个 12V / 24V / 48V 电气环境中。这套环境并不"干净":继…

2026/9/24 17:48:44 阅读更多 →
【有源码】基于Python的医疗问答数据特征提取与问答趋势可视化分析系统-面向在线医疗社区的疾病问答分布规律与回答质量评价研究

【有源码】基于Python的医疗问答数据特征提取与问答趋势可视化分析系统-面向在线医疗社区的疾病问答分布规律与回答质量评价研究

注意:该项目只展示部分功能,如需了解,文末咨询即可。 本文目录1 开发环境2 系统设计3 系统展示3.1 大屏页面3.2 分析页面3.3 基础页面4 更多推荐5 部分功能代码1 开发环境 发语言:python 采用技术:Spark、Hadoop、Dja…

2026/9/24 17:48:44 阅读更多 →
Python 项目应用:Flask 框架 新手入门与实战

Python 项目应用:Flask 框架 新手入门与实战

摘要:本文手把手带你从零搭建 Flask 开发环境,依次掌握路由、模板、表单、数据库、模块化与调试技巧,最终完成生产部署上线。Flask 轻量灵活、生态成熟、上手门槛低,适合快速构建原型并平滑过渡到生产级应用。无论你是零基础新手,还是想系统梳理后端开发流程,都能从中获得…

2026/9/24 17:48:44 阅读更多 →
剪辑气口视频节奏太拖沓?2026剪气口工作流,5款工具怎么选

剪辑气口视频节奏太拖沓?2026剪气口工作流,5款工具怎么选

剪辑气口视频时,手动找停顿、删空白往往占据口播后期大半时间。鲸剪(WhaleClip)是一款面向短视频创作者与团队的 AI 桌面剪辑工具,支持 Windows 与 macOS,其剪辑气口功能可基于音频波形与字幕时间轴自动识别并裁剪冗余…

2026/9/24 17:47:43 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →