SQL助手¶
本页包含一些帮助,如果您想编辑您的SQLite数据库。
安装sqlite3¶
SQLite3是一个基于终端的SQLite应用程序。 如果您对此不太熟悉,可以随意使用SQLiteBrowser等可视化数据库编辑器。
Ubuntu/Debian安装方法¶
sudo apt-get install sqlite3
使用docker通过sqlite3¶
freqtrade的docker镜像包含了sqlite3,所以您可以在不在主机系统上安装任何东西的情况下编辑数据库。
docker compose exec freqtrade /bin/bash
sqlite3 <database-file>.sqlite
打开数据库```bash¶
sqlite3 .open <文件路径>
## 表结构
### 列出表格
```bash
.tables
显示表格结构¶
.schema <表名>
获取表中的所有交易记录¶
SELECT * FROM trades;
修复在交易所手动退出后仍然保持开放状态的交易¶
警告
在交易所上手动卖出一对货币不会被机器人检测到,它仍然会尝试进行卖出操作。尽可能使用 /forceexit <交易编号> 来执行同样的操作。
强烈建议在进行任何手动更改之前备份数据库文件。!!! 注意
在 /forceexit 之后,这是不必要的,因为 force_exit 命令会在下一次迭代时自动关闭订单。
UPDATE trades
SET is_open=0,
close_date=<close_date>,
close_rate=<close_rate>,
close_profit = close_rate / open_rate - 1,
close_profit_abs = (amount * <close_rate> * (1 - fee_close) - (amount * (open_rate * (1 - fee_open)))),
exit_reason=<exit_reason>
WHERE id=<trade_ID_to_update>;
示例¶
UPDATE trades
SET is_open=0,
close_date='2020-06-20 03:08:45.103418',
close_rate=0.19638016,
close_profit=0.0496,
close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * (open_rate * (1 - fee_open)))),
exit_reason='force_exit'
WHERE id=31;
从数据库中移除交易¶
使用 RPC 方法删除交易
考虑通过 Telegram 或 REST API 使用 /delete <tradeid>
命令来删除交易。这是推荐的删除方式。
如果您仍然想直接从数据库中移除交易,您可以使用下面的查询。
危险
一些系统(如 Ubuntu)在其 sqlite3 包装中禁用了外键。使用 sqlite 时,请确保在上述查询之前运行 PRAGMA foreign_keys = ON
以开启外键功能。
```sql
DELETE FROM trades WHERE id =
DELETE FROM trades WHERE id = 31;
``!!! 警告
这将从数据库中删除此交易。请确保您拥有正确的 ID,并且**绝对不要**在没有
where`子句的情况下运行此查询。
使用其他数据库系统¶
Freqtrade 使用 SQLAlchemy,支持多种不同的数据库系统。因此,应该支持多个数据库系统。 Freqtrade 不依赖于或安装任何额外的数据库驱动程序。有关各个数据库系统的安装说明,请参阅SQLAlchemy 文档。
已经测试并已知可与 freqtrade 配合使用的系统有:
- sqlite(默认)
- PostgreSQL
- MariaDB
警告
使用下面的任一数据库系统,表示您已了解如何管理此类系统。Freqtrade 团队将不会提供任何有关下面数据库系统的设置、维护(或备份)的支持。
PostgreSQL¶
安装:
pip install psycopg2-binary
使用方式:
... --db-url postgresql+psycopg2://<用户名>:<密码>@localhost:5432/<数据库>
Freqtrade 将在启动时自动创建所需的表。如果您在运行不同的 Freqtrade 实例,则必须为每个实例设置一个数据库或者使用不同的用户/模式来进行连接。
MariaDB / MySQL¶
Freqtrade 使用 SQLAlchemy 支持 MariaDB,该库支持多种不同的数据库系统。
安装:
pip install pymysql
用法:
... --db-url mysql+pymysql://<username>:<password>@localhost:3306/<database>