PHPackages                             algomateinc/cryptomarket - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. algomateinc/cryptomarket

AbandonedArchivedLibrary[API Development](/categories/api)

algomateinc/cryptomarket
========================

PHP package defining a unified interface for interacting with cryptocurrency exchanges

1.0.20(7y ago)4873Apache-2.0PHP

Since Jun 13Pushed 7y ago1 watchersCompare

[ Source](https://github.com/AlgomateInc/CryptoMarket)[ Packagist](https://packagist.org/packages/algomateinc/cryptomarket)[ RSS](/packages/algomateinc-cryptomarket/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependencies (2)Versions (23)Used By (0)

CryptoMarket
============

[](#cryptomarket)

PHP package defining a unified interface for interacting with cryptocurrency exchanges

Sample Usage
============

[](#sample-usage)

Connecting to an exchange
-------------------------

[](#connecting-to-an-exchange)

```
$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);
  }
}
```

Connecting to multiple exchanges
--------------------------------

[](#connecting-to-multiple-exchanges)

Installing
==========

[](#installing)

Composer
--------

[](#composer)

Composer is required to fetch and use the dependencies. After cloning the repo, run:

```
$ composer install

```

ConfigData.php initial setup
----------------------------

[](#configdataphp-initial-setup)

The CryptoMarket package is configured using the "ConfigData" class, to be defined in the top-level "tests/" directory. "ConfigDataExample.php" is provided as a template, which only allows access to public exchange APIs. To setup the basic ConfigData, run:

```
$ cp tests/ConfigDataExample.php tests/ConfigData.php
$ sed -i "s#ConfigDataExample#ConfigData#" tests/ConfigData.php
$ composer dumpautoload

```

Note: For safety, ConfigData.php is in .gitignore, so your API keys will not be accidentally checked in.

Test setup
----------

[](#test-setup)

From there, run the smoke tests from the top directory to ensure proper setup:

```
$ ./vendor/bin/phpunit tests/SmokeTest.php

```

Exchange API Keys
=================

[](#exchange-api-keys)

In order to use private exchange APIs such as "buy" and "sell", CryptoMarket needs API keys for each exchange.

Using Exchange classes in your code
-----------------------------------

[](#using-exchange-classes-in-your-code)

To create Exchange instances with API key info, first create an instance of IAccountLoader and then use its "getAccounts" function, providing an array of "Record::ExchangeName". The exchanges currently supported are:

- Bitfinex
- Bitstamp
- GDAX
- Gemini
- Kraken
- Poloniex
- Wex
- Yunbi (RIP)

IAccountLoader Implementations
------------------------------

[](#iaccountloader-implementations)

Currently, there are two implementations of IAccountLoader:

- ConfigAccountLoader -- stored in plaintext file
- MongoAccountLoader -- stored in mongodb collection

Using ConfigAccountLoader
-------------------------

[](#using-configaccountloader)

- Add keys, secrets, and additional information to the `ACCOUNTS_CONFIG` section in tests/ConfigData.php for desired exchanges, e.g.

```
class ConfigData {
  const ACCOUNTS_CONFIG = [
    'Kraken'=> [
      'key' => 'mykey',
    'secret' => 'mysecret'
    ];
}
```

- Instantiate `ConfigAccountLoader` with `ConfigData::ACCOUNTS_CONFIG` and call "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
}
```

Using MongoAccountLoader
------------------------

[](#using-mongoaccountloader)

- Add `MONGODB_URI` and `MONGODB_NAME` to tests/ConfigData.php
- Add entries to the "servers" collection using the following document format:

```
{
  '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
  ]
}

```

- Instantiate MongoAccountLoader with the following:
    - `ConfigData::MONGODB_URI`
    - `ConfigData::MONGODB_DBNAME`
    - `ConfigData::ACCOUNTS_CONFIG`
    - "ServerName" specified in the previous step
- Call "getAccounts"

Running tests
=============

[](#running-tests)

All tests already include /vendor/autoload.php, so tests can be run using phpunit found in the vendor directory, e.g.:

```
$ ./vendor/bin/phpunit tests/exchange/BitfinexTest.php

```

Docker container
================

[](#docker-container)

A Docker container is provided on the tag [joncinque/cryptomarket](https://hub.docker.com/r/joncinque/cryptomarket/). Sample command to run a test file:

```
$ docker run --entrypoint /dockervolume/vendor/bin/phpunit \
    -v /myvolume/:/dockervolume -it joncinque/cryptomarket \
    --include-path /dockervolume /dockervolume/tests/SmokeTest.php
```

Code Contributions
==================

[](#code-contributions)

Please follow the guidelines by:

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 97.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~16 days

Recently: every ~7 days

Total

22

Last Release

2915d ago

Major Versions

0.0.1 → 1.0.12017-06-13

### Community

Maintainers

![](https://www.gravatar.com/avatar/ec139e1e930fc0943ee13dac3d4f286caad1c0cb39e5846b58d6b8246834ed91?d=identicon)[AlgoMate](/maintainers/AlgoMate)

---

Top Contributors

[![joncinque](https://avatars.githubusercontent.com/u/934662?v=4)](https://github.com/joncinque "joncinque (33 commits)")[![algomate-jp](https://avatars.githubusercontent.com/u/28849297?v=4)](https://github.com/algomate-jp "algomate-jp (1 commits)")

---

Tags

opensourcebitcoinexchangecryptocurrencytrading

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/algomateinc-cryptomarket/health.svg)

```
[![Health](https://phpackages.com/badges/algomateinc-cryptomarket/health.svg)](https://phpackages.com/packages/algomateinc-cryptomarket)
```

###  Alternatives

[ccxt/ccxt

A cryptocurrency trading API with more than 100 exchanges in JavaScript / TypeScript / Python / C# / PHP / Go

41.5k328.9k1](/packages/ccxt-ccxt)[coinpaymentsnet/coinpayments-php

A PHP wrapper for the CoinPayments.net v1 API.

55126.2k](/packages/coinpaymentsnet-coinpayments-php)[kornrunner/ccxt

A PHP cryptocurrency trading library with support for more than 90 bitcoin/altcoin exchanges

371.6k](/packages/kornrunner-ccxt)[mocking-magician/coinbase-pro-sdk

Library for coinbase pro API calls

223.2k](/packages/mocking-magician-coinbase-pro-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
