unwindnl/galacticbot

Stellar平台的交易机器人库。

该包的官方仓库似乎已不存在,因此该包已被冻结。

dev-master 2019-07-10 09:21 UTC

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)。