首页/新闻资讯/正文详情

Gekko 历史数据导入完整指南:从交易所抓取 K 线数据用于策略回测

发布时间:2026/9/24 17:05:32 来源:云帆数科 栏目:资讯中心
Gekko 历史数据导入完整指南:从交易所抓取 K 线数据用于策略回测
金融科技后端【免费下载链接】gekkoA bitcoin trading bot written in node - https://gekko.wizb.it/项目地址https://gitcode.com/gh_mirrors/ge/gekko点击查看免费下载导读本文围绕 Gekko一个基于 Node.js 的比特币/加密货币交易机器人仓库位于当前项目根目录的**历史数据导入Importing**功能展开。回测backtesting必须依赖历史行情数据而 Gekko 提供了一条从交易所直接拉取历史成交trades并加工成蜡烛图candles落库的自动化链路。读完本文你将掌握两种导入方式——通过 Gekko UI 的图形化导入向导以及通过命令行的--import模式并能理解底层importer模式从拉取成交到批量写入数据库的完整工作流程以及哪些交易所支持该功能。为什么需要导入历史数据在 docs/features/backtesting.md 中已经说明要对策略进行回测必须有可用的历史市场数据。获取这类数据最便捷的方式就是让 Gekko 直接从交易所的历史成交数据接口中导入。需要特别注意的是并非所有交易所都支持导入具体支持范围请参见 docs/introduction/supported_exchanges.md 中的支持列表。Gekko 对交易所的能力做了三种区分Monitoring监控从交易所获取实时市场数据用于存储和运行交易模拟Live Trading实盘交易基于策略信号自动下单将 Gekko 变成真正的交易机器人Importing导入从交易所获取历史市场数据方便你一次性拉取一个月甚至更长时间的数据用于回测。支持导入Importing 列为 ✓的交易所包括 Binance、Poloniex、GDAX、Kraken、Bitfinex、coinfalcon、The Rock Trading、Luno以及标有*自 0.6 起暂时停用的 BTCC 等而 Bitstamp、Bittrex、EXMO、Gemini、Okcoin.cn、Cex.io、BTC Markets、zaif、bx.in.th、bitcoin.co.id 等交易所则不支持导入✕。Bittrex 不支持导入的原因在仓库中被标注为 API 问题。以上支持情况以仓库文档为准导入功能对交易所的可用性取决于对方是否开放可用的历史成交数据接口。方式一通过 Gekko UI 导入如果你使用 Gekko 的 Web UI导入操作非常简单不需要接触配置文件在导航栏进入Local tab本地数据标签页滚动到页面底部点击Go to the importer进入导入器在导入页面底部选择市场market和日期范围daterange点击import按钮Gekko 便会自动从交易所下载历史市场数据。导入期间UI 会展示实时的导入进度当前处理到的市场时间戳等。这一交互流程背后的实现位于 web/routes/import.js前端提交一个包含config对象的 POST 请求后后端以mode importer启动流水线pipeline并把本次导入登记到importManager缓存中流水线运行过程中通过 WebSocket 广播import_update事件携带latest与done字段来驱动界面上的进度条出错时则广播import_error。也就是说UI 导入本质上是对命令行导入模式的封装二者共享同一套核心实现。方式二通过命令行导入如果你在命令行环境运行 Gekko可以参考 docs/commandline/Importing.md 中的说明步骤如下。步骤 1启用并配置 candleWriter 插件导入的目的是把数据存进数据库因此必须启用candleWriter插件关于插件启用方法见 docs/commandline/plugins.md。该插件负责把导入得到的蜡烛图写入数据库。在插件清单 plugins.js 中candleWriter被声明为支持importer模式的插件。candleWriter 本身依赖一个数据库适配器adapter默认配置位于 config/plugins/candleWriter.tomlenabled true adapter sqlite即默认使用 SQLite 存储你也可以在 config/adapters 下切换为mongodb.toml或postgresql.toml。以 MongoDB 为例其适配器配置如下connectionString mongodb://mongodb/gekko path plugins/mongodb version 0.1 [[dependencies]] module mongojs version 2.4.0步骤 2正确配置 config.watch确保配置文件中的config.watch设置正确它决定了从哪个交易所、哪个市场对交易对导入数据。步骤 3配置 importer.daterange在配置文件中设置importer.daterange的from与to属性指定要导入的时间范围例如[importer] [importer.daterange] from 2015-09-01 to 2015-10-01从 core/markets/importer.js 的源码可以看到日期范围的解析逻辑from与to会通过moment.utc()解析为 UTC 时间如果省略to代码会默认将其设置为moment().utc()即当前时刻并在日志中提示No end date specified for importing, setting to ...如果from或to非法!from.isValid()/!to.isValid()进程会直接以错误退出util.die(invalid from)如果to from同样会报错This daterange does not make sense.。步骤 4运行导入命令node gekko --config config.js --import启动后控制台会输出类似如下的日志2016-06-26 09:12:16 (INFO): Gekko v0.2.2 started 2016-06-26 09:12:16 (INFO): Im gonna make you rich, Bud Fox. 2016-06-26 09:12:17 (INFO): Setting up Gekko in importer mode 2016-06-26 09:12:17 (INFO): 2016-06-26 09:12:17 (INFO): Setting up: 2016-06-26 09:12:17 (INFO): Candle writer 2016-06-26 09:12:17 (INFO): Store candles in a database 2016-06-26 09:12:17 (INFO): 2016-06-26 09:12:17 (WARN): The plugin Trading Advisor does not support the mode importer. It has been disabled. 2016-06-26 09:12:17 (WARN): The plugin Advice logger does not support the mode importer. It has been disabled. 2016-06-26 09:12:17 (WARN): The plugin Profit Simulator does not support the mode importer. It has been disabled. 2016-06-26 09:12:18 (DEBUG): Processing 798 new trades. 2016-06-26 09:12:18 (DEBUG): From 2015-09-09 12:00:04 UTC to 2015-09-09 13:58:55 UTC. (2 hours) 2016-06-26 09:12:20 (DEBUG): Processing 211 new trades. (...)日志中那些WARN很值得注意Trading Advisor、Advice logger、Profit Simulator 等插件不支持importer模式因此被自动禁用。这一行为来自 core/pluginUtil.js 的load函数——插件清单中每个插件都声明了自己支持的modes数组若当前 Gekko 模式此处为importer不在其中插件会被跳过并打印上述警告。这就是为什么导入模式下只有 candleWriter及数据库写入参与工作而策略、交易建议相关插件不会运行。底层原理importer 模式的数据流导入过程远比下载数据四个字复杂。从源码可以还原出完整的数据流水线入口在 core/markets/importer.js检查交易所能力通过exchangeChecker.cantFetchFullHistory(config.watch)校验所选交易所是否支持拉取完整历史成交不支持则直接终止util.die(error, true)。对应实现位于 exchange/exchangeChecker.js。选择抓取器fetcher按config.watch.exchange从importers/exchanges目录加载对应交易所的抓取实现如 importers/exchanges/binance.js、poloniex.js、kraken.js等并传入from/to日期范围。逐批拉取成交fetcher 通过事件总线bus发出trades事件将一段时间的成交数据交给Market.processTrades。成交 → 蜡烛图processTrades把成交写入TradeBatchercore/budfox/tradeBatcher.js后者按时间窗口聚合成批次后触发new batch事件交由CandleManagercore/budfox/candleManager.js加工成 OHLCV 蜡烛并发出candles事件。推送蜡烛pushCandles把蜡烛逐根 push 进一个Readable流objectMode: true由流水线下游的 candleWriter 消费。收尾fetcher 发出done事件后Market在processTrades中检测到this.done为真打印Done importing!并发出end事件结束导入。抓取器的分块策略以 Binance 为例importers/exchanges/binance.js 展示了抓取器如何处理大时间范围它采用**按小时分块1h step**的推进方式——每次getTrades(from, handleFetch)只拉取从当前from起的一小段成交拉完后将from前进 1 小时并补偿可能的闰秒from.clone().add(1, h).subtract(1, s)再继续下一段当from越过终点end时发出done事件并过滤掉超出end的成交。这样既避免了一次性请求过大数据量也便于断点式推进。日志中 Processing 798 new trades 与 From ... to ... (2 hours) 正是这种分批处理过程的体现。导入进度如何上报在Market.processTrades中如果 Gekko 以子进程模式运行gekkoEnv child-process每处理一批成交都会通过process.send({event: marketUpdate, payload: lastAt})把最新成交时间戳上报给父进程父进程侧由 core/workers/pipeline/messageHandlers/importerHandler.js 接收并回调UI 正是借此持续刷新已导入到哪个时间点的进度信息。整个 pipeline 的调度在 core/workers/pipeline/parent.js 中完成。蜡烛如何落库candleWriter 的写入端由所选数据库适配器提供。以 MongoDB 为例plugins/mongodb/writer.js 中的processCandle会把蜡烛先缓存在candleCache数组中攒满 100 根或进入finalize时一次性批量写入historyCollection集合名来自 plugins/mongodb/util.js 的settings.historyCollection。批量插入使用{ ordered: false }这样即使个别蜡烛因重复键等原因失败也不会拖垮整批写入失败详情仅记入 debug 日志。写入的每条蜡烛记录包含start开盘时间戳、open/high/low/close、vwp成交量加权价格、volume、trades成交笔数以及pair交易对等字段。此外若同时启用了adviceWriter该 Store 还会负责把策略建议写入adviceCollection。导入完成后数据一旦导入成功就被持久化在所选适配器的数据库中。之后你可以在 docs/commandline/backtesting.md 与 docs/features/backtesting.md 中了解如何利用这些数据运行回测通过backtest.tomlconfig/backtest.toml中的daterange scan让 Gekko 扫描数据库中已有的日期范围或显式指定[daterange] from / to来精确限定回测区间。值得一提的是回测时 Gekko 的 candleLoadercore/tools/candleLoader.js会按需从数据库读取蜡烛因此导入的日期范围越完整回测的灵活性就越高——这就是先导入、再回测这一标准工作流的意义所在。小结Gekko 的历史数据导入功能同时提供了 UI 向导与命令行两种入口核心链路由importer模式下的 Market 流、各交易所 fetcher、TradeBatcher/CandleManager 聚合器与数据库 writer 协作完成。使用时要记住三个要点只支持列表中的交易所、必须启用 candleWriter 及对应数据库适配器、正确配置config.watch与importer.daterangeto可省略缺省为当前时间。理解这条链路后无论手动导入还是通过 UI 发起导入你都能准确预判数据会以何种格式、何种粒度写入哪个数据库集合为后续回测打下可靠的数据基础。赞分享金融科技后端【免费下载链接】gekkoA bitcoin trading bot written in node - https://gekko.wizb.it/项目地址https://gitcode.com/gh_mirrors/ge/gekko点击查看免费下载相关推荐Gekko 历史数据导入Importer完整指南从交易所拉取行情数据用于回测Gekko 历史数据导入Importer完整指南从交易所拉取行情数据用于回测 本文基于 Gekko 官方命令行文档整理并深入仓库源码验证讲解如何通过命令金融科技后端Cherry Studio 架构评审指南用引擎/声明配对识别实体泄漏按缺陷高度给出最小合规修复Cherry Studio 架构评审指南用引擎/声明配对识别实体泄漏按缺陷高度给出最小合规修复 本文是 Cherry Studio 仓库内 gh pr re金融科技后端Gekko 回测实战指南用历史数据验证你的比特币交易策略Gekko 回测实战指南用历史数据验证你的比特币交易策略 Gekko 是一个基于 Node.js 的开源比特币交易机器人回测Backtesting是它最金融科技后端上一篇如何通过 BRAT 安装 SurfSense Obsidian 插件并同步笔记库下一篇30 分钟跑通 ChanlunX通达信缠论自动画线插件完整安装与验证指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

