algomateinc / cryptomarket
此包已被弃用,不再维护。没有建议的替代包。
PHP包,定义了与加密货币交易所交互的统一接口
1.0.20
2018-05-22 13:08 UTC
Requires
- mongodb/mongodb: ^1.3
Requires (Dev)
- phpunit/phpunit: ^6.5
README
PHP包,定义了与加密货币交易所交互的统一接口
示例用法
连接到交易所
$kraken = new Kraken('mykey', 'mysecret'); $kraken->init(); // get currency pairs $krakenPairs = $kraken->supportedCurrencyPairs(); foreach ($krakenPairs as $pair) { // get mkt data $tickerData = $kraken->ticker($pair); // buy anything less than 1000 if ($tickerData->ask < 1000.0) { $kraken->buy($pair, 1.0, $tickerData->ask); } }
连接到多个交易所
安装
Composer
需要Composer来获取和使用依赖项。克隆仓库后,运行
$ composer install
ConfigData.php 初始化设置
CryptoMarket包使用"ConfigData"类进行配置,该类定义在顶层"tests/"目录中。"ConfigDataExample.php"提供了一个模板,只允许访问公共交易所API。要设置基本的ConfigData,请运行
$ cp tests/ConfigDataExample.php tests/ConfigData.php
$ sed -i "s#ConfigDataExample#ConfigData#" tests/ConfigData.php
$ composer dumpautoload
注意:为了安全起见,ConfigData.php包含在.gitignore中,因此您的API密钥不会意外提交。
测试设置
从那里,从顶层目录运行烟测试以确保正确设置
$ ./vendor/bin/phpunit tests/SmokeTest.php
交易所API密钥
为了使用如"购买"和"出售"之类的私有交易所API,CryptoMarket需要每个交易所的API密钥。
在您的代码中使用Exchange类
要创建带有API密钥信息的Exchange实例,首先创建一个IAccountLoader实例,然后使用其"getAccounts"函数,提供一个"Record::ExchangeName"的数组。目前支持以下交易所
- Bitfinex
- Bitstamp
- GDAX
- Gemini
- Kraken
- Poloniex
- Wex
- Yunbi (已停运)
IAccountLoader实现
目前,有两个IAccountLoader实现
- ConfigAccountLoader -- 存储在纯文本文件中
- MongoAccountLoader -- 存储在mongodb集合中
使用ConfigAccountLoader
- 将密钥、秘密和附加信息添加到tests/ConfigData.php中的
ACCOUNTS_CONFIG
部分,例如
class ConfigData { const ACCOUNTS_CONFIG = [ 'Kraken'=> [ 'key' => 'mykey', 'secret' => 'mysecret' ]; }
- 使用
ConfigData::ACCOUNTS_CONFIG
实例化ConfigAccountLoader
并调用"getAccounts"
$accountLoader = new ConfigAccountLoader(ConfigData::ACCOUNTS_CONFIG); $allExchanges = $accountLoader->getAccounts(); $kraken = $allExchanges[ExchangeName::Kraken]; // get one foreach ($allExchanges as $exchange) { // all exchanges $btcusd = $exchange->ticker(CurrencyPair::BTCUSD); // do stuff with BTCUSD }
使用MongoAccountLoader
- 将
MONGODB_URI
和MONGODB_NAME
添加到tests/ConfigData.php - 使用以下文档格式添加到"servers"集合中
{
'ServerName': 'xxxxxxxx', // any user-defined name, used to construct MongoAccountLoader
'ExchangeSettings': [
{
'Name': 'SomeExchangeName', // see Record::ExchangeName for supported names
'Settings': { // all key->value pairs to be passed into Exchange, e.g:
'key': 'xxxxxxxxxxx',
'secret': 'xxxxxxxxxxxxx',
}
},
// all other exchanges follow
]
}
- 使用以下内容实例化MongoAccountLoader
ConfigData::MONGODB_URI
ConfigData::MONGODB_DBNAME
ConfigData::ACCOUNTS_CONFIG
- 上一步中指定的"ServerName"
- 调用"getAccounts"
运行测试
所有测试都已包含/vendor/autoload.php,因此可以使用vendor目录中的phpunit运行测试,例如
$ ./vendor/bin/phpunit tests/exchange/BitfinexTest.php
Docker容器
提供了一个基于标签 joncinque/cryptomarket 的Docker容器。运行测试文件的示例命令
$ docker run --entrypoint /dockervolume/vendor/bin/phpunit \ -v /myvolume/:/dockervolume -it joncinque/cryptomarket \ --include-path /dockervolume /dockervolume/tests/SmokeTest.php