Metadata-Version: 2.4
Name: tradingos-many
Version: 0.7.6.dev0
Summary: Shared trading strategies with independent exchange adapters
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: httpx==0.28.1
Requires-Dist: Flask==3.1.3
Requires-Dist: waitress==3.0.2
Requires-Dist: cryptography==50.0.2
Requires-Dist: ccxt==4.5.91
Provides-Extra: dev
Requires-Dist: pytest==9.0.3; extra == "dev"

# TradingOS Many

0.7.3 起，已验证的实盘账户默认同步并参加收益率排行榜，不需要先勾选同意。首次自动分配固定随机昵称，用户可在“排行榜→我的排行榜昵称”修改；昵称随实际账户身份保存，重启或更换同一账户的API Key不会重置。资金金额默认对其他用户隐藏，已有展示选择保留；更多设置仍可暂停同步或展示。升级会一次性启用原有实盘账户，仍使用原账户名称的默认昵称替换为随机昵称，已修改的其他昵称保留。没有配置策略的账户仅计入后台，不占排行榜位置。

0.7.1 增加独立在线心跳：已接入程序每60秒发送匿名版本、平台和运行数量，后台可统计在线客户端和正在运行策略的客户端。在线状态与资金收益授权分离，可在“排行榜→数据中心接入”关闭；停止心跳超过3分钟显示离线。自然人数按管理后台中的用户归属分组统计。

0.7.0 增加程序内“排行榜”：授权后每5分钟向独立私有数据中心同步策略收益、各币种资金权益和运行汇总。其他 TradingOS 用户可查看自愿参榜的账户；资金金额可单独隐藏。服务器没有公开榜单，客户端需导入独立接入文件。收益口径、客户端发放及部署见 [数据中心说明](central/README.md)。

Windows 首次直接启动 `serve` 时自动建立管理员 `admin`，默认密码 `12345678`，已有密码不变，并自动打开本机浏览器。安装依赖后双击 `start-windows.cmd` 正常登录，或双击 `start-windows-no-password.cmd` 启用本机免登录；也可以在“系统设置→Windows 本机登录”切换。免登录只接受本机地址，远程访问仍需密码，Linux不开放此选项。启动网页和统计同步都不会自动启动交易引擎。

独立的多交易所交易系统项目。策略共用，交易所通过适配器接入，网页使用统一入口。

本项目从新目录开始整理。旧项目保留在 `D:\codex\okx美股dashboard系统`，作为功能参考；不复制旧项目的密钥、账户数据库、运行状态或部署文件。

## 当前阶段

当前版本 0.6.1.dev0。统一控制台保留原登录页面，验证成功后进入策略总览。提供多账户设置、策略任务启停、暂停开仓、AI／手动参数、规则模板、明细和 CSV 导出、每日盈亏、权益曲线、风险与独立账本、账户汇总、参数导入导出和操作记录。账户使用独立后台进程，策略共用，交易所接口独立。真实下单仍需各账户专项验收；功能验收使用本地模拟账户。

