algomateinc/cryptomarket

此包已被弃用,不再维护。没有建议的替代包。

PHP包,定义了与加密货币交易所交互的统一接口

1.0.20 2018-05-22 13:08 UTC

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_URIMONGODB_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

代码贡献

请遵循以下指南: http://contribution-guide-org.readthedocs.io/