- Notifications
You must be signed in to change notification settings - Fork373
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.
License
DigitalRuby/ExchangeSharp
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
ExchangeSharp is a C#framework/lib andconsole app for trading and communicating withvarious exchange API end points for cryptocurrency assets. Many exchanges are supported, along withweb sockets, withdraws and more!
Feel free to visit the discord channel athttps://discord.gg/58ktxXuTVK and chat with other developers.
- Manyexchanges 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 frommany different C# platforms
- Has a greatCLI that enables you to use all features from all exchanges right from your command line.
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 | |
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 B | Has public method for Websocket Positions |
Coinbase (Advanced) | 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 B | |
LBank | x | x | R | |
Livecoin | x | x | ||
MEXC | x | x | B | |
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<T>()
.
On *nix systems:
- Run this command
curl https://github.com/DigitalRuby/ExchangeSharp/raw/main/install-console.sh | sh
On Windows (or manually):
- Download thelatest 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
ExchangeSharp usesmarketSymbol
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.
If you must use an older Windows (older than win8.1), you'll need to use theWebsocket4Net nuget package, and override the web socket implementation by calling
ExchangeSharp.ClientWebSocket.RegisterWebSocketCreator(()=>newExchangeSharpConsole.WebSocket4NetClientWebSocket());
SeeWebSocket4NetClientWebSocket.cs
for implementation details.
dotnet add package DigitalRuby.ExchangeSharp --version 1.2.0
PM> Install-Package DigitalRuby.ExchangeSharp -Version 1.2.0
There's a lot of examples on how to use the API in ourconsole application.
e.g.ExampleOption.cs
publicstaticasyncTaskMain(string[]args){// create a web socket connection to Binance. Note you can Dispose the socket anytime to shut it down.usingvarapi=awaitExchangeAPI.GetExchangeAPIAsync<ExchangeBinanceAPI>();// the web socket will handle disconnects and attempt to re-connect automatically.usingvarsocket=awaitapi.GetTickersWebSocket(tickers=>{Console.WriteLine("{0} tickers, first: {1}",tickers.Count,tickers.First());});Console.WriteLine("Press ENTER to shutdown.");Console.ReadLine(true);}
Private api calls like placing orders require you to callLoadApiKeys
first. You can generate an api keys file by running the bundled console application and choosing the generate key file option.
ExchangeSharp uses NLog internallycurrently. To log, useExchangeSharp.Logger
.
Donot useConsole.WriteLine
to log messages in the lib project.
Provide your ownnlog.config
orapp.config
nlog configuration if you want to change logging settings or turn logging off.
TheExchageAPI
class provides a method caching mechanism. UseMethodCachePolicy
to put caching behind public methods, or clear to remove caching. Some methods are cached by default. You can setExchangeAPI.UseDefaultMethodCachePolicy
tofalse
to stop all caching as well.
You can also set request cache policy if you want to tweak how the http caching behaves.
Please read thecontributing guidelinebefore submitting apull request.
I'm happy to make customizations to the software for you and keep in private repo, emailexchangesharp@digitalruby.com.
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.
Donation totals:0.039 BTC, 10.25 LTC
Thanks for visiting!
Jeff Johnson
jeff@digitalruby.com
http://www.digitalruby.com
About
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.