# tradingSystem (PMS) 环境变量模板 # 服务器部署: cp .env.example .env 后填入真实值。.env 已在 .gitignore, 绝不入库。 # 键名与 bionic_trader 对齐, 同一台服务器两系统可参照同一套连接信息。 # 业务参数 (PMS_TOTAL_SCALE 等) 不必写在这里 —— settings.py 有初值, # 上线后经管理页面调整并持久化到 pms_runtime_param 表。 # ---- 153 代理 (pms_* 全部表 + trading_* + strategy_daily_results, 严格单表访问) ---- PROXY_DB_URL=mysql+pymysql://用户:密码@192.168.16.153:3307/my_quant_db # ---- 因子分表库 (gp_stock_factor_pro_*, 自算参考位用) ---- SOURCE_DB_EXT_DSN=mysql+pymysql://用户:密码@192.168.16.150:3306/factordb_mysql # ---- 大盘指数库 (zs_day_data, 页面区制提示用) ---- DB_MYSQL_URL=mysql+pymysql://用户:密码@192.168.18.199:3306/db_gp_cj # ---- 信号/行情 Redis (208: 决策系统信号流 db2/db3 订阅 + 实时行情 db13) ---- SIGNAL_REDIS_HOST=192.168.18.208 SIGNAL_REDIS_PORT=6379 SIGNAL_REDIS_PASSWORD=wlkj2018 # ---- PMS 自己的 Celery 总线 (150 Redis, db8; 决策系统用 db7, 逻辑隔离) ---- PMS_REDIS_URL=redis://:密码@192.168.16.150:6379/8 # ---- 管理页面 ---- PMS_WEB_PORT=38100 # ---- 登录会话密钥 (2026-08 加权限) ---- # PMS 自带登录: 手机号+密码交给第三方 bshop 校验, 通过后 PMS 自签一张会话票 (cookie)。 # 这一项是**密钥**, 与下面 QMT 两把密钥同规矩: 只在这里维护, 不入库、不进 ParamStore、 # 不上管理页面、不进代码。开着登录 (PMS_AUTH_ENABLED 默认 true) 却留空时, 服务拒绝放行。 # 生成一段随机密钥 (任选一条): # python -c "import secrets; print(secrets.token_urlsafe(48))" # openssl rand -base64 48 PMS_SESSION_SECRET= # ---- 登录角色标记 (2026-08 加权限) ---- # 角色从 bshop 登录返回的权限清单里认。两项都可逗号分隔多条; 联测时直接指到测试账号真有的权限即可。 # 系统管理员 = 权限里含 PMS_ADMIN_PERMS 任一条 (system_key:menu_key)。默认 pms:admin; # 想先拿现成权限联测, 就临时指到管理员账号有的某条, 比如 band:yhyqx (用户与权限)。 PMS_ADMIN_PERMS=band:yhyqx # 含这条权限的账号 = 系统管理员(示例用“用户与权限”) # 交易员准入 = 进入 PMS 至少要占 PMS_TRADER_PERMS 任一条; 留空 = 任何能登录的人都是交易员。 # 想把交易员也限成某条权限 (只给持仓管理权限的人才是交易员), 就指到那条, 比如 band:ccgl。 # 机器:部署服务器 tlai4090(.env 里) PMS_TRADER_PERMS=band:ccgl # 进 PMS 至少要占这条 = 交易员;留空则任何能登录的人都是交易员 # ---- QMT WebSocket 直连通道的密钥 (协议 QMT_WS_PROTOCOL.md §10.1.1) ---- # 这两项是**密钥**, 只在这里维护: 不入库、不进 ParamStore、不上管理页面、不进代码。 # 生成一对新密钥 (公钥带外交给 QMT 侧, 私钥不出机器): # docker compose run --rm pms-web python scripts/gen_keys.py # 填完两项后自检 (含协议 §2.1.1 测试向量): # docker compose run --rm pms-web python scripts/gen_keys.py --check PMS_QMT_SIGN_SEED_HEX= # QMT 侧的 Ed25519 公钥, 用来验上行签名。上下行是两对不同的密钥, 互不复用。 # # 对方多半发的是 PEM 文件。整段 PEM 有换行放不进 .env —— **取中间那行 base64 粘过来**: # -----BEGIN PUBLIC KEY----- # MCowBQYDK2VwAyEAOh3Cd30lcdKkU4+VDIvU9FOFeDfJvK7Cx6A0WE+RdWU= ← 粘这一行 # -----END PUBLIC KEY----- # 裸 32 字节 base64 / 64 位 hex 也都认, 代码会自动归一 (ws_codec.normalize_pubkey)。 PMS_QMT_PEER_PUBKEY_B64= PMS_QMT_WS_URL=ws://192.168.18.182:9443/pms