Gekko 实盘交易机器人Trading Bot接入与运行指南【免费下载链接】gekkoA bitcoin trading bot written in node - https://gekko.wizb.it/项目地址: https://gitcode.com/gh_mirrors/ge/gekko本指南讲解如何将 Gekko基于 Node.js 的开源比特币交易机器人从模拟环境升级为实盘自动交易机器人当策略在实时行情上产生买卖信号时Gekko 会自动调用交易所 API 在你账户上真实下单。读完本文你将掌握实盘交易前的准备清单、API Key 安全配置规范、UI 与命令行的接入方式以及 Gekko 从信号到下单的底层执行链路仓位暴露判断、sticky 订单、资金同步与回报核算。前提本文以 docs/features/trading_bot.md 为骨架结合仓库源码trader 插件、gekkoBroker、sticky 订单 等展开。请先阅读 回测指南 与 模拟交易指南理解 Gekko 的信号与模拟机制后再进入实盘。从模拟到实盘交易机器人的定位在 Gekko 中**回测backtesting与模拟交易paper trading**都是不触碰真实资金的实验手段而实盘交易机器人trading bot则是把同一套策略部署到真实市场实时监听某个市场如 USD/BTC的行情以准实时方式在实时数据上运行你的策略见 docs/commandline/tradebot.md当策略产生交易信号时自动在交易所账户中创建真实买单/卖单。正如 gekko.js 顶部免责声明强调的Gekko 只负责自动化执行“你自己”的策略盈亏后果自负代码可能存在 bug 或表现不及预期因此强烈建议先以模拟交易和回测验证策略。此外gekko.js 还内置了一道硬性确认若启用了trader插件但配置文件中未声明I understand that Gekko only automates MY OWN trading strategies这一字段Gekko 会直接报错退出要求你确认理解实盘自动交易的后果。一、实盘前的准备工作官方文档给出了三条必须完成的准备步骤确保对策略有充分信心想继续试验请使用 paper trader 或 backtester只有确信策略可行才进入实盘。为交易所账户创建专用 API KeyGekko 需要能够查看余额与订单、创建新订单的 API 权限并需注意安全细节见下一节。启动 Gekko既可以通过 Web UI也可以通过命令行界面启动。API Key 安全规范创建 API Key 时请务必遵守Gekko 不需要提现withdrawal权限。为安全起见绝对不要创建可提现的 API KeyAPI Key 仅供 Gekko 专用不要与其他用途混用。如有疑问就新开一把 Key并删除过期的旧 Key尽量把 API Key 绑定到运行 Gekko 的服务器 IP 上在服务器环境下尤其重要这能大幅降低 Key 泄露后被滥用的风险。实盘账户的使用注意Gekko 会在你配置的市场由两种货币构成例如 USD/BTC上真实交易因此不要在 Gekko 使用的账户上交易这两种货币本身上述例子中不要在这个账户上交易任何 USD 或任何 BTC尽量不要频繁出入金这两种货币。原因在于虽然 Gekko 能处理上述情况但盈利计算会把这些账户余额变动计入其中导致利润统计失真——trader 插件 正是基于账户内currency与asset两种币的余额来计算总资产与暴露仓位exposure的。二、通过 Web UI 配置实盘交易Gekko 自带一个 Web UI由 web/server.js 提供。在 UI 中进入 “live gekkos”实盘实例页面点击 “Start a new live Gekko”新建实盘 Gekko即可创建交易机器人实例。配置实盘交易时需要区别于模拟交易选择你的交易对exchange / currency / asset如 Poloniex 上的 USDT/BTC选择策略及 candle 参数如 config/plugins/tradingAdvisor.toml 中的candleSize、historySize、method不要启用 paperTrader同一实例只允许一个交易插件处于激活状态启用 trader 插件并配置交易所账户的 API Key。UI 中的 API Key 管理UI 模式下API Key 通过 web/apiKeyManager.js 管理Key 以 JSON 形式持久化在仓库根目录下的SECRET-api-keys.json文件中首次启动会自动创建空文件。对外暴露的接口见 web/routes/apiKeys.jsGET列出已配置 Key 的交易所POST为指定交易所添加/覆盖 Key 值DELETE移除某交易所的 Key。添加成功后管理器会通过 WebSocket 广播apiKeys事件见 web/apiKeyManager.js前端可据此刷新状态。注意该文件包含你的交易所密钥绝不能提交到版本库或分享给任何人。三、通过命令行配置实盘交易命令行方式需要先完成 命令行使用配置然后在配置文件中启用以下插件插件作用config.watch指定要交易的市场交易所 currency assetcandleWriter可选同时把行情数据写入本地存储tradingAdvisor配置策略与 candle 参数trader配置 Gekko 访问交易所账户API Key 等performanceAnalyzer启用用于统计绩效如 Sharpe 比率同时关闭 paperTrader同一实例只允许 1 个交易插件激活。随后按如下方式启动node gekko --config your-config-file.js入口逻辑位于 gekko.js读取配置后判断运行模式然后调用pipeline启动整条数据/信号/交易流水线。命令行下各插件的配置参考watch见 config/general.toml[watch] exchange Poloniex currency USDT asset BTCtradingAdvisor见 config/plugins/tradingAdvisor.tomlenabled true candleSize 60 # 蜡烛周期秒 historySize 25 # 预热所需的 K 线数量 method MACD # 策略名须与 strategies/ 下的实现对应 [talib] enabled false version 1.0.2trader见 config/plugins/trader.toml核心是交易所 API 密钥。该文件头部有醒目标注——一旦填写密钥切勿将此文件分享给任何人enabled false ## NOTE: once you filled in the following ## never share this file with anyone! key secret # this is only required at specific exchanges username 其中username仅在个别交易所如以用户名鉴权的平台需要填写大多数交易所只需key与secret。candleWriter见 config/plugins/candleWriter.toml仅需声明enabled true与存储适配器如adapter sqlite把实时行情落盘备用。performanceAnalyzer见 config/plugins/performanceAnalyzer.toml用于计算 Sharpe 比率等指标核心参数riskFreeReturn 2表示按年化 2% 的无风险收益率如国债或银行利率参与计算。四、信号到订单trader 插件的执行链路理解了配置之后我们深入 plugins/trader/trader.js看信号是如何一步步变成真实订单的。这是实盘交易的核心逻辑。1. 初始化与 Broker 接入Trader构造时会把config.trader与config.watch合并并置private: true构造一个 gekkoBroker 实例见 trader.jsthis.brokerConfig { ...config.trader, ...config.watch, private: true }初始化时会同步一次私有数据并打印初始 Portfolio、Balance 与暴露仓位Exposed。此后每 10 分钟自动sync一次见 trader.js保持余额与持仓同步。另外只有交易所 wrapper 声明支持gekkoBroker能力在 exchange/wrappers 下各 wrapper 的capabilities中标注如 binance.js、poloniex.js、gdax.js、kraken.js 等均声明gekkoBroker: 0.6及以上时该交易所才支持实盘交易否则Trader会直接报错 “This exchange is not yet supported” 退出见 trader.js。2. 仓位暴露判断exposure每次收到新 K 线processCandle或同步数据时插件会计算总资产与暴露度见 trader.jsthis.balance this.portfolio.currency this.portfolio.asset * this.price; this.exposure (this.portfolio.asset * this.price) / this.balance; // if more than 10% of balance is in asset we are exposed this.exposed this.exposure 0.1;exposed true账户中超过 10% 的资产以标的币asset形式持有即已持仓持仓状态会作为是否重复买入/卖出的防呆条件见下节。同时processCandle会在首次收到 K 线时发出portfolioChange并在总资产因价格变动或持仓变化时发出portfolioValueChange供 UI/其他插件展示实时仓位与资金曲线。3. 处理策略信号processAdvice当策略发出建议advice时见 trader.jsrecommendation long→ 方向为buy买入 assetrecommendation short→ 方向为sell卖出 asset其他未知方向一律忽略并记 error 日志。接着做一系列防御性判断已有挂单如果已存在同方向挂单忽略新信号避免重复下单如果反向信号到来则先取消当前订单再重新处理该信号cancelOrder流程见 trader.js买入前检查是否已持仓if(this.exposed)则放弃买入发出tradeAborted原因Portfolio already in position.避免重复加仓卖出前检查是否已空仓if(!this.exposed)则放弃卖出买入数量amount this.portfolio.currency / this.price * 0.95见 trader.js即用 95% 的可用资金买入预留 5% 空间以应对手续费与滑点卖出数量amount this.portfolio.asset即全部卖出标的币。4. 创建 sticky 订单确定方向与数量后调用createOrder见 trader.js。下单前先用当前最优价做一次isValidOrder校验用于提前发现最小下单量、价格精度过滤器等非标准错误校验失败则发出tradeAborted。订单类型固定为sticky粘性订单由 exchange/orders/sticky.js 实现。这种高级订单的特性是见 sticky.js 头部注释以最优买/卖价BBObest bid/offer创建限价单若指定了 limit则取 limit 与 BBO 中更优的价格当对手盘价格移动时订单会自动撤销旧单并跟随最优价重新挂单move/moveLimit逻辑确保订单始终贴近盘口顶部提高成交概率支持处理部分成交partial fill通过fill事件上报累计成交量直到总量成交为止见 sticky.js 的calculateFilled。下单后插件监听订单事件见 trader.jsfill部分成交日志statusChange订单状态变化error订单出错清理状态并发tradeErroredcompleted订单完成生成成交汇总createSummary随后重新同步账户数据。5. 成交回报与手续费核算订单完成后见 trader.js插件会生成并广播tradeCompleted其中包含amount、price实际成交量与加权成交价多次部分成交按数量加权平均见 sticky.jsfeePercent、cost交易所提供的费率信息与手续费金额effectivePrice含手续费的有效成交价——买入为price * (1 feePercent/100)卖出为price * (1 - feePercent/100)见 trader.js若交易所未提供费率则警告并按零费率估算portfolio、balance、date等上下文信息。这些回报数据正是 performanceAnalyzer 等插件进行绩效统计的输入。6. 移动止损触发trailing stop如果策略的买入信号携带trigger且类型为trailingStop见 trader.js买入成交后 Gekko 会创建一个移动止损触发器其实现见 exchange/triggers/trailingStop.js以买入成交价作为初始价格trail为固定回撤距离trailingPoint initialPrice - trail当价格创新高price trailingPoint trail时止损点跟随上移trailingPoint price - trail当价格回落到trailingPoint以下时触发止损trigger回调onStopTrigger。onStopTrigger见 trader.js会构造一个recommendation: short的模拟信号重新调用processAdvice从而自动卖出持仓完成一次带移动止损保护的完整交易闭环。卖出时若存在旧止损触发器会先将其取消清理见 trader.js。五、常见问题与注意事项为什么必须关闭 paperTrader每个 Gekko 实例只允许一个交易插件处于激活状态见 docs/commandline/tradebot.md模拟与实盘不可并存于同一实例。为什么账户中不要混用交易货币因为trader插件的盈利与暴露计算直接读取账户中两种币的余额trader.js外部转入转出会污染统计结果。为什么用 95% 而不是 100% 资金买入为手续费、价格滑点与交易所的精度/最小订单限制预留缓冲避免因资金不足导致订单被拒。sticky 订单失败怎么办每次移动、取消、下单失败都会走 sticky.js 的全局错误处理标记ERROR状态并发出error事件由 trader 插件转为tradeErrored上报不会静默失败。实盘前务必用小额资金验证先在目标交易所用极小金额跑通“信号 → 下单 → 成交 → 回报”全链路确认 API Key 权限、订单类型与费率计算都符合预期后再加大投入。小结实盘交易机器人是 Gekko 三条路径回测、模拟、实盘的最后一环配置上需要watchtradingAdvisortrader 可选的candleWriter、performanceAnalyzer协同安全上必须使用无提现权限的专用 API Key执行层面trader 插件 通过仓位暴露判断、95% 资金下单、sticky 订单自动追价、成交回报与手续费核算、移动止损触发等一系列机制把策略信号安全地转化为真实订单。无论使用 UI 还是命令行都请牢记先回测、再模拟、小资金实盘验证并对最终盈亏负责。如需继续深入可阅读 策略创建指南 了解如何定制策略信号或参考 plugins 文档 查看更多可用插件。【免费下载链接】gekkoA bitcoin trading bot written in node - https://gekko.wizb.it/项目地址: https://gitcode.com/gh_mirrors/ge/gekko创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
