CTOS
Crypto Trading Operating System) with a clean, Linux‑inspired layout that treats each exchange (OKX / Backpack / Binance) as its own “arch”
Install / Use
/learn @CryptoFxxker/CTOSREADME
🌐 Languages: English | 中文 | 日本語 | 한국어

CTOS:加密交易操作系统(借鉴 Linux 设计理念)
范围: 面向中心化交易所(CEX)的量化交易(初期支持 OKX、Backpack、Binance)。 设计说明: CTOS 借鉴了 Linux 的理念(架构 arch、驱动 driver、系统调用 syscall、调度器 scheduler、进程 processes),但并非完全复制,而是有选择地吸收适合于构建健壮、可组合、可移植的交易系统的思想。
为什么是 CTOS?
- 可移植性: 通过 统一的交易系统调用(syscall) 屏蔽不同交易所的差异。
- 可组合性: 策略 = “进程”;交易所适配器 = “驱动”;每个交易所 = “架构”。
- 可靠性: 内核 / 运行时 / 驱动 的分层设计提高了可测试性与安全性。
- 可观测性: 结构化日志、指标和可复现的回测能力。
- 高鲁棒性 对齐了所有交易所的下单价格与数量精度,指定金额下单,自动转化,全程无忧。
📚 目录
可点击上方目录快速跳转到对应章节。
概念映射(Linux → CTOS)
| Linux 概念 | CTOS 对应 | 说明 |
| -------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| arch/ | 交易所架构 (drivers/okx, drivers/binance, drivers/backpack) | 每个交易所一个文件夹,隔离 REST / WS / 签名 / 规格实现。 |
| 设备驱动 | 交易所驱动 | REST/WS 客户端、签名器、符号映射、功能开关。 |
| 系统调用 | 交易系统调用 | place_order、cancel_order、amend_order、balances、positions、subscribe_ticks 等。 |
| 调度器 | 策略调度器 | 协调策略“进程”,处理限速、重试、执行顺序。 |
| 进程 | 策略 | 无状态/有状态的策略,调用 syscall,由运行时监督管理。 |
| 文件系统 | 存储层 | Parquet/SQLite 保存市场数据、成交、标记价格、快照、配置等。 |
| /proc | 指标与运行态信息 | 健康状态、PnL、风险、延迟、交易所限额、已打开的 websocket。 |
| init/systemd | 监督进程 | 启动模块、重启、隔离崩溃、滚动更新。 |
项目目录结构
ctos/
├─ README.md # 项目说明文档
├─ pyproject.toml # Python项目配置
├─ requirements.txt # Python依赖包
├─ environment.yml # Conda环境配置
├─ configs/ # 配置管理目录
│ ├─ account.yaml # 账户配置文件(API密钥)
│ ├─ account_reader.py # 账户配置读取器
│ ├─ config_reader.py # 通用配置读取器
│ └─ example_usage.py # 配置使用示例
├─ ctos/ # 核心代码目录
│ ├─ core/ # 核心系统模块
│ │ ├─ kernel/ # 系统内核
│ │ │ ├─ syscalls.py # 统一交易系统调用接口
│ │ │ ├─ scheduler.py # 策略调度器
│ │ │ └─ event_bus.py # 事件总线
│ │ ├─ runtime/ # 运行时系统
│ │ │ ├─ ExecutionEngine.py # 执行引擎(核心)
│ │ │ ├─ SystemMonitor.py # 系统监控器
│ │ │ ├─ AccountManager.py # 账户管理器
│ │ │ ├─ RiskWatcher.py # 风险监控器
│ │ │ ├─ SignalGenerator.py # 信号生成器
│ │ │ ├─ DataHandler.py # 数据处理器
│ │ │ └─ IndicatorCalculator.py # 指标计算器
│ │ └─ io/ # 输入输出模块
│ │ ├─ logging/ # 日志系统
│ │ ├─ datafeed/ # 数据源接入
│ │ └─ storage/ # 数据存储
│ └─ drivers/ # 交易所驱动
│ ├─ okx/ # OKX交易所驱动
│ │ ├─ driver.py # OKX主驱动
│ │ └─ util.py # OKX工具函数
│ ├─ backpack/ # Backpack交易所驱动
│ │ ├─ driver.py # Backpack主驱动
│ │ └─ util.py # Backpack工具函数
│ └─ binance/ # Binance交易所驱动
├─ apps/ # 应用层
│ ├─ strategies/ # 交易策略
│ │ ├─ grid/ # 网格策略
│ │ │ └─ Grid-All-Coin.py # 全币种网格策略
│ │ ├─ hedge/ # 对冲策略
│ │ ├─ rank/ # 排名策略
│ │ └─ examples/ # 示例策略
│ ├─ indicatorVisualization/ # 指标可视化
│ └─ website/ # Web界面
├─ tools/ # 工具集
├─ scripts/ # 脚本文件
└─ tests/ # 测试文件
🔥 核心文件说明
系统核心
ctos/core/runtime/ExecutionEngine.py- 执行引擎,系统核心,负责策略执行和系统调用ctos/core/runtime/SystemMonitor.py- 系统监控器,负责仓位监控、异常检测和自动纠正ctos/core/kernel/syscalls.py- 统一交易系统调用接口,屏蔽交易所差异
交易所驱动
ctos/drivers/okx/driver.py- OKX交易所驱动,支持动态账户映射ctos/drivers/backpack/driver.py- Backpack交易所驱动,支持动态账户映射ctos/drivers/binance/driver.py- Binance交易所驱动
配置管理
configs/account.yaml- 账户配置文件,存储各交易所API密钥configs/account_reader.py- 账户配置读取器,支持动态账户管理
交易策略
apps/strategies/grid/Grid-All-Coin.py- 全币种网格策略,集成ExecutionEngineapps/strategies/examples/- 示例策略集合
监控与日志
ctos/core/io/logging/- 日志目录,包含:{exchange}_Account{id}_{strategy}_system_monitor.log- 系统监控日志{exchange}_Account{id}_{strategy}_operation_log.log- 操作日志{exchange}_account{id}_position_backup.json- 仓位备份{exchange}_account{id}_anomaly_report.json- 异常报告
交易系统调用(统一接口)
每个交易所的 driver 必须实现这些接口;策略通过 ExecutionEngine 调用 syscall。
🚀 核心功能概览
行情相关
get_price_now(symbol)- 获取最新成交价get_orderbook(symbol, level)- 获取订单簿(bids/asks)get_klines(symbol, timeframe, limit, start_time, end_time)- 获取K线数据fees(symbol, limit, offset)- 获取资金费率
交易相关
place_order(symbol, side, order_type, size, price=None, **kwargs)- 下单revoke_order(order_id, symbol)- 撤单amend_order(order_id, symbol, ...)- 改单(查单→撤单→下单)get_open_orders(symbol=None, instType='SWAP')- 获取未完成订单get_order_status(order_id, keep_origin=False)- 查询订单状态cancel_all(symbol)- 撤销指定交易对全部订单
账户/仓位
fetch_balance(currency)- 获取余额(支持多币种)get_position(symbol=None, keep_origin=False)- 获取仓位信息close_all_positions(symbol=None)- 平仓所有仓位
🔧 执行引擎功能
ExecutionEngine 核心方法
place_incremental_orders(amount, coin, side, soft=True)- 增量下单set_coin_position(coin, usdt_amount, soft=True)- 设置币种仓位_order_tracking_logic(coins, soft_orders_to_focus)- 订单追踪逻辑
系统监控功能
monitor_positions()- 仓位监控(支持自动纠正)get_position_summary()- 获取仓位汇总get_anomaly_summary()- 获取异常汇总start_position_monitoring()- 启动连续监控
📊 支持的交易所
| 交易所 | 驱动文件 | 账户支持 | 特殊功能 |
|--------|----------|----------|----------|
| OKX | drivers/okx/driver.py | 动态账户映射 | 完整的期货交易支持 |
| Backpack | drivers/backpack/driver.py | 动态账户映射 | 原生永续合约支持 |
| Binance | drivers/binance/driver.py | 基础支持 | 全球最大交易所 |
🎯 动态账户管理
所有交易所驱动都支持通过 account_id 参数动态选择账户:
# 使用主账户 (account_id=0)
engine = ExecutionEngine(account=0, exchange_type='okx')
# 使用子账户 (account_id=1)
engine = ExecutionEngine(account=1, exchange_type='backpack')
# 使用第三个账户 (account_id=2)
engine = ExecutionEngine(account=2, exchange_type='okx')
账户映射基于 configs/account.yaml 配置文件:
account_id=0→ 第一个账户(通常是main)account_id=1→ 第二个账户(通常是sub1)account_id=2→ 第三个账户(通常是sub2)
🏗️ 系统架构
┌─────────────────────────────────────────────────────────────┐
│ CTOS 系统架构 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 应用层 (Apps) │ │ 配置层 (Config) │ │ 工具层 (Tools) │ │
│ │ │ │ │ │ │ │
│ │ • 网格策略 │ │ • 账户配置 │ │ • 回测工具 │ │
│ │ • 对冲策略 │ │ • 系统配置 │ │ • 模拟器 │ │
│ │ • 排名策略 │ │ • 密钥管理 │ │ • 可视化 │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 核心运行时 (Core Runtime) │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ 执行引擎 │ │ 系统监控 │ │ 账户管理 │ │ │
│ │ │ExecutionEngine│ │SystemMonitor│ │AccountManager│ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ 风险监控 │ │ 信号生成 │ │ 数据处理 │ │ │
│ │ │RiskWatcher │ │SignalGenerator│ │DataHandler │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 系统内核 (Kernel) │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ 系统调用 │ │ 策略调度 │ │ 事件总线 │ │ │
│ │ │ syscalls │ │ scheduler │ │ event_bus │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 交易所驱动 (Drivers) │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ OKX │ │ Backpack │ │ Binance │ │ │
│ │ │ Driver │ │ Driver │ │ Driver │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
Related Skills
node-connect
352.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