【Dify】火车票发票自动识别与智能比对应用
【Dify】火车票发票自动识别与智能比对应用

自动化发票识别与核查已成为数字化财务管理的关键一环,特别是在海量火车票数据处理中,传统手工方式难以兼顾效率与准确性。 本文介绍基于深度学习模型与智能节点协作的火车票发票比对工作流,涵盖从图片导入、图像优化到信息提取和比对输出的全流程,适合实际企业和个人票据… · 2026/9/24 17:05:08

【Dify】智能体驱动的高效智能客服应用
【Dify】智能体驱动的高效智能客服应用

智能客服在互联网服务与健康管理领域快速普及,自动化、个性化的用户响应成为应用升级的核心需求。依托多智能体协作和大模型赋能,智能客服已具备文本、图片等多模态信息处理能力,并支持细致化问题分类与定制化回复。 本文聚焦于一套以Dify为核心的智能客服工作流,展示其节… · 2026/9/24 17:05:08

WeChatMsg:免费开源,五分钟把微信聊天记录导出成文档,顺带生成年度报告
WeChatMsg:免费开源,五分钟把微信聊天记录导出成文档,顺带生成年度报告

WeChatMsg:免费开源,五分钟把微信聊天记录导出成文档,顺带生成年度报告 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https:… · 2026/9/24 17:04:55

