• Stars
    star
    741
  • Rank 60,824 (Top 2 %)
  • Language
    C#
  • License
    MIT License
  • Created about 7 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ExchangeSharp is a powerful, fast and easy to use .NET/C# API for interfacing with many crypto currency exchanges. REST and web sockets are supported.

Project's logo

Github Sponsorship

NuGet

Overview

ExchangeSharp is a C# framework/lib and console app for trading and communicating with various exchange API end points for cryptocurrency assets. Many exchanges are supported, along with web sockets, withdraws and more!

Feel free to visit the discord channel at https://discord.gg/58ktxXuTVK and chat with other developers.

Features

  • Many exchanges supported with public, private and web socket API
  • Easy to use code and API
  • Optional global market symbol normalization, since each exchange has their own way of doing market symbols
  • Runs anywhere .NET runs. (Windows, Mac, Linux, Containers, Serverless, iOS, Android, etc.)
  • Can be used from many different C# platforms
  • Has a great CLI that enables you to use all features from all exchanges right from your command line.

Exchanges

The following cryptocurrency exchanges are supported:
(Web socket key: T = tickers, R = trades, B = orderbook / delta orderbook, O = private orders, U = user data)

Exchange Name Public REST Private REST Web Socket Notes
ApolloX x x T R B O U
Aquanow wip x
Binance x x T R B O U
Binance Jersey x x T R B O U Ceased operations
Binance.US x x T R B O U
Binance DEX R
Bitbank x x
Bitfinex x x T R O
Bitflyer R
Bithumb x R
BitMEX x x R O
Bitstamp x x R
Bittrex x x T R
BL3P x x R B Trades stream does not send trade's ids.
Bleutrade x x
BtcTurk R
BTSE x x
Bybit x x R Has public method for Websocket Positions
Coinbase x x T R O U
Coincheck R
Coinmate x x
Crypto.com R
Digifinex x x R B
Dydx R
FTX x x T R
FTX.us x x T R
gate.io x x R
Gemini x x T R B
HitBTC x x R
Huobi x x R B
Kraken x x R Dark order symbols not supported
KuCoin x x T R
LBank x x R
Livecoin x x
NDAX x x T R
OKCoin x x R B
OKEx x x T R B O
Poloniex x x T R B
UPbit R
YoBit x x
ZB.com wip R

The following cryptocurrency services are supported:

  • Cryptowatch (partial)

Exchange constructors are private, to get access to an exchange in code use:

ExchangeAPI.GetExchangeAPIAsync<>().

Installing the CLI

On *nix systems:

  • Run this command curl https://github.com/jjxtra/ExchangeSharp/raw/master/install-console.sh | sh

On Windows (or manually):

  • Download the latest binaries for your OS.
  • Unzip it into a folder that is in your environment variable PATH (ctrl + shift + pause|break -> Environment Variables)
  • Use it from your preferred command-line emulator (e.g. Powershell, cmd, etc.)
  • exchange-sharp --help shows all available commands

Notes

ExchangeSharp uses marketSymbol to refer to markets, or pairs of currencies.

Please send pull requests if you have made a change that you feel is worthwhile, want a bug fixed or want a new feature. You can also donate to get new features.

Building/Compiling

Websockets

If you must use an older Windows (older than win8.1), you'll need to use the Websocket4Net nuget package, and override the web socket implementation by calling

ExchangeSharp.ClientWebSocket.RegisterWebSocketCreator(
    () => new ExchangeSharpConsole.WebSocket4NetClientWebSocket()
);

See WebSocket4NetClientWebSocket.cs for implementation details.

Nuget

dotnet CLI

dotnet add package DigitalRuby.ExchangeSharp --version 1.0.4

Package Manager on VS

PM> Install-Package DigitalRuby.ExchangeSharp -Version 1.0.4

Examples

Creating an order

There's a lot of examples on how to use the API in our console application.
e.g. ExampleOption.cs