局域网入口：[http://192.168.0.237:9002](http://192.168.0.237:9002)。点击“新增账户”，选择 OKX、Binance、HTX、Gate、Bybit 或 Bitget；Binance 可再选择普通合约账户或 Portfolio Margin。HTX 当前提供V5 全仓双向 USDT 永续，完整范围见 [HTX 接入说明](docs/htx.md)。旧 OKX 后台保留在 9004，原账户数据没有导入新控制台。

| 交易所 | 当前适配范围 | 数量单位 |
| --- | --- | --- |
| OKX | USDT／USDC／USD 永续及支持的线性交割合约；实盘／模拟盘、地区选择；双向持仓、全仓 | 合约张数，面值从交易所读取 |
| Binance | USDT 本位永续；普通合约账户、Portfolio Margin；双向持仓、全仓 | 基础币数量，例如 BTC 数量 |
| HTX | USDT 永续；V5 全仓账户、双向持仓 | 合约张数，面值从交易所读取 |

策略共用一份实现，各交易所适配器负责签名、账户模式、品种规格及请求和响应转换。

## 已实现的策略行为

- 按区间切换多空；配置 AI 中线时，低于中线开多，高于中线开空。
- 按倍率分层开仓和加仓，使用实际成交数量及均价更新状态。
- 单层盈利后小幅回撤止盈；最后一层达到逆向阈值后，挂本轮合并限价止盈。
- 默认保留旧轮止盈挂单，从挂单创建时间计算等待间隔，随后开启新轮。
- 更新 `intervals`、`zy`、`tp_ratio` 后，下一笔决策立即采用新值；既有旧轮挂单保留原价。
- 手动成交单独记账。手动减仓超过手动登记仓位时，核减策略登记数量，并只调整本策略止盈单。
- 下单前持久化意图；超时后查询原客户端订单标识，不重复提交结果不确定的委托。
- 按实际账户 UID 互斥运行，API Key 及普通／PM 模式不作为第二个实际账户身份。

## 本地运行

需要 Python 3.11 或更新版本。在本目录执行：

```powershell
python -m pip install -e ".[dev]"
python -m tradingos_many simulate examples/okx.strategy.json
python -m tradingos_many simulate examples/okx-inverse.strategy.json
python -m tradingos_many simulate examples/binance.strategy.json
python -m tradingos_many simulate examples/binance-pm.strategy.json
python -m pytest -q
```

新安装启动网页：

```sh
python -m tradingos_many init-admin --data-dir data
python -m tradingos_many serve --data-dir data --host 127.0.0.1 --port 9002
```

初始化时交互输入新的管理员密码，用户名为 `admin`。服务启动不会启动交易。账户凭据按账户分别加密保存于数据目录，`credentials.key` 必须与数据库一起妥善保留。

`simulate` 只使用示例里的本地价格和模拟合约规格，不读取真实凭据或连接交易所。添加 `--full` 可查看完整订单、手动账本和策略状态。示例参数用于验证流程。

当前验证结果见 [验证记录](docs/verification.md)。

## 使用流程

1. 登录统一控制台。
2. 添加账户，选择交易所。
3. 按交易所选择账户类型并填写 API 凭据。
4. 点击“验证并进入策略控制台”，验证成功后配置交易对参数。
5. 配置手动参数，或选择 AI 分析每 30 分钟更新；切回手动后停止自动更新。AI 的观望标记不作为开仓条件，中线决定方向。
6. 允许需要运行的交易对，通过启动检查，确认账户独占后启动任务。登录、验证账户和新建参数不会自动启动任务；运行中修改参数会影响下一次决策。
7. “暂停全部开仓”继续管理已有策略仓位及止盈。“停止策略”退出账户任务，交易所已有持仓和挂单保留，停机期间不再由本程序管理。

多个交易所共用 `9002` 网页入口，通过新增账户和 API 设置里的交易所选项区分。

## 目录

```text
tradingos-many/
├── docs/                         架构与迁移说明
├── src/tradingos_many/
│   ├── domain/                   通用交易模型和接口约定
│   ├── strategies/               共用策略逻辑
│   ├── exchanges/
│   │   ├── okx/                  OKX 适配器
│   │   ├── binance/              Binance 适配器
│   │   └── bitget/               Bitget 适配器预留
│   ├── accounts/                 账户身份、模式和密钥管理
│   ├── workers/                  策略任务生命周期
│   ├── web/                      统一网页与 HTTP API
│   └── infrastructure/           持久化、锁与日志
├── .env.example                  后续运行配置示例
└── pyproject.toml                Python 包定义
```

Bitget 目录目前仍为预留。网页通过 `accounts/factory.py` 选择交易所适配器；`workers/account.py` 管理账户任务，`workers/strategy.py` 负责单个策略执行。

## 当前边界

原生适配器已经实现账户身份校验、行情、持仓、普通订单、撤单和成交历史接口，并通过 HTTP 模拟响应测试。公开行情及合约规格已连接真实接口验证；部署后使用现有 OKX 账户验证了资产、持仓、挂单、历史明细和每日盈亏等只读签名接口。Binance 真实私有接口及两家交易所实盘下单仍未在本轮验证。

新账本将启动前的存量仓位登记为手动基线，不导入旧项目的策略状态。已有条件挂单、强平及长时间断线后的对账仍需专项验证。Binance 当前不包含 COIN-M、PM Pro 或交易所模拟盘；本地模拟使用 `paper`。

网页为账户工厂传入仅属于当前账户的解密凭据，不读取其他账户配置。AI 数据不可用或过期时会显示错误，过期配置暂停新开仓并继续退出管理。默认杠杆为 0，表示沿用交易所设置；用户指定杠杆后设置失败会暂停新开仓并显示原因。

权益曲线在资产查询时每 5 分钟留样；不同币种、实盘与模拟盘分开统计。历史查询每类最多返回 1000 条，达到边界会标注不完整；Binance 成交与平仓记录需指定交易对，平仓记录采用已实现盈亏成交口径。旧账户、旧运行状态和历史曲线不会自动迁入，可用参数导入预览迁移旧 OKX 参数，新条目默认暂停。

详细设计见 [架构说明](docs/architecture.md)，实施顺序见 [迁移计划](docs/migration-plan.md)。

Gate、Bybit、Bitget 的账户要求、数量单位与首版限制见 [SDK 交易所接入说明](docs/sdk-exchanges.md)。