实拍交通标志数据集550张:txt/xml双格式,跑通yolov8训练
实拍交通标志数据集550张:txt/xml双格式,跑通yolov8训练

简介:这是一份面向深度学习目标检测方向的实拍交通标志数据集,适合正在做交通标志识别项目、准备YOLO系列算法训练或课程设计的学生与算法工程师使用。数据集共包含550张实拍图像,覆盖停止、提示、等待三类标志,并已同步提供txt与… · 2026/9/24 18:14:30

YOLOv5+RealSense D455单目测距实战:从检测框到毫米级深度值的精准映射
YOLOv5+RealSense D455单目测距实战:从检测框到毫米级深度值的精准映射

简介:本资源是一套基于YOLOv5-3.1与Intel RealSense D455深度相机实现的单目测距系统完整源码,面向计算机视觉初学者、嵌入式AI开发者及智能感知项目实践者,解决目标检测与距离估算融合落地的关键问题,适用于机器人避障、工业定位… · 2026/9/24 18:14:18

无人机目标检测数据集与YOLO训练教程:5000张标注图片+划分脚本实战
无人机目标检测数据集与YOLO训练教程:5000张标注图片+划分脚本实战

简介:一套面向无人机视觉应用的目标检测数据集,包含5000张真实场景高清图像,覆盖多种飞行环境与目标形态。数据使用LabelImg标注,标签质量较高,并同时提供VOC(xml)、COCO(json&#… · 2026/9/24 18:14:18

YOLOv8+DeepSORT施工安全检测跟踪实战:从数据集训练到部署避坑指南
YOLOv8+DeepSORT施工安全检测跟踪实战:从数据集训练到部署避坑指南

简介:一套面向施工场景的安全隐患检测与跟踪解决方案,基于YOLOv8与DeepSORT算法,帮助工程管理人员自动识别工人是否佩戴安全帽、穿着反光背心等,并实现持续跟踪预警。资源核心包含1206张已标注图像的目标检测数据集,同… · 2026/9/24 18:14:18

小米8青春版刷安卓11:zip包拆包、备份与刷机全流程解析
小米8青春版刷安卓11:zip包拆包、备份与刷机全流程解析

简介:针对小米8青春版适配Android 11(LineageOS 18.1)的第三方固件包,面向想升级系统、体验新特性的刷机爱好者。压缩包共13个文件,体积798.3MB,包含系统与vendor分区镜像、增量补丁、分区列表、boot引导镜… · 2026/9/24 18:14:18

你的论文“AI味”为什么洗不掉?不是词换得不够多,是节奏被摸透了
你的论文“AI味”为什么洗不掉?不是词换得不够多,是节奏被摸透了

aigcbiye官网 微信公众号搜一搜 aigcbiye 你有没有遇到过这种事:明明自己逐句写的段落,提交检测之后却被标了一堆红。你怀疑检测系统疯了,但系统没疯。它不是在找你抄了谁,也不是在判断“这到底是不是AI写的”——它在干一件更隐… · 2026/9/24 18:14:18

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码