当前位置: 首页 > news >正文

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

前言

最怕的事之一,是本地调试脚本连上了实盘账户;或者 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类型(调试用),对照客户端成交。

风险提示

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

http://www.jsqmd.com/news/947123/

相关文章:

  • 利用快马平台ai生成,十分钟搭建鱼香ros机器人运动控制原型
  • 清远市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • AI落地物流的三个真实切口:从订单自动化到计费智能化
  • 过来人劝告2026年还在手动盲选营销推广渠道不细算?这4款免费神器亲测好用到哭!
  • GL3224读卡器DIY避坑指南:手把手教你搞定W25Q16固件升级(附完整电路图)
  • STM32F103C8T6 USB虚拟串口踩坑实录:从驱动安装失败到高速数据传输调试
  • 内江市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 铜川市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 分析 Redis AOF 覆写期间后台子进程对前台高频 MySQL慢查询定位与执行计划EXPLAIN 写入导致的延迟毛刺隐患
  • Gemini 3.1 Pro长对话认知退化实测与抗衰减工程实践
  • 模块化客户评估系统:业务可解释、策略可调节的AI决策辅助设计
  • 庆阳市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • C#上位机+51单片机PID电机闭环调速全套工程(含串口通信、液晶显示与EEPROM参数存储)
  • 讲真的2026年天津水泥稳定碎石 5家靠谱源头厂家值得推荐 - 本地品牌推荐
  • Grok 4技术深度解析:工具调用、工程妥协与AI人设驯化
  • League Akari:基于LCU API的微内核插件化架构深度解析与实战指南
  • 宁波市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 环境变量DESTDIR和INSTALL_ROOT详解
  • 2026 南京全区域工装甄选指南|商铺 / 门面 / 办公室 / 商城改造 3 家合规正规工装企业实测盘点 + 详细避坑攻略 - 本地便民网
  • 计算机大数据毕设实战-基于Python的新疆特产推荐系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 宁德市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 055、角度环与角速度环的串级PID实现
  • 图像去噪/超分论文实验必备:用MATLAB批量计算PSNR和SSIM的完整脚本
  • 从MAC地址到网络通信:深入浅出图解STM32F407的以太网数据流(附LAN8720调试日志)
  • 第十七天课程(基础)
  • 曲靖市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 白城市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 3大核心优势:douyin-downloader如何成为抖音内容管理的智能解决方案
  • 白山市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 别再只怪指针了!C++项目里0xC0000005访问冲突,试试先检查内存对齐