修正env
This commit is contained in:
+21
@@ -0,0 +1,21 @@
|
|||||||
|
# 本地真实配置(含 API 密钥),勿提交
|
||||||
|
**/.env
|
||||||
|
.env
|
||||||
|
|
||||||
|
# 允许提交模板
|
||||||
|
!**/.env.example
|
||||||
|
!.env.example
|
||||||
|
|
||||||
|
# Python
|
||||||
|
**/__pycache__/
|
||||||
|
**/*.pyc
|
||||||
|
**/.venv/
|
||||||
|
|
||||||
|
# 本地备份(可选,勿提交)
|
||||||
|
**/.env.backup*
|
||||||
|
**/.env.bak
|
||||||
|
**/.env.local
|
||||||
|
|
||||||
|
# 数据库与上传(运行时生成)
|
||||||
|
**/*.sqlite
|
||||||
|
**/crypto.db
|
||||||
@@ -45,7 +45,12 @@ cd crypto_monitor
|
|||||||
| `crypto_monitor_gate_bot` | `GATE_*` | Gate 侧 **独立子账户 / 机器人**;文档中含 **趋势回调** 等策略说明 |
|
| `crypto_monitor_gate_bot` | `GATE_*` | Gate 侧 **独立子账户 / 机器人**;文档中含 **趋势回调** 等策略说明 |
|
||||||
| `crypto_monitor_okx` | `OKX_*` | OKX 永续;需 API Key / Secret / Passphrase |
|
| `crypto_monitor_okx` | `OKX_*` | OKX 永续;需 API Key / Secret / Passphrase |
|
||||||
|
|
||||||
各目录根下配置 **`./.env`**(勿提交 Git),变量名以前缀区分,**不可混用**(例如在 Gate 项目中写 OKX 变量会导致代理与密钥不生效)。
|
各目录根下:
|
||||||
|
|
||||||
|
- **`.env.example`**:配置模板(**可** `git pull` 同步),新机执行 `cp .env.example .env` 后编辑。
|
||||||
|
- **`.env`**:本机真实配置(**勿**提交 Git);`app.py` 只读此文件。`git pull` **不会**覆盖 `.env`;升级前建议 `cp .env .env.backup.$(date +%Y%m%d)`。
|
||||||
|
|
||||||
|
变量名以前缀区分,**不可混用**(例如在 Gate 项目中写 OKX 变量会导致代理与密钥不生效)。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -74,15 +79,20 @@ cd crypto_monitor
|
|||||||
## 六、推荐阅读顺序
|
## 六、推荐阅读顺序
|
||||||
|
|
||||||
1. 克隆本仓库后,根据你实际交易的所,进入对应 **`crypto_monitor_*`** 目录。
|
1. 克隆本仓库后,根据你实际交易的所,进入对应 **`crypto_monitor_*`** 目录。
|
||||||
2. 阅读该目录下的 **《部署文档.md》**(Ubuntu / PM2 / 代理 / `.env` 模板)。
|
2. 在该目录执行 **`cp -n .env.example .env`** 并编辑 `.env`(填入 API 与密码等)。
|
||||||
3. 需要 **Gate 趋势回调** 规则时,阅读 [crypto_monitor_gate_bot/趋势回调策略说明.md](./crypto_monitor_gate_bot/趋势回调策略说明.md)。
|
3. 阅读该目录下的 **《部署文档.md》**(Ubuntu / PM2 / 代理 / 备份与升级说明)。
|
||||||
4. 需要 **多账户一块看 + 紧急全平** 时,阅读 [manual_trading_hub](./manual_trading_hub/) 下 README 与部署文档。
|
4. 需要 **Gate 趋势回调** 规则时,阅读 [crypto_monitor_gate_bot/趋势回调策略说明.md](./crypto_monitor_gate_bot/趋势回调策略说明.md)。
|
||||||
|
5. 需要 **多账户一块看 + 紧急全平** 时,阅读 [manual_trading_hub](./manual_trading_hub/) 下 README 与部署文档。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 七、安全与合规
|
## 七、安全与合规
|
||||||
|
|
||||||
- **切勿**将 `.env`、API Secret、SSH 私钥 `.pem` 等提交到版本库或公开渠道。
|
- **切勿**将 `.env`、`.env.backup*`、API Secret、SSH 私钥 `.pem` 等提交到版本库或公开渠道;仅 **`.env.example`** 可提交(占位符,无真实密钥)。
|
||||||
|
|
||||||
|
### 从旧版仓库升级(曾把 `.env` 提交进 Git)
|
||||||
|
|
||||||
|
在 **`git pull` 之前**,于每个策略目录备份:`cp .env .env.backup.$(date +%Y%m%d)`。pull 后若本地 `.env` 被误删,用备份恢复;再对照新的 **`.env.example`** 补全可能新增的变量名。
|
||||||
- 实盘前务必在 **`LIVE_TRADING_ENABLED=false`** 下验证页面与网络;API 权限与 IP 白名单遵循各交易所要求。
|
- 实盘前务必在 **`LIVE_TRADING_ENABLED=false`** 下验证页面与网络;API 权限与 IP 白名单遵循各交易所要求。
|
||||||
- 使用本仓库进行实盘交易的风险由使用者自行承担;请遵守当地法律法规与交易所用户协议。
|
- 使用本仓库进行实盘交易的风险由使用者自行承担;请遵守当地法律法规与交易所用户协议。
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# 环境配置模板(可提交 Git)。程序运行时只读取同目录下的 .env。
|
||||||
|
#
|
||||||
|
# 首次部署 / 新机:
|
||||||
|
# cp .env.example .env
|
||||||
|
# nano .env # 填入真实密钥、端口、代理等
|
||||||
|
#
|
||||||
|
# 升级代码(git pull)前建议备份(.env 不在 Git 中,pull 不会覆盖):
|
||||||
|
# cp .env .env.backup.$(date +%Y%m%d)
|
||||||
|
#
|
||||||
|
# 从备份恢复:
|
||||||
|
# cp .env.backup.YYYYMMDD .env
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
APP_ENV=production
|
APP_ENV=production
|
||||||
# 服务监听地址(云服务器通常用 0.0.0.0)
|
# 服务监听地址(云服务器通常用 0.0.0.0)
|
||||||
APP_HOST=0.0.0.0
|
APP_HOST=0.0.0.0
|
||||||
@@ -24,9 +24,12 @@ pip install flask requests ccxt werkzeug PySocks Pillow
|
|||||||
|
|
||||||
页面上的 **「当日资金(交易账户)」** 与 **「可开仓」可用 U** 仅统计 **Binance U 本位永续合约账户**(`fetch_balance` 的 `swap` / FAPI `assets` 中的 USDT),**不会**再用现货余额顶替。
|
页面上的 **「当日资金(交易账户)」** 与 **「可开仓」可用 U** 仅统计 **Binance U 本位永续合约账户**(`fetch_balance` 的 `swap` / FAPI `assets` 中的 USDT),**不会**再用现货余额顶替。
|
||||||
|
|
||||||
## 配置说明(`.env`)
|
## 配置说明(`.env.example` → `.env`)
|
||||||
|
|
||||||
项目启动时会加载**项目根目录**下的 `.env`。与 Binance 相关的常用变量:
|
- **`.env.example`**:模板(可提交 Git);首次:`cp .env.example .env` 后编辑。
|
||||||
|
- **`.env`**:本机真实配置(勿提交);`app.py` 只读此文件。`git pull` 不覆盖 `.env`;升级前可 `cp .env .env.backup.$(date +%Y%m%d)`。
|
||||||
|
|
||||||
|
与 Binance 相关的常用变量:
|
||||||
|
|
||||||
| 变量 | 说明 |
|
| 变量 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
@@ -39,7 +42,7 @@ pip install flask requests ccxt werkzeug PySocks Pillow
|
|||||||
| `EXCHANGE_DISPLAY_NAME` | 页面展示的交易所名称,默认 `Binance` |
|
| `EXCHANGE_DISPLAY_NAME` | 页面展示的交易所名称,默认 `Binance` |
|
||||||
| `BINANCE_ACCOUNT_LABEL` | 推送文案中的账户备注 |
|
| `BINANCE_ACCOUNT_LABEL` | 推送文案中的账户备注 |
|
||||||
|
|
||||||
其余变量(登录、企业微信、风控参数、数据库路径等)见仓库内 **`.env` 示例注释** 或 `app.py` 顶部默认值。
|
其余变量(登录、企业微信、风控参数、数据库路径等)见 **`.env.example` 内注释** 或 `app.py` 顶部默认值。
|
||||||
|
|
||||||
## 本地运行
|
## 本地运行
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ module.exports = {
|
|||||||
autorestart: true,
|
autorestart: true,
|
||||||
watch: false,
|
watch: false,
|
||||||
max_memory_restart: "800M",
|
max_memory_restart: "800M",
|
||||||
// app.py 会从项目根目录加载 .env,此处无需重复 env_file
|
// app.py 从项目根目录 .env 加载(由 .env.example 复制而来,勿提交 Git)
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -24,7 +24,9 @@
|
|||||||
|
|
||||||
## 2. 运行前必须配置(`.env`)
|
## 2. 运行前必须配置(`.env`)
|
||||||
|
|
||||||
至少检查以下项(具体键名以你仓库 `.env` 示例为准):
|
首次在本目录执行 **`cp .env.example .env`**,再编辑 `.env`(`.env` 勿提交 Git;`git pull` 不会改你的 `.env`,升级前建议 `cp .env .env.backup.$(date +%Y%m%d)`)。
|
||||||
|
|
||||||
|
至少检查以下项(具体键名以 **`.env.example`** 为准):
|
||||||
|
|
||||||
| 类别 | 说明 |
|
| 类别 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
|
|||||||
@@ -30,12 +30,18 @@
|
|||||||
```bash
|
```bash
|
||||||
mkdir -p /opt/crypto_monitor
|
mkdir -p /opt/crypto_monitor
|
||||||
cd /opt/crypto_monitor
|
cd /opt/crypto_monitor
|
||||||
# git clone ... 或解压同步的包
|
git clone https://git.bz121.com/dekun/crypto_monitor.git
|
||||||
cd crypto_monitor_binance
|
cd crypto_monitor/crypto_monitor_binance
|
||||||
```
|
```
|
||||||
|
|
||||||
下文用 **`/opt/crypto_monitor/crypto_monitor_binance`** 仅为示例,请换成你的实际绝对路径。
|
下文用 **`/opt/crypto_monitor/crypto_monitor_binance`** 仅为示例,请换成你的实际绝对路径。
|
||||||
|
|
||||||
|
拉取代码后,若目录下尚无 `.env`,先从模板生成(**勿**把填好密钥的 `.env` 提交 Git):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp -n .env.example .env # -n:已存在 .env 时不覆盖
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2. 配置 SSH 私钥与 `~/.ssh/config`
|
## 2. 配置 SSH 私钥与 `~/.ssh/config`
|
||||||
@@ -112,11 +118,38 @@ export PYTHONDONTWRITEBYTECODE=1
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. 配置 `.env`(关键:Binance + 代理)
|
## 5. 配置环境变量(`.env.example` → `.env`)
|
||||||
|
|
||||||
项目通过 `app.py` 启动时 **自动加载项目根目录的 `.env`**。与交易所相关的变量使用 **`BINANCE_`** 前缀(与代码一致)。
|
| 文件 | 是否进 Git | 说明 |
|
||||||
|
|------|------------|------|
|
||||||
|
| **`.env.example`** | ✅ 是 | 变量模板与注释,可随 `git pull` 更新 |
|
||||||
|
| **`.env`** | ❌ 否 | 本机真实配置;`app.py` **只读此文件** |
|
||||||
|
|
||||||
至少确认:
|
### 5.1 首次配置
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/crypto_monitor/crypto_monitor_binance
|
||||||
|
|
||||||
|
cp -n .env.example .env # 已存在 .env 时不覆盖
|
||||||
|
nano .env # 填入 API、登录密码、端口、代理等
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5.2 备份与 `git pull`
|
||||||
|
|
||||||
|
- **`.env` 已被仓库根目录 `.gitignore` 忽略**:`git pull` **不会**覆盖或删除你本地的 `.env`。
|
||||||
|
- 若远端更新了 **`.env.example`**(新增变量名),pull 后请对照模板,**手动把新行补进你的 `.env`**(不会自动合并进 `.env`)。
|
||||||
|
- **建议在每次 `git pull` 或大批量改配置前备份**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp .env .env.backup.$(date +%Y%m%d)
|
||||||
|
# 恢复示例:cp .env.backup.20260516 .env
|
||||||
|
```
|
||||||
|
|
||||||
|
- **换机 / 迁移**:用 `scp` 复制整份 `.env` 到新机器对应目录;或在新机重新 `cp .env.example .env` 后填写。
|
||||||
|
|
||||||
|
### 5.3 必填项检查(Binance + 代理)
|
||||||
|
|
||||||
|
与交易所相关的变量使用 **`BINANCE_`** 前缀(与代码一致)。至少确认:
|
||||||
|
|
||||||
```env
|
```env
|
||||||
APP_HOST=127.0.0.1
|
APP_HOST=127.0.0.1
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# 环境配置模板(可提交 Git)。程序运行时只读取同目录下的 .env。
|
||||||
|
#
|
||||||
|
# 首次部署 / 新机:
|
||||||
|
# cp .env.example .env
|
||||||
|
# nano .env # 填入真实密钥、端口、代理等
|
||||||
|
#
|
||||||
|
# 升级代码(git pull)前建议备份(.env 不在 Git 中,pull 不会覆盖):
|
||||||
|
# cp .env .env.backup.$(date +%Y%m%d)
|
||||||
|
#
|
||||||
|
# 从备份恢复:
|
||||||
|
# cp .env.backup.YYYYMMDD .env
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
APP_ENV=production
|
APP_ENV=production
|
||||||
# 服务监听地址(云服务器通常用 0.0.0.0)
|
# 服务监听地址(云服务器通常用 0.0.0.0)
|
||||||
APP_HOST=0.0.0.0
|
APP_HOST=0.0.0.0
|
||||||
@@ -36,7 +36,10 @@ source .venv/bin/activate # Windows: .venv\Scripts\activate
|
|||||||
pip install flask requests ccxt werkzeug PySocks Pillow
|
pip install flask requests ccxt werkzeug PySocks Pillow
|
||||||
```
|
```
|
||||||
|
|
||||||
## 配置(`.env`)
|
## 配置(`.env.example` → `.env`)
|
||||||
|
|
||||||
|
- **`.env.example`**:模板(可提交 Git);首次:`cp .env.example .env` 后编辑。
|
||||||
|
- **`.env`**:本机真实配置(勿提交);`git pull` 不覆盖;升级前建议备份(见《部署文档》§5.2)。
|
||||||
|
|
||||||
项目启动时加载**仓库根目录**下的 `.env`。常用项:
|
项目启动时加载**仓库根目录**下的 `.env`。常用项:
|
||||||
|
|
||||||
@@ -51,7 +54,7 @@ pip install flask requests ccxt werkzeug PySocks Pillow
|
|||||||
| `WECHAT_WEBHOOK` | 企业微信机器人 |
|
| `WECHAT_WEBHOOK` | 企业微信机器人 |
|
||||||
| `EXCHANGE_DISPLAY_NAME` / `GATE_ACCOUNT_LABEL` | 页面与推送展示的账户文案 |
|
| `EXCHANGE_DISPLAY_NAME` / `GATE_ACCOUNT_LABEL` | 页面与推送展示的账户文案 |
|
||||||
|
|
||||||
其余见 **`.env` 内注释** 或 **`app.py` 顶部默认值**。
|
其余见 **`.env.example` 内注释** 或 **`app.py` 顶部默认值**。
|
||||||
|
|
||||||
## 本地运行
|
## 本地运行
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ module.exports = {
|
|||||||
autorestart: true,
|
autorestart: true,
|
||||||
watch: false,
|
watch: false,
|
||||||
max_memory_restart: "800M",
|
max_memory_restart: "800M",
|
||||||
// app.py 会从项目根目录加载 .env,此处无需重复 env_file
|
// app.py 从项目根目录 .env 加载(由 .env.example 复制而来,勿提交 Git)
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -24,7 +24,9 @@
|
|||||||
|
|
||||||
## 2. 运行前必须配置(`.env`)
|
## 2. 运行前必须配置(`.env`)
|
||||||
|
|
||||||
至少检查以下项(具体键名以你仓库 `.env` 示例为准):
|
首次在本目录执行 **`cp .env.example .env`**,再编辑 `.env`(`.env` 勿提交 Git;`git pull` 不会改你的 `.env`,升级前建议 `cp .env .env.backup.$(date +%Y%m%d)`)。
|
||||||
|
|
||||||
|
至少检查以下项(具体键名以 **`.env.example`** 为准):
|
||||||
|
|
||||||
| 类别 | 说明 |
|
| 类别 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
|
|||||||
@@ -27,12 +27,18 @@
|
|||||||
```bash
|
```bash
|
||||||
mkdir -p /opt/crypto_monitor
|
mkdir -p /opt/crypto_monitor
|
||||||
cd /opt/crypto_monitor
|
cd /opt/crypto_monitor
|
||||||
# git clone ... 或解压同步的包
|
git clone https://git.bz121.com/dekun/crypto_monitor.git
|
||||||
cd crypto_monitor_gate
|
cd crypto_monitor/crypto_monitor_gate
|
||||||
```
|
```
|
||||||
|
|
||||||
下文用 **`/opt/crypto_monitor/crypto_monitor_gate`** 仅为示例,请换成你的实际绝对路径。
|
下文用 **`/opt/crypto_monitor/crypto_monitor_gate`** 仅为示例,请换成你的实际绝对路径。
|
||||||
|
|
||||||
|
拉取代码后,若目录下尚无 `.env`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp -n .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2. 配置 SSH 私钥与 `~/.ssh/config`
|
## 2. 配置 SSH 私钥与 `~/.ssh/config`
|
||||||
@@ -109,11 +115,32 @@ export PYTHONDONTWRITEBYTECODE=1
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. 配置 `.env`(关键:Gate + 代理)
|
## 5. 配置环境变量(`.env.example` → `.env`)
|
||||||
|
|
||||||
项目通过 `app.py` 启动时 **自动加载项目根目录的 `.env`**。与交易所相关的变量必须是 **Gate** 前缀(**不要**再写 OKX 变量,否则代理不会生效、密钥也不会被识别)。
|
| 文件 | 是否进 Git | 说明 |
|
||||||
|
|------|------------|------|
|
||||||
|
| **`.env.example`** | ✅ 是 | 变量模板与注释,可随 `git pull` 更新 |
|
||||||
|
| **`.env`** | ❌ 否 | 本机真实配置;`app.py` **只读此文件** |
|
||||||
|
|
||||||
至少确认:
|
### 5.1 首次配置
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/crypto_monitor/crypto_monitor_gate
|
||||||
|
|
||||||
|
cp -n .env.example .env
|
||||||
|
nano .env
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5.2 备份与 `git pull`
|
||||||
|
|
||||||
|
- **`.env` 不在 Git 中**:`git pull` **不会**覆盖本地 `.env`。
|
||||||
|
- 远端若更新 **`.env.example`**,pull 后请**手动**把新增变量补进你的 `.env`。
|
||||||
|
- **升级前备份**:`cp .env .env.backup.$(date +%Y%m%d)`;恢复:`cp .env.backup.YYYYMMDD .env`。
|
||||||
|
- **换机**:`scp` 复制 `.env`,或新机 `cp .env.example .env` 后重填。
|
||||||
|
|
||||||
|
### 5.3 必填项检查(Gate + 代理)
|
||||||
|
|
||||||
|
与交易所相关的变量必须是 **Gate** 前缀(**不要**再写 OKX 变量,否则代理不会生效、密钥也不会被识别)。至少确认:
|
||||||
|
|
||||||
```env
|
```env
|
||||||
APP_HOST=127.0.0.1
|
APP_HOST=127.0.0.1
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# 环境配置模板(可提交 Git)。程序运行时只读取同目录下的 .env。
|
||||||
|
#
|
||||||
|
# 首次部署 / 新机:
|
||||||
|
# cp .env.example .env
|
||||||
|
# nano .env # 填入真实密钥、端口、代理等
|
||||||
|
#
|
||||||
|
# 升级代码(git pull)前建议备份(.env 不在 Git 中,pull 不会覆盖):
|
||||||
|
# cp .env .env.backup.$(date +%Y%m%d)
|
||||||
|
#
|
||||||
|
# 从备份恢复:
|
||||||
|
# cp .env.backup.YYYYMMDD .env
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
APP_ENV=production
|
APP_ENV=production
|
||||||
# 服务监听地址(云服务器通常用 0.0.0.0)
|
# 服务监听地址(云服务器通常用 0.0.0.0)
|
||||||
APP_HOST=0.0.0.0
|
APP_HOST=0.0.0.0
|
||||||
@@ -119,6 +133,11 @@ AI_MODEL=huihui_ai/deepseek-r1-abliterated:latest
|
|||||||
# 开单风格默认值:trend / swing
|
# 开单风格默认值:trend / swing
|
||||||
# DEFAULT_TRADE_STYLE=trend
|
# DEFAULT_TRADE_STYLE=trend
|
||||||
|
|
||||||
|
# 趋势回调策略(可选,见 趋势回调策略说明.md)
|
||||||
|
# TREND_PULLBACK_DCA_LEGS=5
|
||||||
|
# TREND_PULLBACK_PREVIEW_TTL_SECONDS=120
|
||||||
|
# TREND_PREVIEW_MAX_BALANCE_DRIFT_PCT=5
|
||||||
|
|
||||||
APP_TIMEZONE=Asia/Shanghai
|
APP_TIMEZONE=Asia/Shanghai
|
||||||
AUTO_TRANSFER_BJ_HOUR=8
|
AUTO_TRANSFER_BJ_HOUR=8
|
||||||
# TRADING_DAY_RESET_HOUR 现在表示「北京时间」整点,默认 8 点起算新交易日;开仓整点限制见 TRADING_DAY_RESET_OPEN_GUARD_ENABLED
|
# TRADING_DAY_RESET_HOUR 现在表示「北京时间」整点,默认 8 点起算新交易日;开仓整点限制见 TRADING_DAY_RESET_OPEN_GUARD_ENABLED
|
||||||
@@ -27,7 +27,7 @@ module.exports = {
|
|||||||
autorestart: true,
|
autorestart: true,
|
||||||
watch: false,
|
watch: false,
|
||||||
max_memory_restart: "800M",
|
max_memory_restart: "800M",
|
||||||
// app.py 会从项目根目录加载 .env,此处无需重复 env_file
|
// app.py 从项目根目录 .env 加载(由 .env.example 复制而来,勿提交 Git)
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -27,12 +27,18 @@
|
|||||||
```bash
|
```bash
|
||||||
mkdir -p /opt/crypto_monitor
|
mkdir -p /opt/crypto_monitor
|
||||||
cd /opt/crypto_monitor
|
cd /opt/crypto_monitor
|
||||||
# git clone ... 或解压同步的包
|
git clone https://git.bz121.com/dekun/crypto_monitor.git
|
||||||
cd crypto_monitor_gate_bot
|
cd crypto_monitor/crypto_monitor_gate_bot
|
||||||
```
|
```
|
||||||
|
|
||||||
下文用 **`/opt/crypto_monitor/crypto_monitor_gate_bot`** 仅为示例,请换成你的实际绝对路径。
|
下文用 **`/opt/crypto_monitor/crypto_monitor_gate_bot`** 仅为示例,请换成你的实际绝对路径。
|
||||||
|
|
||||||
|
拉取代码后,若目录下尚无 `.env`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp -n .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2. 配置 SSH 私钥与 `~/.ssh/config`
|
## 2. 配置 SSH 私钥与 `~/.ssh/config`
|
||||||
@@ -109,11 +115,32 @@ export PYTHONDONTWRITEBYTECODE=1
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. 配置 `.env`(关键:Gate + 代理)
|
## 5. 配置环境变量(`.env.example` → `.env`)
|
||||||
|
|
||||||
项目通过 `app.py` 启动时 **自动加载项目根目录的 `.env`**。与交易所相关的变量必须是 **Gate** 前缀(**不要**再写 OKX 变量,否则代理不会生效、密钥也不会被识别)。
|
| 文件 | 是否进 Git | 说明 |
|
||||||
|
|------|------------|------|
|
||||||
|
| **`.env.example`** | ✅ 是 | 变量模板与注释,可随 `git pull` 更新 |
|
||||||
|
| **`.env`** | ❌ 否 | 本机真实配置;`app.py` **只读此文件** |
|
||||||
|
|
||||||
至少确认:
|
### 5.1 首次配置
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/crypto_monitor/crypto_monitor_gate_bot
|
||||||
|
|
||||||
|
cp -n .env.example .env
|
||||||
|
nano .env
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5.2 备份与 `git pull`
|
||||||
|
|
||||||
|
- **`.env` 不在 Git 中**:`git pull` **不会**覆盖本地 `.env`。
|
||||||
|
- 远端若更新 **`.env.example`**,pull 后请**手动**把新增变量补进你的 `.env`。
|
||||||
|
- **升级前备份**:`cp .env .env.backup.$(date +%Y%m%d)`;恢复:`cp .env.backup.YYYYMMDD .env`。
|
||||||
|
- **换机**:`scp` 复制 `.env`,或新机 `cp .env.example .env` 后重填。
|
||||||
|
|
||||||
|
### 5.3 必填项检查(Gate + 代理)
|
||||||
|
|
||||||
|
与交易所相关的变量必须是 **Gate** 前缀(**不要**再写 OKX 变量,否则代理不会生效、密钥也不会被识别)。至少确认:
|
||||||
|
|
||||||
```env
|
```env
|
||||||
APP_HOST=127.0.0.1
|
APP_HOST=127.0.0.1
|
||||||
@@ -134,7 +161,7 @@ GATE_SOCKS_PROXY=socks5h://127.0.0.1:1080
|
|||||||
|
|
||||||
说明:**推荐 `socks5h://`**,由 SOCKS 端解析域名,与 `curl --proxy socks5h://...` 行为一致。
|
说明:**推荐 `socks5h://`**,由 SOCKS 端解析域名,与 `curl --proxy socks5h://...` 行为一致。
|
||||||
|
|
||||||
### 5.1 趋势回调策略(可选)
|
### 5.4 趋势回调策略(可选)
|
||||||
|
|
||||||
若使用「交易执行」页的 **趋势回调** 计划:
|
若使用「交易执行」页的 **趋势回调** 计划:
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# 环境配置模板(可提交 Git)。程序运行时只读取同目录下的 .env。
|
||||||
|
#
|
||||||
|
# 首次部署 / 新机:
|
||||||
|
# cp .env.example .env
|
||||||
|
# nano .env # 填入真实密钥、端口、代理等
|
||||||
|
#
|
||||||
|
# 升级代码(git pull)前建议备份(.env 不在 Git 中,pull 不会覆盖):
|
||||||
|
# cp .env .env.backup.$(date +%Y%m%d)
|
||||||
|
#
|
||||||
|
# 从备份恢复:
|
||||||
|
# cp .env.backup.YYYYMMDD .env
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
APP_ENV=production
|
APP_ENV=production
|
||||||
# 服务监听地址(云服务器通常用 0.0.0.0)
|
# 服务监听地址(云服务器通常用 0.0.0.0)
|
||||||
APP_HOST=0.0.0.0
|
APP_HOST=0.0.0.0
|
||||||
@@ -27,7 +27,7 @@ module.exports = {
|
|||||||
autorestart: true,
|
autorestart: true,
|
||||||
watch: false,
|
watch: false,
|
||||||
max_memory_restart: "800M",
|
max_memory_restart: "800M",
|
||||||
// app.py 会从项目根目录加载 .env,此处无需重复 env_file
|
// app.py 从项目根目录 .env 加载(由 .env.example 复制而来,勿提交 Git)
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ mkdir -p /opt/crypto_monitor/crypto_monitor_okx
|
|||||||
cd /opt/crypto_monitor
|
cd /opt/crypto_monitor
|
||||||
tar -xzf crypto_monitor.tgz -C crypto_monitor_okx
|
tar -xzf crypto_monitor.tgz -C crypto_monitor_okx
|
||||||
cd crypto_monitor_okx
|
cd crypto_monitor_okx
|
||||||
|
cp -n .env.example .env # 若尚无 .env
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -127,14 +128,31 @@ export PYTHONDONTWRITEBYTECODE=1
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. 配置 `.env`(本机)
|
## 5. 配置环境变量(`.env.example` → `.env`)
|
||||||
|
|
||||||
复制示例环境文件(仓库里通常有 `.env`;没有就自己创建):
|
| 文件 | 是否进 Git | 说明 |
|
||||||
|
|------|------------|------|
|
||||||
|
| **`.env.example`** | ✅ 是 | 变量模板与注释,可随 `git pull` 更新 |
|
||||||
|
| **`.env`** | ❌ 否 | 本机真实配置;`app.py` **只读此文件** |
|
||||||
|
|
||||||
|
### 5.1 首次配置
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp .env .env.local # 可选:备份
|
cd /opt/crypto_monitor/crypto_monitor_okx
|
||||||
|
|
||||||
|
cp -n .env.example .env # 已存在 .env 时不覆盖
|
||||||
|
nano .env
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 5.2 备份与 `git pull`
|
||||||
|
|
||||||
|
- **`.env` 不在 Git 中**:`git pull` **不会**覆盖本地 `.env`。
|
||||||
|
- 远端若更新 **`.env.example`**,pull 后请**手动**把新增变量补进你的 `.env`。
|
||||||
|
- **升级前备份**:`cp .env .env.backup.$(date +%Y%m%d)`;恢复:`cp .env.backup.YYYYMMDD .env`。
|
||||||
|
- **换机**:`scp` 复制 `.env`,或新机 `cp .env.example .env` 后重填。
|
||||||
|
|
||||||
|
### 5.3 必填项检查(OKX + 代理)
|
||||||
|
|
||||||
至少确认/填写这些关键项(示例):
|
至少确认/填写这些关键项(示例):
|
||||||
|
|
||||||
```env
|
```env
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
### 与四个 `crypto_monitor_*` 目录的关系(已对照 `app.py`)
|
### 与四个 `crypto_monitor_*` 目录的关系(已对照 `app.py`)
|
||||||
|
|
||||||
各策略项目在**本目录**加载 `.env`(`load_env_file`),并用其中的 **`APP_HOST` / `APP_PORT`** 启动 **Flask 网页**(`app.py` 里 `HOST`、`PORT`)。这是你在浏览器里打开策略/监控后台用的端口,例如你截图里的 `APP_PORT=5001`。
|
各策略项目在**本目录**用 **`.env`**(由 **`cp .env.example .env`** 生成,勿提交 Git;`git pull` 不覆盖)加载配置(`load_env_file`),并用其中的 **`APP_HOST` / `APP_PORT`** 启动 **Flask 网页**(`app.py` 里 `HOST`、`PORT`)。这是你在浏览器里打开策略/监控后台用的端口,例如 `APP_PORT=5001`。
|
||||||
|
|
||||||
子代理 **不用 `APP_PORT`**,而是用环境变量 **`PORT`**(FastAPI/uvicorn 监听)。若子代理与 Flask 抢同一端口,后启动的会起不来,因此中控默认把子代理配在 **`15200`~`15203`**,与常见 `5000` 段 Flask 配置**错开**。
|
子代理 **不用 `APP_PORT`**,而是用环境变量 **`PORT`**(FastAPI/uvicorn 监听)。若子代理与 Flask 抢同一端口,后启动的会起不来,因此中控默认把子代理配在 **`15200`~`15203`**,与常见 `5000` 段 Flask 配置**错开**。
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# 用法:在任意目录执行 bash /path/to/manual_trading_hub/scripts/start_agents_3screen.sh
|
# 用法:在任意目录执行 bash /path/to/manual_trading_hub/scripts/start_agents_3screen.sh
|
||||||
# 若 hub 单独在 /opt/manual_trading_hub,四个策略目录在别的路径,请先:
|
# 若 hub 单独在 /opt/manual_trading_hub,四个策略目录在别的路径,请先:
|
||||||
# export MANUAL_TRADING_REPO_ROOT=/path/to/含_crypto_monitor_*_的目录
|
# export MANUAL_TRADING_REPO_ROOT=/path/to/含_crypto_monitor_*_的目录
|
||||||
# 依赖:各策略目录下存在 .env;manual_trading_hub/.venv 已 pip install -r requirements.txt
|
# 依赖:各策略目录已 cp .env.example .env 并配置;manual_trading_hub/.venv 已 pip install -r requirements.txt
|
||||||
# 日志:manual_trading_hub/logs/<会话名>.log(若 screen 里进程秒退,tail 该文件排查)
|
# 日志:manual_trading_hub/logs/<会话名>.log(若 screen 里进程秒退,tail 该文件排查)
|
||||||
# 查看:screen -ls 接入:screen -r mt-agent-bn 停:./stop_agents_3screen.sh
|
# 查看:screen -ls 接入:screen -r mt-agent-bn 停:./stop_agents_3screen.sh
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# Ubuntu 后台运行(中控 + 子代理)
|
# Ubuntu 后台运行(中控 + 子代理)
|
||||||
|
|
||||||
|
各 `crypto_monitor_*` 策略目录:首次 **`cp .env.example .env`** 并编辑;**`.env` 不进 Git**,`git pull` 不覆盖。升级前建议 `cp .env .env.backup.$(date +%Y%m%d)`。子代理启动前须 **`source` 该目录 `.env`**(见下文)。
|
||||||
|
|
||||||
前台跑 `python agent.py` / `python hub.py` 时,关掉终端进程会结束。要**常驻后台**,可用下面三种之一(推荐 **systemd**)。
|
前台跑 `python agent.py` / `python hub.py` 时,关掉终端进程会结束。要**常驻后台**,可用下面三种之一(推荐 **systemd**)。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
## 二、前置条件
|
## 二、前置条件
|
||||||
|
|
||||||
1. 已安装 **Python 3.10+**,且 `pip` 可用。
|
1. 已安装 **Python 3.10+**,且 `pip` 可用。
|
||||||
2. 各策略目录下已配置好交易所 API(与平时运行 Flask 时相同的 `.env` 或环境变量)。各项目 `app.py` 会读取同目录 `.env` 中的 **`APP_HOST` / `APP_PORT`** 用于 **Flask**;子代理使用环境变量 **`PORT`**,二者不能占用同一端口。
|
2. 各策略目录下已配置好交易所 API:在对应 `crypto_monitor_*` 目录执行过 **`cp .env.example .env`** 并填好密钥(与平时运行 Flask 时同一份 **`.env`**,或等价环境变量)。各项目 `app.py` 会读取同目录 `.env` 中的 **`APP_HOST` / `APP_PORT`** 用于 **Flask**;子代理使用环境变量 **`PORT`**,二者不能占用同一端口。策略目录的 **`.env` 不在 Git 中**,`git pull` 不会覆盖;升级前建议在各策略目录 `cp .env .env.backup.$(date +%Y%m%d)`。
|
||||||
3. 本机端口 **`15200`~`15203`、5100**(及你各策略 `.env` 里的 `APP_PORT`)无冲突;若被占用,须改子代理 `PORT` 并同步修改 `HUB_AGENTS`。
|
3. 本机端口 **`15200`~`15203`、5100**(及你各策略 `.env` 里的 `APP_PORT`)无冲突;若被占用,须改子代理 `PORT` 并同步修改 `HUB_AGENTS`。
|
||||||
4. **Linux 路径约定(可选)**:若部署在 Ubuntu 等环境,建议将整个代码树放在 **`/opt/crypto_monitor/`** 下(与 `scripts/后台运行-Ubuntu.md` 示例一致),例如策略目录为 `/opt/crypto_monitor/crypto_monitor_binance`、中控为 `/opt/crypto_monitor/manual_trading_hub`。
|
4. **Linux 路径约定(可选)**:若部署在 Ubuntu 等环境,建议将整个代码树放在 **`/opt/crypto_monitor/`** 下(与 `scripts/后台运行-Ubuntu.md` 示例一致),例如策略目录为 `/opt/crypto_monitor/crypto_monitor_binance`、中控为 `/opt/crypto_monitor/manual_trading_hub`。
|
||||||
|
|
||||||
@@ -172,8 +172,9 @@ Windows 可将 `hub.py` 与各 `agent.py` 写入「启动」文件夹,或使
|
|||||||
|
|
||||||
## 九、升级与回滚
|
## 九、升级与回滚
|
||||||
|
|
||||||
- **升级**:在 `manual_trading_hub` 下 `git pull`(若使用 Git)后,重新 `pip install -r requirements.txt` 即可。
|
- **升级**:在仓库根目录 `git pull` 后,于 `manual_trading_hub` 重新 `pip install -r requirements.txt`(若依赖有变)。**各策略目录 `.env` 不会被 pull 覆盖**;若 `.env.example` 有新增变量,请对照模板**手动补进**你的 `.env`。
|
||||||
- **回滚**:恢复上一版本代码与依赖;配置仅环境变量与浏览器 localStorage,无数据库。
|
- **升级前备份(推荐)**:在每个用到的 `crypto_monitor_*` 目录执行 `cp .env .env.backup.$(date +%Y%m%d)`。
|
||||||
|
- **回滚**:恢复上一版本代码与依赖;配置在各策略 `.env` 与浏览器 localStorage,无中控数据库。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user