金融科技后端【免费下载链接】gekkoA bitcoin trading bot written in node - https://gekko.wizb.it/项目地址https://gitcode.com/gh_mirrors/ge/gekko点击查看免费下载本文围绕 Gekko 命令行模式下的tradebot真实交易机器人展开讲解如何配置watch、tradingAdvisor、trader、performanceAnalyzer等核心插件将实时行情监听、技术分析策略与真实交易所下单串联成一条自动化交易流水线。读完本文你将掌握 tradebot 的完整配置方法、运行命令、API 密钥权限要求以及其内部建议 → 订单 → 成交 → 汇总的源码级执行链路并了解所有需要规避的风险点。tradebot 是什么一图看懂三要素按照官方文档的定义把 Gekko 设置为 tradebot 后它会同时承担三项职责Watch a live market实时监听一个真实交易市场由config.watch指定交易所、币种与资产对Run a strategy (in semi-realtime) over live market data基于实时行情数据以半实时方式运行技术分析策略产出交易建议adviceAutomatically create buy/sell orders based on signals coming from the strategy根据策略产出的买卖信号自动在真实交易所创建买单与卖单。这三点对应了 Gekko 流水线pipeline中的三个关键环节行情市场market、策略顾问tradingAdvisor与执行者trader。在 core/pipeline.js 中Gekko 会先加载所有启用的插件再依据 subscriptions.js 中的事件订阅关系把市场产生的candle事件分发给各插件trader正是通过订阅tradingAdvisor广播的advice事件来完成自动下单的。文档对 tradebot 给出了一个必须时刻牢记的免责声明As with everything in Gekko, the tradebot will make decisions based on the strategy selected/configured/createdby YOU. If you end up losing money, you have no one to blame but yourself.即tradebot 的一切决策都来自你选择、配置或编写的策略。它只是把你自己的交易策略自动化执行并不提供任何投资建议如果亏损责任完全在策略本身。这一点在代码层面也有强制体现详见下文启动前的确认开关一节。前置准备命令行模式与配置文件tradebot 属于命令行运行模式因此需要先按照命令行使用指南把 Gekko 配置为命令行用法每个命令行实例只运行一个 Gekko 实例如需同时交易多个市场需要分别运行多次复制sample-config.js为独立配置文件例如config.js所有插件开关与参数都在该文件中配置。命令行模式下常用启动方式详见命令行使用指南# 实时模式tradebot / 监视器 / paper trader 都属于此模式 node gekko --config config.js # 回测模式 node gekko --config config.js --backtest # 导入模式 node gekko --config config.js --import运行 tradebot 使用的是不带--backtest/--import的实时模式。更完整的插件参数说明可参考插件配置文档。需要配置的插件清单根据官方文档把 Gekko 变成 tradebot 需要配置以下插件插件必选作用config.watch必选指定要交易的市场交易所、currency、assetcandleWriter可选把市场数据蜡烛额外写入磁盘存储tradingAdvisor必选配置策略方法、蜡烛周期等策略运行属性trader必选配置交易所账户 API 访问权限负责真实下单performanceAnalyzer必选启用后统计交易绩效如夏普比率同时文档明确要求关闭paperTrader。原因是一个实例中只能有一个交易类插件处于活动状态there can only be 1 trade plugin active per instance。这在源码中有直接印证在 core/pipeline.js 的插件订阅阶段当paperTrader与trader同时启用并都试图广播advice相关事件时pipeline 会检测到多个插件广播同一事件Multiple plugins are broadcasting the event ... This is unsupported并直接终止进程因此二者必须二选一。1.config.watch监听哪个市场指定要交易的市场交易所名称、计价货币与交易资产三元组config.watch { exchange: binance, // 交易所 slug见 supported_exchanges 列表 currency: USDT, // 计价货币 asset: BTC, // 交易资产 }交易所支持列表可参考 supported_exchanges.md。trader插件的资产/币种均取自config.watch见下文 trader 源码剖析。2.candleWriter可选行情落盘如果需要把实时行情数据存储到本地例如用于后续回测启用 candleWriter。它在 sample-config.js 中的默认形态如下其中adapter指向你配置的存储适配器sqlite / postgresql / mongodbconfig.candleWriter { enabled: true, adapter: sqlite }对应的配置文件是 config/plugins/candleWriter.toml存储适配器可在 sqlite、postgresql、mongodb 间切换详见 config/adapters 下的 TOML 示例。3.tradingAdvisor策略与蜡烛属性tradingAdvisor是策略运行器它订阅市场的candle事件按candleSize聚合蜡烛并把蜡烛喂给所选策略计算买卖建议。核心配置config.tradingAdvisor { enabled: true, method: MACD, // 使用的策略方法名 candleSize: 60, // 蜡烛周期分钟例如 60 表示 1 小时 K 线 historySize: 10, // 历史蜡烛数用于策略预热warmup }对应的 TOML 模板是 config/plugins/tradingAdvisor.toml。在源码 plugins/tradingAdvisor/tradingAdvisor.js 中插件用new CandleBatcher(config.tradingAdvisor.candleSize)按周期聚合实时蜡烛this.strategyName config.tradingAdvisor.method决定加载哪个策略文件策略位于 strategies 目录实时模式下若非 leech 模式会使用dataStitcher灌入历史数据作为策略预热期warmup period这正是historySize发挥作用的环节策略设置stratSettings直接取自config[this.strategyName]配置块如config.MACD所以每个策略的自有参数如 MACD 的 short/long/signal/thresholds需要在同名配置块下配置。策略与蜡烛属性、各内置策略参数的完整说明可参考 sample-config.js 底部的 OTHER STRATEGY SETTINGS 部分与策略文档。4.trader对接交易所账户并真实下单trader是 tradebot 的执行核心它把策略的advice转成真实订单。启用前必须在交易所创建 API 密钥。文档插件配置文档特别强调API 密钥需要具备的权限各交易所命名不同包括get info、get balance/portfolio、get open orders、get fee、buy、sell、cancel order。所有交易所都需要 API key 与 API secretBitstamp 和 CEX.io 额外需要usernameBitstamp 中是一串数字。config.trader { enabled: false, key: , // 你的 API key secret: , // 你的 API secret username: , // 用户名仅在 Bitstamp / CEX.io 等交易所需要 passphrase: , // GDAX 等交易所需要 passphrase }对应模板 config/plugins/trader.toml 中有醒目的安全提示填写密钥后切勿与任何人分享该配置文件。同时请务必确认你的交易所 wrapper 支持真实交易能力——plugins/trader/trader.js 在初始化 Broker 时会检查this.broker.capabilities.gekkoBroker不支持时直接终止进程并提示This exchange is not yet supported。5.performanceAnalyzer绩效统计启用 performanceAnalyzer 用于计算交易绩效指标如夏普比率需要无风险收益率config.performanceAnalyzer { enabled: true, riskFreeReturn: 5 // 年化无风险收益率%用于计算夏普比率 }对应模板 config/plugins/performanceAnalyzer.toml注释说明riskFreeReturn是每年 % 的无风险回报例如国债或银行存款利率。完整可运行的 tradebot 配置示例综合以上各插件一份完整的 tradebot 配置文件基于 sample-config.js 精简如下。请把key/secret换成你自己的交易所 API 凭证var config {}; config.debug true; // 输出更多调试日志 // 1. 监听市场binance 上的 BTC/USDT config.watch { exchange: binance, currency: USDT, asset: BTC, }; // 2.可选行情落盘 config.candleWriter { enabled: true, adapter: sqlite }; // 3. 策略配置 config.tradingAdvisor { enabled: true, method: MACD, candleSize: 60, historySize: 10, }; // MACD 策略自身参数 config.MACD { short: 10, long: 21, signal: 9, thresholds: { down: -0.025, up: 0.025, persistence: 1 } }; // 4. 真实交易插件tradebot 的核心 config.trader { enabled: true, key: your-api-key, secret: your-api-secret, username: , passphrase: , }; // 5. 绩效分析 config.performanceAnalyzer { enabled: true, riskFreeReturn: 5 }; // 6. 必须关闭 paperTrader同一实例只允许一个交易类插件 config.paperTrader { enabled: false }; // 7. 确认你已经理解Gekko 只是自动化你自己的交易策略 config[I understand that Gekko only automates MY OWN trading strategies] true; module.exports config;配置完成后运行node gekko --config your-config-file.js启动前的确认开关代码层面的安全闸门入口文件 gekko.js 在启动实时流水线之前会做一次强制检查if( config.trader config.trader.enabled !config[I understand that Gekko only automates MY OWN trading strategies] ) util.die(Do you understand what Gekko will do with your money? Read this first: ...);也就是说只要启用了trader却没有把config[I understand that Gekko only automates MY OWN trading strategies]设为trueGekko 会直接拒绝启动。sample-config.js 中对这一开关的注释解释得很清楚输出中的任何 advice 都不是 Gekko 在告诉你该开仓/平仓而是你所配置指标自动运行的结果——Gekko 自动化的是你自己的交易策略它自己不做任何建议。源码级原理trader 如何把 advice 变成真实订单在 plugins/trader/trader.js 中可以完整看到真实下单的执行链路初始化与账户同步构造函数把config.trader与config.watch合并为brokerConfig并通过new Broker(brokerConfig)创建交易所 brokerexchange/gekkoBroker.js启动时先sync()同步私有数据输出当前 Portfoliocurrency 与 asset 余额、Balance折合计价货币的总价值与 Exposure暴露仓位比例之后每 10 分钟自动同步一次setInterval(this.sync, 1000 * 60 * 10)setBalance()计算balance currency asset * priceexposure asset * price / balance当暴露比例超过 10% 时视为已持仓this.exposed this.exposure 0.1。processAdvice建议转下单方向processAdvice(advice)把策略建议映射为下单方向recommendation long→ 买入buyrecommendation short→ 卖出sell其他方向直接忽略并记录错误日志。随后做持仓校验买入时若已暴露this.exposed放弃买入并广播tradeAborted原因Portfolio already in position卖出时若未暴露同样放弃卖出。买入数量按amount portfolio.currency / price * 0.95计算即最多用 95% 的计价货币买入保留约 5% 缓冲应对价格波动与手续费卖出数量为全部持仓资产。createOrder创建 sticky 订单createOrder()使用type sticky创建订单先用broker.isValidOrder(amount, price)做下单前校验用于捕捉交易所的 lot size、价格过滤等非标准错误校验失败则放弃下单并广播tradeAborted成功则广播tradeInitiated事件调用broker.createOrder(sticky, side, amount)订单生命周期中监听多个事件fill部分成交、statusChange状态变化、error出错后清空订单并广播tradeErrored、completed完成后生成订单汇总 summary。completed回调中会计算手续费成本与有效成交价effectivePrice买入 price × (1 fee%)卖出 price × (1 − fee%)广播tradeCompleted事件并重新同步账户。若交易所未提供费率信息会给出警告并按零费率假设处理。反向建议与挂单冲突处理如果当前已有未完成订单而收到相反方向的建议若方向与挂单一致直接忽略already in the process to ...若方向相反且正在取消挂单忽略新建议否则先cancelOrder()取消旧挂单再重新执行processAdvice(advice)处理新建议。trailingStop 追踪止损值得注意的一个细节当买入成交、且该条 advice 携带trigger.type trailingStop时trader 会创建追踪止损触发器broker.createTrigger({type: trailingStop, ...})。此后一旦价格回撤触发止损onStopTrigger会用一条recommendation: short的 mock advice 重新调用processAdvice自动平仓从而形成买入 → 追踪止损保护 → 自动卖出的完整闭环。相关触发器实现可参考 exchange/triggers/trailingStop.js 与粘性订单/触发器文档。启动后的事件流首个蜡烛到来时广播首次portfolioChange之后每根蜡烛更新价格并视余额变化广播portfolioValueChange下单全过程的tradeInitiated/tradeCompleted/tradeAborted/tradeErrored/tradeCancelled等事件可被 eventLogger、邮件、Telegram 等通知插件订阅用于实时掌握机器人交易动态。安全与运行建议先回测、再模拟盘、最后实盘入口文件 gekko.js 的头部声明明确建议先以 paper trading 和回测验证策略再考虑实盘。API 密钥最小权限仅授予交易所需权限查询余额、下单、撤单不要把提现权限暴露给机器人key/secret/passphrase等凭证切勿分享。同一实例一个交易插件paperTrader与trader必须二选一同时启用会导致 pipeline 报错退出。确认开关必须置真config[I understand that Gekko only automates MY OWN trading strategies] true是 trader 启动的必要条件。策略参数务必自查tradebot 会严格执行你所配置的策略与参数任何错误的指标配置都会直接影响真金白银务必核对 sample-config.js 中各策略参数的语义后再上线。赞分享金融科技后端【免费下载链接】gekkoA bitcoin trading bot written in node - https://gekko.wizb.it/项目地址https://gitcode.com/gh_mirrors/ge/gekko点击查看免费下载相关推荐Cilium Operator 集群网格状态查询cilium-operator-aws status clustermesh 命令详解Cilium Operator 集群网格状态查询cilium operator aws status clustermesh 命令详解 导读 cilium o金融科技后端GitButler Ratatui TUI 测试指南从沙箱场景搭建到 SVG 快照断言GitButler Ratatui TUI 测试指南从沙箱场景搭建到 SVG 快照断言 GitButler 的 but CLI 内置了一套基于 Ratatui金融科技后端上一篇FanControl终极指南5分钟学会Windows风扇智能控制下一篇5大突破性技术Unitree Go2 ROS2 SDK如何重塑四足机器人开发范式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考