Ccxtex 0.2 released: Elixir/Erlang interop with Ccxt library
I've released Ccxtex 0.2, an F/LOSS library for Elixir/Erlang interoperability with python version of ccxt library. Ccxt provides an unified API for querying for historical/ recent data and trading operations for multiple cryptocurrency exchanges including GDAX, Bitfinex, Poloniex, Binance and others.
Ccxtex provides access to open/high/low/close/volume data, latest tickers and markets for more than 100 exchanges.
Ccxtex repo and docs
Changelog (v0.1 to v0.2)
- added exchanges supervisor to start an Erlport process for every exchanges that enables concurrency while fetching data from exchange APIs
- added seamless routing of calls to the corresponding exchange erlport process by default
- improved usability of function calls that now do not require a pid argument
- added specs to the all public functions
- updated docs to match latest features
- minor fixes and improvements
Release commits
Installation
Elixir
def deps do
[
{:ccxtex, github: "cyberpunk-ventures/ccxtex"}
]
end
Python
You need Python 3 and ccxt python package installed for this module to work.
To install ccxt use pip3 install ccxt
Python interoperability
To provide querying of APIs in parallel and ease of per-exchange configuration, Ccxtex application includes a supervisor that starts and monitors an Erlport process and Python process for every exchange. Be mindful about the required system resources.
Status and roadmap
Ccxtex is usable, but is under active development, API is unstable and will change. Some exchanges do not support all methods/require CORS/have other esoteric requirements. Please consult ccxt documentation for more.
Public APIs in progress
- [x] fetch_ticker
- [x] fetch_ohlcv
- [x] fetch_exchanges
- [x] fetch_markets
- [ ] fetch_trades
- [ ] fetch_order_book
- [ ] fetch_l2_order_book
Developer experience improvements
- [ ] unified public API call option structs
- [ ] investigate alternative parallelism/concurrency implementation
- [ ] capture exceptions generated by ccxt python library and convert to elixir success tuples
- [ ] improve general usability of library
Private APIs implementation and authentication are under consideration
Examples
Default process id (@pid) is Ccxtex.Port. You can always start and use another process with Ccxtex.Port.start_link/2
Fetch exchanges
Usage:
exchanges = Ccxtex.fetch_exchanges()
[
...
%{
has: %{
cancel_order: true,
cancel_orders: false,
cors: false,
create_deposit_address: true,
create_limit_order: true,
create_market_order: false,
create_order: true,
deposit: false,
edit_order: true,
fetch_balance: true,
fetch_closed_orders: "emulated",
fetch_currencies: true,
fetch_deposit_address: true,
fetch_funding_fees: false,
fetch_l2_order_book: true,
fetch_markets: true,
fetch_my_trades: true,
fetch_ohlcv: true,
fetch_open_orders: true,
fetch_order: "emulated",
fetch_order_book: true,
fetch_order_books: false,
fetch_orders: "emulated",
fetch_ticker: true,
fetch_tickers: true,
fetch_trades: true,
fetch_trading_fees: true,
private_api: true,
public_api: true,
withdraw: true
},
id: "poloniex",
timeout: 10000
}
]
Fetch ticker
Usage:
exchange = "bitstamp"
symbol = "ETH/USD"
ticker = Ccxtex.fetch_ticker(exchange, symbol)
Return value example:
%{
ask: 577.35,
ask_volume: nil,
average: nil,
base_volume: 73309.52075575,
bid: 576.8,
bid_volume: nil,
change: nil,
close: 577.35,
datetime: "2018-05-24T14:06:09.000Z",
high: 619.95,
info: %{
ask: "577.35",
bid: "576.80",
high: "619.95",
last: "577.35",
low: "549.28",
open: "578.40",
timestamp: "1527170769",
volume: "73309.52075575",
vwap: "582.86"
},
last: 577.35,
low: 549.28,
open: 578.4,
percentage: nil,
previous_close: nil,
quote_volume: 42729187.26769644,
symbol: "ETH/USD",
timestamp: 1527170769000,
vwap: 582.86
}
Fetch OHLCV
Usage:
exchange = "bitstamp"
symbol = "ETH/USD"
ticker = Ccxtex.fetch_ticker(exchange, symbol)
Return value example:
%{
base: "ETH",
base_volume: 4234.62695691,
close: 731.16,
exchange: "bitfinex2",
high: 737.07,
low: 726,
open: 736.77,
quote: "USDT",
timestamp: ~N[2018-01-01 00:00:00.000]
}
(*`□)<炎炎炎炎
Leave Ccxtex 0.2 released: Elixir/Erlang interop with Ccxt library to:
Read more #utopian-io posts
Best Posts From ontofractal
We have not curated any of ontofractal's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From ontofractal
- Introducing Decentralized Commons initiative and DC BY 0.1, a fork of Creative Commons attribution license
- Ccxtex 0.3 released: call ccxt library from Elixir/Erlang
- Waveschainex 0.2 release: Elixir/Erlang client for WAVES REST API
- Sagres-waves v0.1 release: open source vesting smart contracts generator for WAVES blockchain
- Waveschainex 0.1 release: Elixir/Erlang client for WAVES REST API
- EctoPgJson 0.1 release: Elixir/Ecto extension for Posgres JSON/JSONB operators
- ExGolos v0.11 released: 0.18 HF support [open source Elixir library for Golos]
- Cryptocomparex 0.1 release: Elixir/Erlang client for CryptoCompare API
- Ccxtex 0.2 released: Elixir/Erlang interop with Ccxt library
- Quandlex 0.1 released: Quandle API client for Elixir/Erlang