链接:NOFX - AI Auto Trading Dashboard

在这里插入图片描述
在这里插入图片描述

docs:nofx项目

nofx项目是一个AI驱动的加密货币交易系统,设计用于在多个交易所上自主运行。

  • 其核心是AI自动交易器,作为每个交易机器人的"大脑",通过先进的AI决策引擎基于实时市场数据生成交易策略

用户可以通过交互式网页仪表盘管理交易机器人、配置参数并监控交易表现,系统通过认证与用户管理保障安全,并通过数据库与配置系统实现数据持久化存储

平台通过多交易所交易接口实现与各类加密货币交易所的灵活交互。

可视化

在这里插入图片描述

章节目录

  1. 数据库与配置系统
  2. 市场数据系统
  3. 多交易所交易接口
  4. AI决策引擎
  5. 认证与用户管理
  6. AI自动交易器
  7. 交易管理器
  8. 前端API客户端

第1章:数据库与配置系统

欢迎来到nofx

本章将介绍我们AI交易系统的"大脑"与"记忆中枢"——数据库与配置系统

什么是nofx的"大脑"和"记忆"?

想象在设置一个机器人厨师。告诉它:"用这本食谱书,这个品牌的食材,用中火烹饪。"然后晚上你关闭了它。第二天重启时,你肯定不想重新交代所有事项对吧?你会期望它能记住你的指令和偏好。

nofx中,我们的"机器人厨师"就是AI自动交易器。它需要记住大量信息:

  • 使用哪个AI模型(如同你的食谱书)
  • 交易所API密钥(如同知道去哪采购食材)
  • 初始资金额度(如1000 USDT)
  • 特殊规则设置(如杠杆倍数)
  • 用户账户及其个性化配置

这正是数据库与配置系统的职责所在。它作为核心存储库,安全持久地保存所有关键信息。"持久化"意味着即使重启电脑或关闭nofx,这些信息也不会丢失。

典型应用场景:保存AI交易器配置

假设你要设置一个AI交易器,希望它:

  1. 使用"DeepSeek"AI模型
  2. 连接你的"币安"交易所账户
  3. 初始资金1000 USDT
  4. 每3分钟扫描市场

你希望这些设置能被保存,以便重启nofx时交易器能立即按预设运行,无需重复输入。数据库与配置系统使之成为可能。

核心概念

1. 数据库:智能文件柜

数据库如同高度组织的数字文件柜。不同于纸质文件,它存储文本、数字、日期等信息。每个抽屉(称为"表")存放特定类型数据,每份文件(称为"行")记录单个项目的详情。

nofx使用名为config.db的SQLite数据库文件。SQLite是轻量高效的嵌入式数据库,所有数据存储在单文件中,无需单独数据库服务器。

我们的数据库包含以下主要"抽屉"(表):

表名 存储内容(示例)
ai_models AI模型API密钥(DeepSeek、Qwen)
exchanges 交易所凭证(币安、Hyperliquid)
traders 各AI交易器的配置参数
users 用户账户详情
system_config 系统运行规则(如API端口号)
beta_codes 早期测试用户专属访问码

2. 配置系统:规则手册

配置系统是决定系统行为的规则、参数和设置的集合。在nofx中包括:

  • 全局规则:如网页接口端口号(api_server_port)、全局杠杆设置
  • 交易器专属规则:如某AI交易器的initial_balancescan_interval_minutes

初始化时,nofx会从config.json文本文件读取系统级配置。启动后所有配置将存入config.db数据库,便于通过网页界面灵活更新,无需直接修改文件。

系统运行机制

nofx启动时按以下流程加载"记忆"和"规则":

  1. 创建/打开数据库:确保config.db就绪,不存在则新建并初始化表结构
  2. 读取config.json:获取初始系统参数
  3. 同步至数据库:将config.json配置更新到数据库
  4. 加载测试码:从beta_codes.txt加载早期测试权限码(如存在)
  5. 加载AI交易器:从数据库读取所有交易器配置到内存

此后所有操作都基于config.db数据库,包括获取AI模型密钥、交易所凭证或交易器设置。

以下是config.json.example的简化示例:

{
  "admin_mode": true,
  "beta_mode": false,
  "leverage": {
    "btc_eth_leverage": 5,
    "altcoin_leverage": 5
  },
  "api_server_port": 8080,
  "jwt_secret": "your-jwt-secret-key..."
}

该文件仅在启动时读取,用于设置数据库中的初始系统参数。例如api_server_port指定网页接口端口,btc_eth_leverage设置比特币/以太坊交易的默认杠杆。

启动流程示意图

在这里插入图片描述

代码实现探秘

main.go中的数据库初始化:

func main() {
    dbPath := "config.db"
    database, err := config.NewDatabase(dbPath) // 创建/打开数据库
    if err != nil {
        log.Fatalf("❌ 数据库初始化失败: %v", err)
    }
    defer database.Close() // 确保程序退出时关闭连接
}

config/database.go中的核心逻辑:

func NewDatabase(dbPath string) (*Database, error) {
    db, err := sql.Open("sqlite3", dbPath) // 打开SQLite文件
    database := &Database{db: db}
    database.createTables()  // 初始化表结构
    database.initDefaultData() // 写入默认模型和交易所
    return database, nil
}

配置同步流程:

// 将config.json设置同步到数据库
if err := syncConfigToDatabase(database); err != nil {
    log.Printf("⚠️ 配置同步失败: %v", err)
}
// 从数据库读取配置项
apiPortStr, _ := database.GetSystemConfig("api_server_port") 

小结

数据库与配置系统作为nofx的中枢神经,持久化存储着从AI模型密钥、交易所凭证到交易器参数的所有关键数据。

这种设计确保配置变更通过网页界面即可生效,且系统重启后所有设置保持可用。

现在我们已经了解系统如何"记忆"信息,下一章将探索市场数据系统——这是nofx洞察金融市场的"耳目"。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