news 2026/6/4 6:47:01

期货量化模拟误连实盘:天勤配置与环境变量分离

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
期货量化模拟误连实盘:天勤配置与环境变量分离

前言

最怕的事之一,是本地调试脚本连上了实盘账户;或者 Git 里提交了带密码的配置,同事 clone 下来直接跑。我习惯把「环境(模拟/实盘)」和「密钥」都从代码里拆出去,用配置文件加环境变量,启动时打印当前模式,人为确认一眼再跑。

天勤TqSdk构造TqApi时传入TqSimTqKqTqAccount,改一行就能换环境,若写死在策略深处就容易改漏。下面给一套个人和小团队能落地的分离方式。

一、不要把密码写进仓库

禁止:

auth=TqAuth("真实账号","真实密码")# 提交到 Git

应改为从环境变量或本地不提交的secrets.yaml读取:

importosfromtqsdkimportTqAuth user=os.environ["TQ_USER"]pwd=os.environ["TQ_PASSWORD"]auth=TqAuth(user,pwd)

secrets.yaml加入.gitignore。CI 机器用密钥管理服务注入环境变量。

二、用配置区分 sim / kq / live

config.yaml示例(不含密码):

mode:sim# sim | kq | livesymbol:SHFE.rb2510

启动脚本读取 mode,创建对应交易单元:

importosimportyamlfromtqsdkimportTqApi,TqAuth,TqSim,TqAccountdefload_cfg():withopen("config.yaml",encoding="utf-8")asf:returnyaml.safe_load(f)defcreate_api(cfg):auth=TqAuth(os.environ["TQ_USER"],os.environ["TQ_PASSWORD"])mode=cfg["mode"]ifmode=="sim":returnTqApi(TqSim(),auth=auth)ifmode=="kq":fromtqsdkimportTqKqreturnTqApi(TqKq(),auth=auth)ifmode=="live":returnTqApi(TqAccount("期货公司","资金账号","密码"),auth=auth)raiseValueError("unknown mode")cfg=load_cfg()print(">>> 当前模式:",cfg["mode"],"<<< 确认后 3 秒内继续")api=create_api(cfg)

实盘模式前增加人工确认或二次环境变量ALLOW_LIVE=1,防止误点。

三、目录与路径分离

模拟日志、状态文件放data/sim/,实盘放data/live/,避免读错持久化状态(策略状态文件也应分目录存放)。云主机部署时用绝对路径环境变量TQ_DATA_DIR

四、团队规范建议

做法
密钥仅环境变量或密钥库
模式config.yaml 的 mode,启动打印
实盘单独分支或单独启动脚本
代码评审禁止合并含密码的 diff

五、和 Jupyter、多脚本的关系

Notebook 里不要硬编码TqAccount;用同一create_api(cfg)入口。多个策略文件import同一配置模块,避免某文件漏改仍连实盘。

总结

模拟误连实盘,多数是配置和密钥没分离。天勤切换环境靠构造参数,策略层应集中创建TqApi,用 mode + 环境变量双保险,启动时显性打印当前模式。

建议今天就把仓库里的明文密码清掉、轮换一次快期密码,并加上config.example.yaml供同事复制。

FAQ

1)config.yaml 能放账号吗?

最好不要;只放 mode、合约等非敏感项。

2)Docker 怎么注入?

docker run -e TQ_USER=... -e TQ_PASSWORD=...

3)多账户?

多个环境变量前缀,如TQ_USER_A

4)误连后如何自查?

查启动日志 mode、查api._account类型(调试用),对照客户端成交。

风险提示

本文用于工程安全实践,不构成投资建议。实盘操作务必双人复核或权限隔离。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 6:46:15

Vivado ROM IP核配置避坑指南:从.coe文件到成功上板的完整流程

Vivado ROM IP核配置避坑指南&#xff1a;从.coe文件到成功上板的完整流程第一次在Vivado中配置ROM IP核时&#xff0c;我盯着那个"Invalid COE file format"的报错信息整整两小时。明明文件路径正确&#xff0c;格式看起来也没问题&#xff0c;但系统就是拒绝加载。…

作者头像 李华
网站建设 2026/6/4 6:46:00

【仅限首批200位技术负责人】:金融/电商/内容平台AI推荐整合落地手册(含合规审计checklist+SLA保障协议范本)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI工具与智能推荐整合的演进逻辑与行业适配图谱 AI工具与智能推荐系统的融合并非技术叠加&#xff0c;而是数据流、决策链与业务闭环深度重构的结果。早期推荐系统依赖协同过滤与内容特征工程&#xff0c;响应…

作者头像 李华
网站建设 2026/6/4 6:45:09

Switchbot母公司两年完成收购Nanoleaf,智能家居与照明跨界融合?

Switchbot母公司两年收购Nanoleaf&#xff0c;跨界布局智能家居以模块化 RGB 照明面板闻名的智能照明公司 Nanoleaf 已被 Switchbot 的母公司 OneRobotics 收购。根据香港证券交易所的一份文件&#xff0c;此次收购将耗时两年完成。Nanoleaf进军机器人AI&#xff0c;Switchbot深…

作者头像 李华
网站建设 2026/6/4 6:44:30

08 位置编码详解:Sinusoidal、RoPE、ALiBi 为什么重要?

在前面的文章中&#xff0c;我们已经讲过 Transformer 的整体结构、Self-Attention、Encoder、Decoder。但是这里还有一个非常关键的问题&#xff1a;Transformer 是怎么知道 token 顺序的&#xff1f;例如下面两个句子&#xff1a;我 喜欢 你 你 喜欢 我它们包含的 token 很相…

作者头像 李华
网站建设 2026/6/4 6:41:14

SRAM加速LLM推理:LUT-GEMV算法与硬件架构设计

1. SRAM加速LLM推理的技术背景在大型语言模型(LLM)推理过程中&#xff0c;矩阵向量乘法(GEMV)占据了超过85%的计算开销。传统CPU架构面临两个关键瓶颈&#xff1a;一是内存墙问题&#xff0c;数据在处理器和内存间的频繁搬运消耗了60%以上的能耗&#xff1b;二是随着模型量化精…

作者头像 李华