Getting ticker info via Web Sockets

public static async Task Main(string[] args)
{
    // create a web socket connection to Binance. Note you can Dispose the socket anytime to shut it down.
    using var api = await ExchangeAPI.GetExchangeAPIAsync<ExchangeBinanceAPI>();
    // the web socket will handle disconnects and attempt to re-connect automatically.
    using var socket = await api.GetTickersWebSocket(tickers =>
    {
        Console.WriteLine("{0} tickers, first: {1}", tickers.Count, tickers.First());
    });

    Console.WriteLine("Press ENTER to shutdown.");
    Console.ReadLine(true);
}

Authentication

Private api calls like placing orders require you to call LoadApiKeys first. You can generate an api keys file by running the bundled console application and choosing the generate key file option.

Logging

ExchangeSharp uses NLog internally currently. To log, use ExchangeSharp.Logger.

Do not use Console.WriteLine to log messages in the lib project.

Provide your own nlog.config or app.config nlog configuration if you want to change logging settings or turn logging off.

Caching

The ExchageAPI class provides a method caching mechanism. Use MethodCachePolicy to put caching behind public methods, or clear to remove caching. Some methods are cached by default. You can set ExchangeAPI.UseDefaultMethodCachePolicy to false to stop all caching as well.

You can also set request cache policy if you want to tweak how the http caching behaves.

How to contribute

Please read the contributing guideline before submitting a pull request.

Consulting

I'm happy to make customizations to the software for you and keep in private repo, email [email protected].

Donations Gratefully Accepted

Believe it or not, donations are quite rare. I've posted publicly the total donation amounts below. If ExchangeSharp has helped you in any way, please consider donating.

Donate with Bitcoin

Donate with Litecoin

Donate with Ethereum

Donate

Donation totals: 0.039 BTC, 10.25 LTC

Thanks for visiting!

Jeff Johnson
[email protected]
http://www.digitalruby.com

More Repositories

1

IPBan

Since 2011, IPBan is the worlds most trusted, free security software to block hackers and botnets. With both Windows and Linux support, IPBan has your dedicated or cloud server protected. Upgrade to IPBan Pro today and get a discount. Learn more at ↓
C#
1,615
star
2

MailDemon

Smtp server for mass emailing, managing email lists and more. Built on .NET Core. Linux, MAC and Windows compatible.
C#
143
star
3

DRColorPicker

Digital Ruby, LLC Color Picker for iOS
Objective-C
75
star
4

FingersGestures

Unity Touch Gestures for iOS, Android, Windows, MAC and any other touch capable platform.
C#
55
star
5

AutoSSH

Simple Windows and Linux automation and backup over SSH using dotnet core
C#
7
star
6

SimpleCache

Simple yet Powerful L1/L2/L3 caching in .NET. Memory -> Local File -> Redis. I am open to suggestions for enhancements, email [email protected].
C#
5
star
7

IPBanProReleases

IPBan Pro Releases
4
star
8

IPBanProSDK

IPBan Pro API and Application Integrations. Learn more at -->
C#
3
star
9

ServiceSpy

Simple Decentralized and Distributed Service Discovery
C#
3
star
10

SimpleDi

Simple, declarative dependency injection and configuration without all the boilerplate. I am open to suggestions for enhancements, email [email protected].
C#
2
star
11

ExitPopup

Simple Exit Popup in vanilla javascript. Got questions or feedback? Send me an email at [email protected].
HTML
2
star
12

SimplePubSub

Declarative and simple pub/sub for .NET using Mass Transit. I am open to suggestions for enhancements, email [email protected].
C#
1
star
13

S3ObjectStore

Allow storing json objects in S3 easily
C#
1
star
14

DigitalRubyCore

Digital Ruby, LLC Core Code for Modern .NET Server Applications
C#
1
star
15

UnityManuals

Manuals for various Digital Ruby, LLC Products
HTML
1
star