Skip to article frontmatterSkip to article content
SQL 查询指南

SQL 助手

SQLite 数据库查询参考

本页包含一些帮助,如果你想查询你的 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

打开数据库

sqlite3
.open <filepath>

表结构

列出表

.tables

显示表结构

.schema <table_name>

获取表中的所有交易

SELECT * FROM trades;

破坏性查询

写入数据库的查询。 这些查询通常不应该需要,因为 freqtrade 试图自己处理所有数据库操作 - 或通过 API 或 telegram 命令暴露它们。

修复在交易所手动出场后仍然开放的交易

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;

从数据库中删除交易

如果你仍然想直接从数据库中删除交易,你可以使用下面的查询。

DELETE FROM trades WHERE id = <tradeid>;

DELETE FROM trades WHERE id = 31;