https://github.com/libtrading/libtrading
Libtrading, an ultra low-latency trading connectivity library for C and C++.
https://github.com/libtrading/libtrading
Last synced: 11 months ago
JSON representation
Libtrading, an ultra low-latency trading connectivity library for C and C++.
- Host: GitHub
- URL: https://github.com/libtrading/libtrading
- Owner: libtrading
- License: other
- Created: 2010-10-30T08:40:39.000Z (over 15 years ago)
- Default Branch: master
- Last Pushed: 2020-12-16T18:53:25.000Z (about 5 years ago)
- Last Synced: 2024-07-31T22:54:30.667Z (over 1 year ago)
- Language: C
- Homepage: http://libtrading.org
- Size: 1.29 MB
- Stars: 695
- Watchers: 96
- Forks: 240
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-quant - libtrading/libtrading: Libtrading, an ultra low-latency trading connectivity library for C and C++.
README
# Libtrading
[](http://travis-ci.org/libtrading/libtrading)
Libtrading is an open source API for high-performance, low-latency trading
applications. It implements network protocols used for communicating with
exchanges, dark pools, and other trading venues. The API supports FIX,
FIX/FAST, and many proprietary protocols such as ITCH and OUCH used by NASDAQ.
## Features
* C API
* High performance, low latency
* FIX dialect support
* SystemTap/DTrace probes
## Install
Install prerequisite packages:
**Debian**
```
$ apt-get install pkg-config libxml2-dev libglib2.0-dev libncurses5-dev \
python-yaml libevent-dev
```
**Fedora**
```
$ yum install zlib-devel libxml2-devel glib2-devel vim-common ncurses-devel \
python-yaml libevent-devel
```
Note: on older RHEL versions you'll need to replace libevent-devel with libevent2-devel
**OSX**
```
$ brew install libevent glib pkgconfig
$ pip install pyyaml
```
Then run:
```
$ make install
```
You can also run the test harness:
```
$ make check
```
## Usage
To measure FIX engine performance locally, start a FIX server:
```
$ ./tools/fix/fix_server -m 1 -p 7070
Server is listening to port 7070...
```
and then run the FIX client latency tester against it:
```
$ ./tools/fix/fix_client -n 100000 -m order -p 7070 -h localhost
Client Logon OK
Messages sent: 100000
Round-trip time: min/avg/max = 15.0/16.8/129.0 μs
Client Logout OK
```
## Documentation
* [Quick Start Guide](docs/quickstart.md)
* [Exchange Coverage](https://github.com/libtrading/libtrading/wiki/Exchange-Coverage)
* [Protocol Coverage](https://github.com/libtrading/libtrading/wiki/Protocol-Coverage)
## Performance
Protocol | RTT (μs)
---------|---------
FAST | 13
FIX | 6
The following above were obtained by running Libtrading messaging
ping-pong tests on a 4-way Intel Haswell 3.60 GHz CPU running Fedora 21
with Linux 3.19.7-200. The processes were pinned to separate physical cores
and the numbers include time spent in the Linux TCP/IP stack.
FIX engine round-trip time frequency plot for the above looks as follows:

## License
Copyright (C) 2011-2014 Pekka Enberg and contributors
Libtrading is distributed under the 2-clause BSD license.
## Contributors
* Denis Ivaykin
* Marat Stanichenko
* Jussi Virtanen