unwindnl / galacticbot
Stellar平台的交易机器人库。
该包的官方仓库似乎已不存在,因此该包已被冻结。
Requires
- php: ^7.1
- zulucrypto/stellar-api: ^0.6.3
This package is auto-updated.
Last update: 2019-12-10 10:30:51 UTC
README
GalacticBot 是一个用于在Stellar平台上创建交易机器人的PHP 7.x库。
使用GalacticBot,您可以使用我们默认的交易算法运行机器人,也可以创建并测试您自己的自定义交易算法。
机器人可以在您的本地机器、服务器上运行,或者您可以让我们在https://www.galacticbot.com/上为您运行,每月只需支付少量固定费用(服务将于2019年第二季度可用)(当然,可用XLM支付)。
功能
- 一个抽象的机器人类,您可以扩展它来实现自己的交易逻辑
- 机器人在Stellar公共网和测试网上都可以运行,以便进行测试
- 机器人可以实时运行或作为模拟来测试机器人和设置
- 指数移动平均(EMA)机器人实现,目前正在进行现场测试(以下链接中查看)
- 演示项目,只需几分钟即可让机器人上线运行
- 演示项目还包括一个脚本来管理机器人进程
要求
- PHP版本 7.1
- 不需要额外的PHP模块
- 需要MySQL来运行演示EMA机器人,但您可以为任何其他类型的数据库创建实现
警告
请注意,此库仍在开发中。在此阶段不建议用大量资金进行交易。
安装
此包可在Composer上使用。
使用composer require unwindnl/galacticbot
将此库添加到您的PHP项目中。
演示
此项目包含如何设置和运行一个机器人的演示项目,该演示项目具有一个最小的Web界面与机器人交互。请参阅demo/README.md文件夹(demo/README.md)以获取更多信息。
实时演示可在:https://www.galacticbot.com/libdemo/查看。
我们还创建了一个现场机器人自定义(图形)视图的示例:https://www.galacticbot.com/demo/。
数据库抽象
机器人不直接与数据库交互,而是使用DataInterface
接口来描述实现应该如何看起来。
请参阅示例MysqlDataInterface
实现,如果您想与另一个数据库接口,请参阅示例。此示例实现未优化,可能会随着数据库中数据的增加而变慢。因此,最好清除旧数据或优化/创建自己的实现。
实现自己的交易算法
创建一个扩展 GalacticBot\Bot 类的类。
添加你的机器人可以具有的自定义交易状态列表,例如
const TRADE_STATE_BUY_WAIT = "BUY_WAIT"; const TRADE_STATE_SELL_WAIT = "SELL_WAIT";
实现以下抽象方法
initialize()
在这里,你可以加载例如数据库中的数据,这些数据是你算法需要的。这个方法只会被调用一次。
getTradeStateLabel($forState)
这里你可以返回你之前定义的每个自定义状态的更详细的文本。
process(\GalacticBot\Time $time, $sample)
一个非常基础的例子
protected function process(\GalacticBot\Time $time, $sample) { // Get current trade state $tradeState = $this->data->get("tradeState"); // Get the last added trade $lastTrade = $this->data->getLastTrade(); // If we have a trade and it isn't completed yet, then update it to get the latest state if ($lastTrade && !$lastTrade->getIsFilledCompletely()) { // Get the latest state from the Stellar network $lastTrade->updateFromAPIForBot($this->settings->getAPI(), $this); // If it isn't done, we'll have to return and wait for it to complete // You could also cancel it or change it if you want if (!$lastTrade->getIsFilledCompletely()) return; } if ($tradeState == self::TRADE_STATE_NONE || $tradeState == self::TRADE_STATE_BUY_WAIT) if (time to buy / do something with $sample) { $this->buy(); $tradeState = self::TRADE_STATE_SELL_WAIT; } } else if ($tradeState == self::TRADE_STATE_SELL_WAIT) { if (time to sell / do something with $sample) { $this->sell(); $tradeState = self::TRADE_STATE_BUY_WAIT; } } }
待解决的问题
- 你需要为你想要与你的Stellar账户进行交易资产设置信任线路。未来库将为你完成这项工作,但现在你必须自己完成(例如使用StellarTerm)。