Git Product home page Git Product logo

bitfinex.net's Introduction

.Bitfinex.Net Bitfinex.Net

.NET License

Bitfinex.Net is a strongly typed client library for accessing the Bitfinex REST and Websocket API.

Features

  • Response data is mapped to descriptive models
  • Input parameters and response values are mapped to discriptive enum values where possible
  • Automatic websocket (re)connection management
  • Client side order book implementation
  • Extensive logging
  • Support for different environments
  • Easy integration with other exchange client based on the CryptoExchange.Net base library

Supported Frameworks

The library is targeting both .NET Standard 2.0 and .NET Standard 2.1 for optimal compatibility

.NET implementation Version Support
.NET Core 2.0 and higher
.NET Framework 4.6.1 and higher
Mono 5.4 and higher
Xamarin.iOS 10.14 and higher
Xamarin.Android 8.0 and higher
UWP 10.0.16299 and higher
Unity 2018.1 and higher

Install the library

NuGet

NuGet version Nuget downloads

dotnet add package Bitfinex.Net

GitHub packages

Bitfinex.Net is available on GitHub packages. You'll need to add https://nuget.pkg.github.com/JKorf/index.json as a NuGet package source.

Download release

GitHub Release

The NuGet package files are added along side the source with the latest GitHub release which can found here.

How to use

REST Endpoints

// Get the ETH/USDT ticker via rest request
var restClient = new BitfinexRestClient();
var tickerResult = await restClient.SpotApi.ExchangeData.GetTickerAsync("tETHUST");
var lastPrice = tickerResult.Data.LastPrice;

Websocket streams

// Subscribe to ETH/USDT ticker updates via the websocket API
var socketClient = new BitfinexSocketClient();
var tickerSubscriptionResult = socketClient.SpotApi.SubscribeToTickerUpdatesAsync("tETHUST", (update) => 
{
  var lastPrice = update.Data.LastPrice;
});

For information on the clients, dependency injection, response processing and more see the Bitfinex.Net documentation, CryptoExchange.Net documentation, or have a look at the examples here or here.

CryptoExchange.Net

Bitfinex.Net is based on the CryptoExchange.Net base library. Other exchange API implementations based on the CryptoExchange.Net base library are available and follow the same logic.

CryptoExchange.Net also allows for easy access to different exchange API's.

Exchange Repository Nuget
Binance JKorf/Binance.Net Nuget version
BingX JKorf/BingX.Net Nuget version
Bitget JKorf/Bitget.Net Nuget version
BitMart JKorf/BitMart.Net Nuget version
Bybit JKorf/Bybit.Net Nuget version
CoinEx JKorf/CoinEx.Net Nuget version
CoinGecko JKorf/CoinGecko.Net Nuget version
Gate.io JKorf/GateIo.Net Nuget version
Huobi/HTX JKorf/Huobi.Net Nuget version
Kraken JKorf/Kraken.Net Nuget version
Kucoin JKorf/Kucoin.Net Nuget version
Mexc JKorf/Mexc.Net Nuget version
OKX JKorf/OKX.Net Nuget version

Discord

Nuget version
A Discord server is available here. Feel free to join for discussion and/or questions around the CryptoExchange.Net and implementation libraries.

Supported functionality

API Supported Location
Rest Public Endpoints restClient.SpotApi.ExchangeData
Rest Public Pulse Endpoints X
Calculation Endpoints restClient.SpotApi.ExchangeData
Rest Authenticated Endpoints restClient.SpotApi.Account / restClient.SpotApi.Trading
Rest Authenticated Pulse Endpoints X
Rest Authenticated Merchant Endpoints X
Websocket Public Channels socketClient.SpotApi
Websocket Authenticated Channels socketClient.SpotApi
Websocket Authenticated Inputs socketClient.SpotApi

Support the project

I develop and maintain this package on my own for free in my spare time, any support is greatly appreciated.

Donate

Make a one time donation in a crypto currency of your choice. If you prefer to donate a currency not listed here please contact me.

Btc: bc1q277a5n54s2l2mzlu778ef7lpkwhjhyvghuv8qf
Eth: 0xcb1b63aCF9fef2755eBf4a0506250074496Ad5b7
USDT (TRX) TKigKeJPXZYyMVDgMyXxMf17MWYia92Rjd

Sponsor

Alternatively, sponsor me on Github using Github Sponsors.

Release notes

  • Version 7.7.0 - 07 Aug 2024

  • Version 7.6.0 - 27 Jul 2024

  • Version 7.5.0 - 16 Jul 2024

  • Version 7.4.3 - 02 Jul 2024

  • Version 7.4.2 - 26 Jun 2024

  • Version 7.4.1 - 25 Jun 2024

  • Version 7.4.0 - 23 Jun 2024

  • Version 7.3.0 - 11 Jun 2024

  • Version 7.2.8 - 07 May 2024

  • Version 7.2.7 - 01 May 2024

  • Version 7.2.6 - 28 Apr 2024

  • Version 7.2.5 - 23 Apr 2024

  • Version 7.2.4 - 18 Apr 2024

  • Version 7.2.3 - 03 Apr 2024

    • Updated string comparison for improved performance
    • Removed pre-send symbol validation
  • Version 7.2.2 - 25 Mar 2024

    • Fixed parameter serialization websocket queries
    • Added missing info websocket user data updates
  • Version 7.2.1 - 24 Mar 2024

  • Version 7.2.0 - 16 Mar 2024

  • Version 7.1.0 - 25 Feb 2024

    • Updated CryptoExchange.Net and implemented reworked websocket message handling. For release notes for the CryptoExchange.Net base library see: https://github.com/JKorf/CryptoExchange.Net?tab=readme-ov-file#release-notes
    • Combined multiple private websocket subscriptions into single subscription
    • Fixed issue in DI registration causing http client to not be correctly injected
    • Removed redundant BitfinexRestClient constructor overload
    • Removed UpdateType from BitfinexTradeSimple model in favor of the UpdateType in the DataEvent wrapper
    • Updated some namespaces
  • Version 7.0.5 - 03 Dec 2023

    • Updated CryptoExchange.Net
  • Version 7.0.4 - 24 Oct 2023

    • Updated CryptoExchange.Net
  • Version 7.0.3 - 09 Oct 2023

    • Updated CryptoExchange.Net version
  • Version 7.0.2 - 21 Sep 2023

    • Fixed incorrect url SpotApi.Account.WalletTransferAsync
  • Version 7.0.1 - 19 Sep 2023

    • Fixed socket ticker stream model
  • Version 7.0.0 - 17 Sep 2023

    • Updated all endpoints to V2 API (expect for Account.WithdrawAsync)
    • Updated all parameters and response models
    • Created endpoints for all possible requests for the Configs and Stats endpoints
    • Split the endpoints and subscriptions for trading symbols and funding symbols where necesarry
    • Added Account.GetMovementsDetailsAsync endpoint
    • Added Account.GetLoginHistoryAsync endpoint
    • Added Account.GetApiKeyPermissionsAsync endpoint
    • Added Account.GetAccountChangeLogAsync endpoint
    • Added ExchangeData.GetDerivativesStatusAsync endpoint
    • Added ExchangeData.GetLiquidationsAsync endpoint
    • Added ExchangeData.GetFundingStatisticsAsync endpoint
    • Added Trading.IncreasePositionAsync endpoint
    • Added Trading.GetIncreasePositionInfoAsync endpoint
    • Added Trading.GetPositionSnapshotsAsync endpoint
    • Added SubscribeToLiquidationUpdatesAsync stream
    • Added SubscribeToDerivativesUpdatesAsync stream
    • Added SubmitFundingOfferAsync socket request
    • Added CancelFundingOfferAsync socket request
  • Version 6.0.1 - 25 Aug 2023

    • Updated CryptoExchange.Net
  • Version 6.0.0 - 25 Jun 2023

    • Updated CryptoExchange.Net to version 6.0.0
    • Renamed BitfinexClient to BitfinexRestClient
    • Renamed SpotStreams to SpotApi on the BitfinexSocketClient
    • Updated endpoints to consistently use a base url without any path as basis to make switching environments/base urls clearer
    • Added IBitfinexOrderBookFactory and implementation for creating order books
    • Updated dependency injection register method (AddBitfinex)
  • Version 5.2.0 - 16 Apr 2023

    • Added GetTickerHistoryAsync endpoint
    • Updated socket PlaceOrderAsync parameters
    • Added missing order flag values
  • Version 5.1.2 - 18 Mar 2023

    • Updated CryptoExchange.Net
  • Version 5.1.1 - 14 Feb 2023

    • Updated CryptoExchange.Net
  • Version 5.1.0 - 17 Nov 2022

    • Updated CryptoExchange.Net
  • Version 5.0.16 - 25 Sep 2022

    • Fixed SpotApi.ExchangeData.GetOrderBookAsync() endpoint Bids/Asks being reversed
  • Version 5.0.15 - 18 Jul 2022

    • Updated CryptoExchange.Net
  • Version 5.0.14 - 16 Jul 2022

    • Updated CryptoExchange.Net
  • Version 5.0.13 - 10 Jul 2022

    • Fixed WalletTransferAsync success checking
    • Updated CryptoExchange.Net
  • Version 5.0.12 - 12 Jun 2022

    • Updated CryptoExchange.Net
  • Version 5.0.11 - 24 May 2022

    • Updated CryptoExchange.Net
  • Version 5.0.10 - 22 May 2022

    • Updated CryptoExchange.Net
  • Version 5.0.9 - 08 May 2022

    • Updated CryptoExchange.Net
  • Version 5.0.8 - 01 May 2022

    • Updated CryptoExchange.Net which fixed an timing related issue in the websocket reconnection logic
    • Added seconds representation to KlineInterval enum
    • Added allowed order book levels 1 and 250
  • Version 5.0.7 - 14 Apr 2022

    • Fixed deserialization error in ClosePositionAsync
    • Fixed WalletTransferAsync serialization issue
    • Updated CryptoExchange.Net
  • Version 5.0.6 - 14 Mar 2022

    • Added SubmitFundingAutoRenewAsync endpoint
    • Added GetFundingAutoRenewStatusAsync endpoint
  • Version 5.0.5 - 10 Mar 2022

    • Updated CryptoExchange.Net
  • Version 5.0.4 - 08 Mar 2022

    • Updated CryptoExchange.Net
  • Version 5.0.3 - 01 Mar 2022

    • Updated CryptoExchange.Net improving the websocket reconnection robustness
  • Version 5.0.2 - 27 Feb 2022

    • Updated CryptoExchange.Net
  • Version 5.0.1 - 24 Feb 2022

    • Updated CryptoExchange.Net
  • Version 5.0.0 - 18 Feb 2022

  • Version 4.2.4 - 03 Nov 2021

    • Fixed raw order book stream not accounting for checksum updates
  • Version 4.2.3 - 08 Oct 2021

    • Updated CryptoExchange.Net to fix some socket issues
  • Version 4.2.2 - 06 Oct 2021

    • Updated CryptoExchange.Net, fixing socket issue when calling from .Net Framework
  • Version 4.2.1 - 05 Oct 2021

    • Updated CryptoExchange.Net
  • Version 4.2.0 - 29 Sep 2021

    • Split GetTickerAsync in GetTickerAsync and GetTickersAsync, changed params to IEnumerable
    • Updated CryptoExchange.Net
  • Version 4.1.2 - 22 Sep 2021

    • Fixed nonce provider when running multiple program instances
  • Version 4.1.1 - 21 Sep 2021

    • Fix for nonce provider not working correctly in combination with other exchanges
  • Version 4.1.0 - 20 Sep 2021

    • Added custom nonce provider support
  • Version 4.0.5 - 15 Sep 2021

    • Updated CryptoExchange.Net
  • Version 4.0.4 - 02 Sep 2021

    • Fix for disposing order book closing socket even if there are other connections
  • Version 4.0.3 - 26 Aug 2021

    • Updated CryptoExchange.Net
  • Version 4.0.2 - 24 Aug 2021

    • Updated CryptoExchange.Net, improving websocket and SymbolOrderBook performance
    • Fixes for checksum validation BitfinexSymbolOrderBook
  • Version 4.0.1 - 13 Aug 2021

    • Fix for OperationCancelledException being thrown when closing a socket from a .net framework project
  • Version 4.0.0 - 12 Aug 2021

  • Version 4.0.0-beta3 - 09 Aug 2021

    • Renamed GetTradesForOrderAsync to GetOrderTradesAsync
    • Renamed GetTradesAsync to GetTradeHistoryAsync
    • Renamed GetTradeHistoryAsync to GetUserTradesAsync
    • Renamed GetOrderHistoryAsync to GetOrdersAsync
  • Version 4.0.0-beta2 - 26 Jul 2021

    • Updated CryptoExchange.Net
  • Version 4.0.0-beta1 - 09 Jul 2021

    • Added Async postfix for async methods
    • Updated CryptoExchange.Net
  • Version 3.5.0-beta4 - 07 Jun 2021

    • Fixed IExchangeClient PlaceOrder OrderType
    • Fixed WalletTransferAsync amount parameter serialization
    • Updated CryptoExchange.Net
  • Version 3.5.0-beta3 - 26 May 2021

    • Removed non-async calls
    • Updated to CryptoExchange.Net changes
  • Version 3.5.0-beta2 - 06 mei 2021

    • Updated CryptoExchange.Net
  • Version 3.5.0-beta1 - 30 apr 2021

    • Updated to CryptoExchange.Net 4.0.0-beta1, new websocket implementation

bitfinex.net's People

Contributors

burakoner avatar d-ugarov avatar getoxs avatar henningms avatar jkorf avatar jonnern avatar ridicoulous avatar shigengyu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bitfinex.net's Issues

Start after SocketClient is stopped throws NullReferenceException

Not sure if it's meant to be done this way, but I stop the socketClient whe my apps go to sleep and then try to start the client again when it resumes.

When trying to cal Start() again after stopped I get:

   System.NullReferenceException
   at CryptoExchange.Net.Implementation.BaseSocket.get_IsClosed()
   at Bitfinex.Net.BitfinexSocketClient.CheckConnection()
   at Bitfinex.Net.BitfinexSocketClient.StartInternal()
   at Bitfinex.Net.BitfinexSocketClient.Start()
-----
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

Specify timeframe?

Is it possible to make the TimeFrame not an enum or have an overload where we can specify timeframe ourselves? Interested in e.g four hour but that's not an option through the enum.

Trades updates: errors in parsing ?

Hi.
VS Immediate windows posts errors in parsing trades:

2018/06/22 23.16.13.308 | Error | Error in processing loop. Newtonsoft.Json.JsonSerializationException, Error converting value "EXCHANGE LIMIT" to type 'System.Nullable`1[Bitfinex.Net.Objects.OrderType]'. Path '[6]', line 1, position 81.,    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
   at CryptoExchange.Net.Converters.ArrayConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType)
   at Bitfinex.Net.Objects.SocketObjects.SubscriptionRegistration.Handle(JArray obj)
   at Bitfinex.Net.BitfinexSocketClient.ProcessData(), message: [0,"te",[260754156,"tBTCUSD",1529702173281,13583268783,-0.5,5968,"EXCHANGE LIMIT",5968,1]]

2018/06/22 23.16.13.332 | Error | Error in processing loop. Newtonsoft.Json.JsonSerializationException, Error converting value "EXCHANGE LIMIT" to type 'System.Nullable`1[Bitfinex.Net.Objects.OrderType]'. Path '[6]', line 1, position 81.,    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
   at CryptoExchange.Net.Converters.ArrayConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType)
   at Bitfinex.Net.Objects.SocketObjects.SubscriptionRegistration.Handle(JArray obj)
   at Bitfinex.Net.BitfinexSocketClient.ProcessData(), message: [0,"tu",[260754156,"tBTCUSD",1529702173281,13583268783,-0.5,5968,"EXCHANGE LIMIT",5968,1,-2.984,"USD"]]

Multithreading: Server returned an error: ["error",10114,"nonce: small"]

Hi again,

I get a lot of these nonce: small errors on startup. I'm thinking it's due to me issuing subscriptions at the same time due to multi-threading (I load up my trading pairs asynchronously which in turn issues subscriptions).

Can we add a lock or something to prevent this if I'm not being weird in the way I want to utilize the client 😅

2018/07/03 09:47:40:458 | Warning | Server returned an error: ["error",10114,"nonce: small"]
2018/07/03 09:47:40:459 | Warning | Server returned an error: ["error",10114,"nonce: small"]
2018/07/03 09:47:40:537 | Warning | Server returned an error: ["error",10114,"nonce: small"]
2018/07/03 09:47:40:538 | Warning | Server returned an error: ["error",10114,"nonce: small"]
2018/07/03 09:47:40:602 | Warning | Server returned an error: ["error",10114,"nonce: small"]
2018/07/03 09:47:40:604 | Warning | Server returned an error: ["error",10114,"nonce: small"]
2018/07/03 09:47:40:635 | Warning | Server returned an error: ["error",10114,"nonce: small"]
2018/07/03 09:47:40:644 | Warning | Server returned an error: ["error",10114,"nonce: small"]
2018/07/03 09:47:40:656 | Warning | Server returned an error: ["error",10114,"nonce: small"]
2018/07/03 09:47:40:662 | Warning | Server returned an error: ["error",10114,"nonce: small"]
2018/07/03 09:47:40:685 | Warning | Server returned an error: ["error",10114,"nonce: small"]

Trades stream didn't restore after connection lost

15:36:06.31[32]DEBUG:[bitfinex] Loaded 1 ticks for btcusd:Bitfinex. Last is 260060300
15:36:06.32[32]DEBUG:[bitfinex] Loaded 1 ticks for btcusd:Bitfinex. Last is 260060301
15:36:06.35[32]DEBUG:[bitfinex] Loaded 1 ticks for btcusd:Bitfinex. Last is 260060299
15:36:06.35[32]DEBUG:sec btcusd:Bitfinex mydate 21.06.2018 12:36:06 newdate 21.06.2018 12:36:06 clear 3 trades. findById=True id=260060299 before=801
15:36:06.36[32]DEBUG:[bitfinex] Loaded 1 ticks for btcusd:Bitfinex. Last is 260060301
15:36:06.36[32]DEBUG:[bitfinex] Loaded 1 ticks for btcusd:Bitfinex. Last is 260060300
15:36:06.36[32]DEBUG:sec btcusd:Bitfinex mydate 21.06.2018 12:36:06 newdate 21.06.2018 12:36:06 clear 1 trades. findById=True id=260060300 before=802
2018/06/21 15:36:17:240 | Info | Received status code 20051, going to reconnect the websocket
15:36:17.24[32]DEBUG:[bitfinex] API: 2018/06/21 15:36:17:240 | Info | Received status code 20051, going to reconnect the websocket
2018/06/21 15:36:20:149 | Info | Socket connection established
2018/06/21 15:36:20:150 | Info | Websocket version: 2, platform status: operational
15:36:20.17[13]DEBUG:[bitfinex] API: 2018/06/21 15:36:20:149 | Info | Socket connection established
15:36:20.21[40]DEBUG:[bitfinex] API: 2018/06/21 15:36:20:150 | Info | Websocket version: 2, platform status: operational
2018/06/21 15:36:20:230 | Info | Authentication successful
15:36:20.23[40]DEBUG:[bitfinex] API: 2018/06/21 15:36:20:230 | Info | Authentication successful

After it no more trades was received.

Limit parameter mistyped

I fond several methods in code where limit parameter was typed as "len": GetOrderBookAsync, GetOrderHistoryAsync, GetTradeHistoryAsync, GetFundingOfferHistoryAsync, GetFundingLoansHistoryAsync, GetFundingCreditsHistoryAsyncTask and GetFundingTradesHistoryAsync.
Because of that every call returns default number of records.

parameters.AddOptionalParameter("len", limit?.ToString());

Should be "limit".

Received unknown event type

Hi,
I'm getting below warning on 1.1


2018-07-18 12:51:13:190 | Warning | Received unknown event type: [
  1531910700000,
  7387.1,
  7396.6,
  7396.7,
  7387.1,
  32.85067643
]

Subscription to candles doesn't work as expected.
On 1.0.19 everything works.

Fatal exception when socket was closed

03:46:18.78[596]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:18:786 | Warning | Received unknown event type: [
8238.8,
9.99188904,
8240.9,
27.31380111,
-201.1,
-0.0238,
8236.8,
34477.45553309,
8469.2,
8073
]
03:46:18.78[86]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:18:789 | Warning | Received unknown event type: [
8238.8,
9.99188904,
8240.9,
27.31380111,
-201.1,
-0.0238,
8236.8,
34477.45553309,
8469.2,
8073
]
03:46:18.79[336]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:18:790 | Warning | Received unknown event type: [
8238.8,
9.99188904,
8240.9,
27.31380111,
-201.1,
-0.0238,
8236.8,
34477.45553309,
8469.2,
8073
]
03:46:18.83[269]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:18:833 | Warning | Received unknown event type: [
8238.8,
9.99188904,
8240.9,
27.31380111,
-201.1,
-0.0238,
8236.8,
34477.45553309,
8469.2,
8073
]
03:46:27.47[304]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:27:473 | Info | Received status code 20051, going to reconnect the websocket
03:46:27.47[491]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:27:474 | Info | Received status code 20051, going to reconnect the websocket
03:46:33.74[269]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:33:742 | Warning | Received unknown event type: [
8242.2,
430.05947569,
8242.3,
11.74478501,
-195.6,
-0.0232,
8242.3,
34477.47787126,
8469.2,
8073
]
03:46:33.75[86]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:33:757 | Warning | Received unknown event type: [
8242.2,
430.05947569,
8242.3,
11.74478501,
-195.6,
-0.0232,
8242.3,
34477.47787126,
8469.2,
8073
]
03:46:33.76[336]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:33:760 | Warning | Received unknown event type: [
8242.2,
430.05947569,
8242.3,
11.74478501,
-195.6,
-0.0232,
8242.3,
34477.47787126,
8469.2,
8073
]
03:46:33.76[596]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:33:762 | Warning | Received unknown event type: [
8242.2,
430.05947569,
8242.3,
11.74478501,
-195.6,
-0.0232,
8242.3,
34477.47787126,
8469.2,
8073
]
03:46:42.47[304]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:42:474 | Warning | No data received for 15 seconds, restarting connection
03:46:42.52[491]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:42:529 | Warning | No data received for 15 seconds, restarting connection
03:46:42.86[257]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:42:868 | Info | Socket connection established
03:46:42.87[180]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:42:870 | Info | Socket connection established
03:46:42.87[75]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:42:870 | Info | 0 subscriptions to resend
03:46:42.87[186]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:42:870 | Info | 0 subscriptions to resend
03:46:42.87[186]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:42:872 | Info | Websocket version: 2, platform status: operational
03:46:42.87[75]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:42:875 | Info | Websocket version: 2, platform status: operational
03:46:42.96[75]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:42:960 | Info | Authentication successful
03:46:42.96[186]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:42:969 | Info | Authentication successful
03:46:43.18[304]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:43:188 | Info | Socket connection established
03:46:43.18[81]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:43:188 | Info | 0 subscriptions to resend
03:46:43.19[81]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:43:190 | Info | Websocket version: 2, platform status: operational
03:46:43.26[81]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:43:261 | Info | Authentication successful
03:46:43.27[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:43:272 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:46:48.75[336]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:48:752 | Warning | Received unknown event type: [
8243.4,
458.48980304,
8243.5,
9.62246263,
-194.5,
-0.0231,
8243.4,
34477.65954299,
8469.2,
8073
]
03:46:48.75[596]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:48:754 | Warning | Received unknown event type: [
8243.4,
458.48980304,
8243.5,
9.62246263,
-194.5,
-0.0231,
8243.4,
34477.65954299,
8469.2,
8073
]
03:46:48.78[269]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:48:783 | Warning | Received unknown event type: [
8243.4,
458.48980304,
8243.5,
9.62246263,
-194.5,
-0.0231,
8243.4,
34477.65954299,
8469.2,
8073
]
03:46:49.15[86]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:46:49:159 | Warning | Received unknown event type: [
8243.4,
458.48980304,
8243.5,
9.62246263,
-194.5,
-0.0231,
8243.4,
34477.65954299,
8469.2,
8073
]
03:47:04.05[336]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:04:058 | Warning | Received unknown event type: [
8243.5,
19.76097226,
8246.1,
14.78054756,
-191.1,
-0.0226,
8246.8,
34478.91350044,
8469.2,
8073
]
03:47:04.06[86]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:04:060 | Warning | Received unknown event type: [
8243.5,
19.76097226,
8246.1,
14.78054756,
-191.1,
-0.0226,
8246.8,
34478.91350044,
8469.2,
8073
]
03:47:04.07[596]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:04:079 | Warning | Received unknown event type: [
8243.5,
19.76097226,
8246.1,
14.78054756,
-191.1,
-0.0226,
8246.8,
34478.91350044,
8469.2,
8073
]
03:47:04.43[269]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:04:438 | Warning | Received unknown event type: [
8243.5,
19.76097226,
8246.1,
14.78054756,
-191.1,
-0.0226,
8246.8,
34478.91350044,
8469.2,
8073
]
03:47:19.62[269]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:19:624 | Warning | Received unknown event type: [
8240.1,
10.20073784,
8241,
15.66815979,
-197.8,
-0.0234,
8240.1,
34479.68118951,
8469.2,
8073
]
03:47:19.62[336]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:19:626 | Warning | Received unknown event type: [
8240.1,
10.20073784,
8241,
15.66815979,
-197.8,
-0.0234,
8240.1,
34479.68118951,
8469.2,
8073
]
03:47:19.62[596]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:19:628 | Warning | Received unknown event type: [
8240.1,
10.20073784,
8241,
15.66815979,
-197.8,
-0.0234,
8240.1,
34479.68118951,
8469.2,
8073
]
03:47:19.65[86]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:19:653 | Warning | Received unknown event type: [
8240.1,
10.20073784,
8241,
15.66815979,
-197.8,
-0.0234,
8240.1,
34479.68118951,
8469.2,
8073
]
03:47:34.70[86]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:34:708 | Warning | Received unknown event type: [
8240.1,
11.26025517,
8240.2,
10.09732421,
-197.8,
-0.0234,
8240.1,
34479.68118951,
8469.2,
8073
]
03:47:34.71[336]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:34:712 | Warning | Received unknown event type: [
8240.1,
11.26025517,
8240.2,
10.09732421,
-197.8,
-0.0234,
8240.1,
34479.68118951,
8469.2,
8073
]
03:47:34.71[269]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:34:716 | Warning | Received unknown event type: [
8240.1,
11.26025517,
8240.2,
10.09732421,
-197.8,
-0.0234,
8240.1,
34479.68118951,
8469.2,
8073
]
03:47:34.71[596]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:47:34:718 | Warning | Received unknown event type: [
8240.1,
11.26025517,
8240.2,
10.09732421,
-197.8,
-0.0234,
8240.1,
34479.68118951,
8469.2,
8073
]
03:48:03.88[596]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:03:887 | Warning | Received unknown event type: [
8240.1,
16.91216406,
8240.2,
35.62725533,
-197.7,
-0.0234,
8240.2,
34480.34364177,
8469.2,
8073
]
03:48:03.88[269]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:03:887 | Warning | Received unknown event type: [
8240.1,
16.91216406,
8240.2,
35.62725533,
-197.7,
-0.0234,
8240.2,
34480.34364177,
8469.2,
8073
]
03:48:03.88[86]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:03:888 | Warning | Received unknown event type: [
8240.1,
16.91216406,
8240.2,
35.62725533,
-197.7,
-0.0234,
8240.2,
34480.34364177,
8469.2,
8073
]
03:48:03.90[336]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:03:909 | Warning | Received unknown event type: [
8240.1,
16.91216406,
8240.2,
35.62725533,
-197.7,
-0.0234,
8240.2,
34480.34364177,
8469.2,
8073
]
03:48:09.74[280]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:09:741 | Warning | No data received for 15 seconds, restarting connection
03:48:09.81[280]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:09:815 | Info | Resetting subscription requests
03:48:14.13[487]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:14:136 | Warning | No data received for 15 seconds, restarting connection
03:48:16.64[113]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:16:640 | Warning | No data received for 15 seconds, restarting connection
03:48:17.06[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:17:064 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:17.78[57]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:17:786 | Info | Socket connection established
03:48:17.78[23]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:17:788 | Info | 0 subscriptions to resend
03:48:17.78[23]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:17:788 | Info | Websocket version: 2, platform status: operational
03:48:17.87[23]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:17:878 | Info | Authentication successful
03:48:17.99[470]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:17:992 | Warning | No data received for 15 seconds, restarting connection
03:48:18.06[470]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:064 | Info | Resetting subscription requests
03:48:18.08[113]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:086 | Info | Socket connection established
03:48:18.09[470]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:091 | Info | 0 subscriptions to resend
03:48:18.09[470]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:091 | Info | Websocket version: 2, platform status: operational
03:48:18.18[470]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:183 | Info | Authentication successful
03:48:18.18[555]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:186 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:18.34[553]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:345 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:18.42[280]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:424 | Info | Socket connection established
03:48:18.42[252]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:424 | Info | 2 subscriptions to resend
03:48:18.43[487]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:433 | Info | Websocket version: 2, platform status: operational
03:48:18.49[252]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:497 | Info | Successfuly (re)subscribed Bitfinex.Net.Objects.SocketObjects.TickerSubscriptionRequest
03:48:18.50[487]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:508 | Info | Authentication successful
03:48:18.57[252]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:571 | Info | Successfuly (re)subscribed Bitfinex.Net.Objects.SocketObjects.TradesSubscriptionRequest
03:48:18.92[555]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:922 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:18.93[310]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:932 | Warning | No data received for 15 seconds, restarting connection
03:48:18.94[310]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:948 | Info | Resetting subscription requests
03:48:18.97[461]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:18:974 | Warning | No data received for 15 seconds, restarting connection
03:48:19.01[553]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:015 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:19.06[461]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:066 | Info | Resetting subscription requests
03:48:19.16[348]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:169 | Warning | No data received for 15 seconds, restarting connection
03:48:19.17[60]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:174 | Warning | No data received for 15 seconds, restarting connection
03:48:19.22[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:227 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:19.25[348]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:254 | Info | Resetting subscription requests
03:48:19.47[269]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:473 | Warning | Received unknown event type: [
8237.7,
15.75575569,
8237.8,
12.62684243,
-200.1,
-0.0237,
8237.8,
34494.17600044,
8469.2,
8073
]
03:48:19.49[86]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:498 | Warning | Received unknown event type: [
8237.7,
15.75575569,
8237.8,
12.62684243,
-200.1,
-0.0237,
8237.8,
34494.17600044,
8469.2,
8073
]
03:48:19.50[336]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:500 | Warning | Received unknown event type: [
8237.7,
15.75575569,
8237.8,
12.62684243,
-200.1,
-0.0237,
8237.8,
34494.17600044,
8469.2,
8073
]
03:48:19.68[596]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:682 | Warning | Received unknown event type: [
8237.7,
15.75575569,
8237.8,
12.62684243,
-200.1,
-0.0237,
8237.8,
34494.17600044,
8469.2,
8073
]
03:48:19.68[555]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:19:684 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:20.70[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:20:703 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:20.78[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:20:784 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:20.88[416]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:20:882 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:21.15[555]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:21:155 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:21.97[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:21:971 | Warning | Server returned an error: ["error",10114,"nonce: small"]
03:48:22.27[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:272 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.28[553]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:287 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.30[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:304 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.32[553]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:322 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.34[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:340 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.35[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:357 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.37[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:377 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.39[553]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:395 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.41[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:414 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.44[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:440 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.56[555]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:564 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.56[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:567 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.62[555]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:625 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.64[553]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:644 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.69[553]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:697 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.69[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:699 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.74[553]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:744 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]
03:48:22.84[2]FATAL:UnobservedTaskExceptio:
System.AggregateException: При ожидании задачи или доступе к ее свойству исключения не были замечены исключения задачи. В результате незамеченные исключения были созданы повторно потоком завершения. ---> System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в Bitfinex.Net.BitfinexSocketClient.b__91_0()
в System.Threading.Tasks.Task.Execute()
--- Конец трассировки внутреннего стека исключений ---
---> (Внутреннее исключение #0) System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в Bitfinex.Net.BitfinexSocketClient.b__91_0()
в System.Threading.Tasks.Task.Execute()<---

03:48:22.84[554]DEBUG:[Bitfinex_v7] API: 2018/07/26 03:48:22:840 | Warning | Server returned an error: ["error", 11010, "ratelimit: error"]

Error deserializing data exception

Hi, I think something has changed in the Bitfinex API, I started getting these errors. I tried 1.0.3 and 1.0.5 - same result.
Here's simple example:

var result = await client.GetOrderHistoryAsync("tIOTUSD");
if (!result.Success)
{
    Console.WriteLine("Error: " + result.Error.Code + "\n" + result.Error.Message);
}
Error: 4
Error deserializing data: Deserialize Unknown Exception: Sequence contains no matching element. Received data: [[11834800778,null,83768609087,"tIOTUSD",1525734969000,1525734968000,10,10,"LIMIT",null,null,null,null,"POSTONLY CANCELED",null,null,2.4,0,0,0,null,null,null,0,0,null,null,null,null,null,null,null]]

problem with parsing 'te' and 'tu' messages on 1.1.2

11:08:43.11[154]DEBUG:[Bitfinex_v7] API: 2018/07/24 11:08:43:118 | Error | Error in processing loop. System.FormatException, Входная строка имела неверный формат., в System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
в System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt)
в CryptoExchange.Net.Converters.TimestampConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
в Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
в Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
в CryptoExchange.Net.Converters.ArrayConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
в Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
в Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
в Newtonsoft.Json.Linq.JToken.ToObject(Type objectType)
в Bitfinex.Net.Objects.SocketObjects.SubscriptionRegistration.Handle(BitfinexEventType type, JArray obj)
в Bitfinex.Net.BitfinexSocketClient.ProcessData(), message: [2,"te",[272098900,1532419722268,-0.1,7996.2]]
11:08:43.13[154]DEBUG:[Bitfinex_v7] API: 2018/07/24 11:08:43:136 | Error | Error in processing loop. System.FormatException, Входная строка имела неверный формат., в System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
в System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt)
в CryptoExchange.Net.Converters.TimestampConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
в Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
в Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
в CryptoExchange.Net.Converters.ArrayConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
в Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
в Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
в Newtonsoft.Json.Linq.JToken.ToObject(Type objectType)
в Bitfinex.Net.Objects.SocketObjects.SubscriptionRegistration.Handle(BitfinexEventType type, JArray obj)
в Bitfinex.Net.BitfinexSocketClient.ProcessData(), message: [2,"tu",[272098896,1532419722258,-0.4,7996.3]]

Candles: Getting only 120 results at a time

Hi,

Using your great lib I can get only 120 results of historical candles, no matter what I put into
GetCandlesAsync params.
But using a direct link Bitfinex is responding with up to 1000 results.
https://api.bitfinex.com/v2/candles/trade:1m:tBTCUSD/hist?start=1514764800000&limit=1000&sort=1

I was trying to put:
-startTime=correct date, endTime=correct date 1000 minutes later, limit=null
-startTime=correct date, endTime=correct date 1000 minutes later, limit=1000
-startTime=correct date, endTime=null, limit=1000
-startTime=correct date, endTime=null, limit=null

Always GetCandlesAsync returns 120 candles at max.

I'm writing charting app, and trying to download some historical candles, back from 2017.01.01.
While Bitfinex is rate-limitting candles about 20 req/minute + 1 minute pause, it's a real pain to wait for more than 650k candles to download :)

Is it possible to get more then 120 results with your lib ?

Thank you !

Error: 10100 - apikey: invalid

Hi there,

I've been trying your library to see if I could retrieve orders history etc because I've been struggling to do so myself but I get APIKey Invalid error.

static async Task Main(string[] args)
    {
            var options = new BitfinexClientOptions()
            {
                ApiCredentials = new ApiCredentials("something", "something")
            };

            using (var client = new BitfinexClient(options))
            {
                var result = await client.GetOrderHistoryAsync("tBTCUSD");
            }
        }

Do you know why this occurs? Tried generating new api keys and testing them as well to no luck.

| Error | Deserialize Unknown Exception: Object reference not set to an instance of an object.. On GetTradeHistory

var tempHistory =
client.GetTradeHistory("tBTCUSD", DateTime.Now.ToUniversalTime().AddDays(-5), DateTime.Now.ToUniversalTime(), 100); or any variation of this I get this in the error object of the result

{4: Error deserializing data: Deserialize Unknown Exception: Object reference not set to an instance of an object.. Received data: [[252952940,"tBTCUSD",1527924973000,12901084933,0.03156876,7666.9,null,null,null,-0.00006314,"BTC"],[252951652,"tBTCUSD",1527924776000,12900995488,0.00477249,7670.1,null,null,null,-0.00000954,"BTC"],[252934984,"tBTCUSD",1527922910000,12900002077,-0.0003054,7658,null,null,null,-0.00467751,"USD"],[252934758,"tBTCUSD",1527922893000,12899973746,0.3869,7658.7,null,null,null,-5.92630206,"USD"],[252927963,"tBTCUSD",1527922562000,12899759854,-0.3865946,7651.3,null,null,null,-5.91590253,"USD"],[252926862,"tBTCUSD",1527922546000,12899737779,0.0000571,7630.5,null,null,null,-0.0008714,"USD"],[252923315,"tBTCUSD",1527922518000,12898670820,-0.3743,7595.5,null,null,null,-2.84299565,"USD"],[252911319,"tBTCUSD",1527919925000,12898597891,0.3742429,7491.5,null,null,null,-5.60728137,"USD"],[252909305,"tBTCUSD",1527919836000,12891715880,-0.3748,7476.05004176,null,null,null,-5.60404711,"USD"],[252863064,"tBTCUSD",1527901152000,12891499578,0.3748,7456.4,null,null,null,-5.58931744,"USD"],[252861654,"tBTCUSD",1527901094000,12890631716,-0.3871,7470.7,null,null,null,-5.78381594,"USD"],[252857537,"tBTCUSD",1527899271000,12890599468,0.3871,7513.6,null,null,null,-5.81702912,"USD"],[252857518,"tBTCUSD",1527899263000,12890595080,0.1818,7513.54525316,null,null,null,-2.73192505,"USD"],[252857024,"tBTCUSD",1527899192000,12890550352,-0.1818,7500.7,null,null,null,-2.72725452,"USD"]]}

Order Subscription - status deserrialization error

Hi.

When I manually close positions on margin account (to reset positions opened by Trading system I'm developing/testing) BitFinex.NET states (in immediate window) :

Couldn't deserialize order status: INSUFFICIENT BALANCE (G1) was: ACTIVE (note:POSCLOSE), PARTIALLY FILLED @ 6123.96104092(-0.07139999)
Couldn't deserialize order status: INSUFFICIENT BALANCE (G1) was: ACTIVE (note:POSCLOSE), PARTIALLY FILLED @ 6123.96104092(-0.07139999)
Couldn't deserialize order status: INSUFFICIENT BALANCE (G1) was: ACTIVE (note:POSCLOSE), PARTIALLY FILLED @ 458.76(-0.7182)
Couldn't deserialize order status: INSUFFICIENT BALANCE (G1) was: ACTIVE (note:POSCLOSE), PARTIALLY FILLED @ 458.76(-0.7182)

Take the first: I manually closed a position of 0.0714 tBTCUSD. Bitfinex system raises an error for insufficient balance (a bitfinex bug, in my opinion) and closes 0.07139999 tBTCUSD keeping the rest as trading fee.
But BitFinex.NET OrderUpdate Subscription is not able to deserialize message.

FillOrKill at off-market price results in PlaceOrder failure

Hi JKorf,

When I call this function:

var placeResult = client.PlaceOrder(OrderType.ExchangeFillOrKill, "tBTCUSD", amt, clientOrderId:OrderID, price:(decimal)price);

I get success if my price results in a fill. But if I place an off-market price (say sell order at 6650 when the bid is 6600), the function waits ConfirmationTimeout and then returned as failed.

If I look at the logs though, it seems the order was placed and an "oc" was received quickly. Why does PlaceOrder consider it a failure then? Logs below.

2018/07/10 17:07:50:044 | Info | Going to place order
2018/07/10 17:07:50:072 | Debug | Sending [0,"on",null,{"type":"EXCHANGE FOK","symbol":"tBTCUSD","amount":"-0.002","price":"6650","cid":0}]
2018/07/10 17:07:50:398 | Debug | Received message: [0,"n",[1531213671928,"on-req",null,null,[14193804016,null,0,"tBTCUSD",null,null,-0.002,-0.002,"EXCHANGE FOK",null,null,null,null,null,null,null,6650,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null],null,"SUCCESS","Submitting exchange fok sell order for 0.002 BTC."]]
2018/07/10 17:07:50:398 | Debug | Received message: [0,"oc",[14193804016,null,0,"tBTCUSD",1531213671877,1531213671901,-0.002,-0.002,"EXCHANGE FOK",null,null,null,0,"FILLORKILL CANCELED",null,null,6650,0,null,null,null,null,null,0,0,0,null,null,"API>BFX",null,null,null]]
2018/07/10 17:07:50:398 | Debug | Processing [0,"n",[1531213671928,"on-req",null,null,[14193804016,null,0,"tBTCUSD",null,null,-0.002,-0.002,"EXCHANGE FOK",null,null,null,null,null,null,null,6650,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null],null,"SUCCESS","Submitting exchange fok sell order for 0.002 BTC."]]
2018/07/10 17:07:50:399 | Debug | Processing [0,"oc",[14193804016,null,0,"tBTCUSD",1531213671877,1531213671901,-0.002,-0.002,"EXCHANGE FOK",null,null,null,0,"FILLORKILL CANCELED",null,null,6650,0,null,null,null,null,null,0,0,0,null,null,"API>BFX",null,null,null]]
2018/07/10 17:07:59:877 | Debug | Received message: [0,"hb"]
2018/07/10 17:07:59:877 | Debug | Processing [0,"hb"]
2018/07/10 17:08:00:072 | Info | Failed to place order

Trailing stop order

How to add a trailing stop order via Bitfinex.NET API? The current version of the PlaceOrder method allows to pass only one price:
PlaceOrder(string symbol, OrderSide side, type, decimal amount, decimal price)

Problem with duplicates when subscribing to trades after SocketClient is started

If I start the SocketClient and then try to subscribe to trades I get an exception:

Error in processing loop. System.InvalidOperationException, Sequence contains more than one matching element, at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) at Bitfinex.Net.BitfinexSocketClient.ProcessData(), message: {"event":"subscribed","channel":"trades","chanId":30,"symbol":"tBCHUSD","pair":"BCHUSD"}

The client expects there to only be one subscription result which would be correct. I will investigate myself and see if I can open a PR.

Will be using this library extensively in all our G&H apps moving forward, so would be nice if we could start a Discord or something where we could discuss more frequently instead of opening issues everytime? (Just a suggestion)

Nuget install error - incompatible with .Net Framework V4.5

Hi, I tried installing with Nuget and got the following error:

Could not install package 'Bitfinex.Net 1.0.19'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.5', but the package does not contain any assembly references or content files that are compatible with that framework

Which framework does this package target?

UnobservedTaskException when placing order

2018/06/28 18:18:12:993 | Debug | Creating request for https://api.bitfinex.com/v1/order/new
18:18:12.99[88]DEBUG:[bitfinex] API: 2018/06/28 18:18:12:993 | Debug | Creating request for https://api.bitfinex.com/v1/order/new
2018/06/28 18:18:13:002 | Debug | Sending signed request to https://api.bitfinex.com/v1/order/new with parameters symbol=btcusd, amount=0.001, price=6113, exchange=bitfinex, side=sell, type=exchange limit,
18:18:13.00[88]DEBUG:[bitfinex] API: 2018/06/28 18:18:13:002 | Debug | Sending signed request to https://api.bitfinex.com/v1/order/new with parameters symbol=btcusd, amount=0.001, price=6113, exchange=bitfinex, side=sell, type=exchange limit,
18:18:13.16[2]FATAL:UnobservedTaskExceptio:
System.AggregateException: A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at Bitfinex.Net.BitfinexSocketClient.d__87.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() at Bitfinex.Net.BitfinexSocketClient.<SubscribeUnsend>d__92.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at Bitfinex.Net.BitfinexSocketClient.<<SocketOpened>b__91_0>d.MoveNext() --- End of inner exception stack trace --- ---> (Inner Exception #0) System.NullReferenceException: Object reference not set to an instance of an object. at Bitfinex.Net.BitfinexSocketClient.<SubscribeAndWait>d__87.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
at Bitfinex.Net.BitfinexSocketClient.d__92.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
at Bitfinex.Net.BitfinexSocketClient.<b__91_0>d.MoveNext()<---

2018/06/28 18:18:13:214 | Warning | Server returned an error: {"message":"Invalid order: minimum size for BTC/USD is 0.002"}
18:18:13.21[43]DEBUG:[bitfinex] API: 2018/06/28 18:18:13:214 | Warning | Server returned an error: {"message":"Invalid order: minimum size for BTC/USD is 0.002"}

Error in processing loop. System.InvalidOperationException

2018/06/21 13:58:18:286 | Error | Error in processing loop. System.InvalidOperationException, Sequence contains more than one matching element, at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable1 source, Func2 predicate)
at Bitfinex.Net.BitfinexSocketClient.ProcessData(), message: {"event":"subscribed","channel":"book","chanId":2246,"symbol":"tBCHBTC","prec":"P0","freq":"F0","len":"25","pair":"BCHBTC"}
13:58:18.28[32]DEBUG:[bitfinex] API: 2018/06/21 13:58:18:286 | Error | Error in processing loop. System.InvalidOperationException, Sequence contains more than one matching element, at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable1 source, Func2 predicate)
at Bitfinex.Net.BitfinexSocketClient.ProcessData(), message: {"event":"subscribed","channel":"book","chanId":2246,"symbol":"tBCHBTC","prec":"P0","freq":"F0","len":"25","pair":"BCHBTC"}

Can we differentiate te from tu messages?

Hi JKorf,

I use the trade updates to track which of my orders were executed and at what price and size. (Orders don't seem to be useful for this purpose as they do not have execution details.)

I see that Bitfinex sends "te" followed by "tu". So I receive two TradeUpdatesHandler(BitfinexTradeDetails[] trade) callbacks that are very similar. To differentiate them, right now, I do that by assuming the BitfinexTradeDetails is "te" if it does not have OrderType (based on my observations of the logs). I only care about "te" since it comes first and already have the details I need.

But that is not safe because there is no guarantee in the specs that this would be the case in future. How do most users track the executed fills and differentiate between te and tu?

WebSocket.PlaceOrder method: ClientOrderID issue

Hi there.

the BitFinex websocket client PlaceOrder method accepts the parameter string clientOrderId .
The BItfinexOrder class defines the same parameter as int64/long.
The V2 websock BitFinex API New Order wants int45 in the parameter cid (unique in the day).
Rest API wants a int.

If in this method :

var placeResult = Bcl.PlaceOrder(OrderType.ExchangeStop, symbol: Ord.Symbol, amount: Ord.Amount, clientOrderId: Ord.ClientOrderId.ToString(), price: Ord.Price);
where: Bcl is a BitfinexSocketClient and Ord is a BItfinexOrder class.

I pass long.ToString (value "67358875" got from debug), I receive Server error: cid: invalid.

What's the correct format to pass ?
Is it a Bug ?

Thanks a lot.

Null reference exception on place order

Occasionally getting this exception on place order. Something to do with a dictionary you are using?

2018-06-06 14:56:25:743 | Debug | Received message: [87,"tu",[254599046,1528322020598,0.13307,605.58]]
Unhandled Exception: System.AggregateException: One or more errors occurred. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at Bitfinex.Net.BitfinexSocketClient.<>c__DisplayClass62_0.b__0()
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
at Bitfinex.Net.BitfinexSocketClient.d__62.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
2018-06-06 14:56:25:772 | Debug | Received message: [0,"n",[1528322020814,"on-req",null,null,[13042123129,null,1152813656,"tETHUSD",null,null,0.2778,0.2778,"STOP",null,null,null,null,null,null,null,612.49,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null],null,"SUCCESS","Submitting stop buy order for 0.2778 ETH."]]
2018-06-06 14:56:25:772 | Debug | Received message: [0,"on",[13042123129,null,1152813656,"tETHUSD",1528322020794,1528322020816,0.2778,0.2778,"STOP",null,null,null,0,"ACTIVE",null,null,612.49,0,null,null,null,null,null,0,0,0,null,null,"API>BFX",null,null,null]]

No subscriptions to resend on 1.1.1

There is a problem with subscriptions resend after losing a connection.
Lib says there are no subscriptions to resend, while there is one.

| Warning | No data received for 15 seconds, restarting connection
2018-07-19 11:47:10:594 | Info | Socket connection established
2018-07-19 11:47:10:599 | Info | Websocket version: 2, platform status: operational
2018-07-19 11:47:10:606 | Info | 0 subscriptions to resend

But sometimes it does resend subscriptions, throwing InvalidOperationException on linq's method.
Sorry I didn't copy that exception, but it was something with a loop and multiple elements while expecting single element.

Problem to subscribe to "bchbtc"

version of library is latest.

18:13:36.60[46]DEBUG:[bitfinex] API: 2018/06/28 18:13:36:579 | Warning | No data received for 15 seconds, restarting connection
18:13:36.63[30]ERROR:AfterConnect:
System.AggregateException: One or more errors occurred. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at Bitfinex.Net.BitfinexSocketClient.d__87.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at Bitfinex.Net.BitfinexSocketClient.d__79.MoveNext()

Limit with OCO generates a group order with two orders in it, but PlaceOrder will only return one order

Placing OCO orders on Bitfinex generates two orders, e.g. Limit and Stop, that are grouped (GroupId) but when placing an order I only get the first order returned. Is there a way for the method to return both instead of me having to subscribe to order updates and match up?

2018/07/31 11:25:13:487 | Info | Going to place order
2018/07/31 11:25:13:506 | Debug | Sending [0,"on",null,{"type":"MARKET","symbol":"tEOSUSD","amount":"2.051030","price":"0","cid":3546870459106757}]
2018/07/31 11:25:13:629 | Debug | Received message: [0,"n",[1533029112779,"on-req",null,null,[14915345706,null,3546870459106757,"tEOSUSD",null,null,2.05103,2.05103,"MARKET",null,null,null,null,null,null,null,7.3035,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null],null,"SUCCESS","Submitting market buy order for 2.05103 EOS."]]
2018/07/31 11:25:13:632 | Debug | Processing [0,"n",[1533029112779,"on-req",null,null,[14915345706,null,3546870459106757,"tEOSUSD",null,null,2.05103,2.05103,"MARKET",null,null,null,null,null,null,null,7.3035,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null],null,"SUCCESS","Submitting market buy order for 2.05103 EOS."]]
2018/07/31 11:25:13:635 | Debug | Received message: [0,"oc",[14915345706,null,3546870459106757,"tEOSUSD",1533029112766,1533029112785,0,2.05103,"MARKET",null,null,null,0,"EXECUTED @ 7.3134(2.05103)",null,null,7.3035,7.3134,null,null,null,null,null,0,0,0,null,null,"API>BFX",null,null,null]]
2018/07/31 11:25:13:637 | Debug | Received message: [0,"pu",["tEOSUSD","ACTIVE",2.05103,7.3134,0,null,null,null,null,null]]
2018/07/31 11:25:13:637 | Debug | Processing [0,"oc",[14915345706,null,3546870459106757,"tEOSUSD",1533029112766,1533029112785,0,2.05103,"MARKET",null,null,null,0,"EXECUTED @ 7.3134(2.05103)",null,null,7.3035,7.3134,null,null,null,null,null,0,0,0,null,null,"API>BFX",null,null,null]]
2018/07/31 11:25:13:688 | Debug | Processing [0,"pu",["tEOSUSD","ACTIVE",2.05103,7.3134,0,null,null,null,null,null]]
2018/07/31 11:25:13:693 | Info | Order placed
2018/07/31 11:25:13:762 | Info | Going to place order
2018/07/31 11:25:13:808 | Debug | Sending [0,"on",null,{"type":"LIMIT","symbol":"tEOSUSD","amount":"-2.051030","price":"7.386534","price_oco_stop":"7.26586290","flags":16384,"cid":6397157565268897}]
2018/07/31 11:25:13:813 | Info | Subscribing to trade updates for tEOSUSD
2018/07/31 11:25:13:815 | Debug | Sending {"symbol":"tEOSUSD","event":"subscribe","channel":"trades"}
2018/07/31 11:25:13:851 | Debug | Received message: [0,"pu",["tEOSUSD","ACTIVE",2.05103,7.3134,0,0,null,null,null,null]]
2018/07/31 11:25:13:896 | Debug | Processing [0,"pu",["tEOSUSD","ACTIVE",2.05103,7.3134,0,0,null,null,null,null]]
2018/07/31 11:25:13:962 | Debug | Received message: {"channel":"trades","symbol":"tEOSUSD","event":"error","msg":"subscribe: dup","code":10301,"pair":"EOSUSD"}
2018/07/31 11:25:13:985 | Debug | Received message: [0,"n",[1533029113135,"on-req",null,null,[14915345868,null,6397157565268897,"tEOSUSD",null,null,-2.05103,-2.05103,"LIMIT",null,null,null,null,null,null,null,7.3865,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null],null,"SUCCESS","Submitting limit sell order for 2.05103 EOS."]]
2018/07/31 11:25:14:007 | Debug | Processing {"channel":"trades","symbol":"tEOSUSD","event":"error","msg":"subscribe: dup","code":10301,"pair":"EOSUSD"}
2018/07/31 11:25:14:028 | Debug | Received message: [0,"on",[14915345869,null,33913107787,"tEOSUSD",1533029113109,1533029113130,-2.05103,-2.05103,"STOP",null,null,null,16384,"ACTIVE",null,null,7.2658,0,null,null,null,null,null,0,0,14915345868,null,null,"",null,null,null]]
2018/07/31 11:25:14:050 | Debug | Processing [0,"n",[1533029113135,"on-req",null,null,[14915345868,null,6397157565268897,"tEOSUSD",null,null,-2.05103,-2.05103,"LIMIT",null,null,null,null,null,null,null,7.3865,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null],null,"SUCCESS","Submitting limit sell order for 2.05103 EOS."]]
2018/07/31 11:25:14:073 | Debug | Received message: [0,"on",[14915345868,null,6397157565268897,"tEOSUSD",1533029113104,1533029113130,-2.05103,-2.05103,"LIMIT",null,null,null,16384,"ACTIVE",null,null,7.3865,0,null,null,null,null,null,0,0,14915345869,null,null,"API>BFX",null,null,null]]
2018/07/31 11:25:14:096 | Debug | Processing [0,"on",[14915345869,null,33913107787,"tEOSUSD",1533029113109,1533029113130,-2.05103,-2.05103,"STOP",null,null,null,16384,"ACTIVE",null,null,7.2658,0,null,null,null,null,null,0,0,14915345868,null,null,"",null,null,null]]
2018/07/31 11:25:14:121 | Debug | Processing [0,"on",[14915345868,null,6397157565268897,"tEOSUSD",1533029113104,1533029113130,-2.05103,-2.05103,"LIMIT",null,null,null,16384,"ACTIVE",null,null,7.3865,0,null,null,null,null,null,0,0,14915345869,null,null,"API>BFX",null,null,null]]
2018/07/31 11:25:14:123 | Info | Order placed

CryptoExchange.Net.Interfaces.IWebsocket Not found

Hi,

After upgrading CryptoExchange.Net to 0.0.23
WebSocket stopped working, throwing

System.MissingMethodException: 'Method not found: 'CryptoExchange.Net.Interfaces.IWebsocket CryptoExchange.Net.Interfaces.IWebsocketFactory.CreateWebsocket(System.String)'.'

This throws only on .net 4.7, on .net core it's working as usual.

Same on 0.0.22.
0.0.21 is ok.

Websocket SubscribeToBookUpdates

Hello,
I dont understand correctly how to use the SubscribeToBookUpdates Websocket... and i dont find any example how to use correctly the websockets..

            var options = new BitfinexSocketClientOptions()
            {
                ApiCredentials = new ApiCredentials(KEY, SECRET)
            };

            var client = new BitfinexSocketClient(options);
            var tickerSub = await client.SubscribeToBookUpdates("tBTCUSD", 0, 0, 10, data =>
            {
                AppendTextBox("Ticker update");
            });

How i can use now the Orderbook with "Updates" (Price, Amount, Total) in a listbox in a neverending while with resub/reconnecting?
The other Question, is it better to use multiple Tasks for each Pair or can handle a Task 10 Pairs?
and the last Question, the frequency 0 = realtime updates? (i hope yes)
thank you

Stop-Limit Order

Hi there.
Two questions:

  1. There is a way to insert Stop-Limit Order ? Order.enum does'nt seem to have a stopLimit value.
  2. What's the difference between ExhangeLimit and Limit, ExhangeStop-Stop ?

Thank you
BTW : You did really a great job with the library.

GetActivePositionsAsync returning NullReferenceException

I traced down the error and it's coming from BaseConverter.ReadJson in CryptoExchange project.
Here's the stack trace:
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=CryptoExchange.Net
StackTrace:

at CryptoExchange.Net.Converters.BaseConverter`1.<>c__DisplayClass5_0.<ReadJson>b__0(KeyValuePair`2 v) in \CryptoExchange.Net\Converters\BaseConverter.cs:line 28
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at CryptoExchange.Net.Converters.BaseConverter`1.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in C:\Users\Ahd-w10\source\repos\CryptoExchange.Net\Converters\BaseConverter.cs:line 32
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)

Getting balance

Hi, thanks for the work with your APIs.

I'm having an issue using the bitfinex API getting balance. Why is the function asking for a side (buy or sell) and rate? We are just looking for symbol balances?
thanks

image

Bitfinex Disconnections-Reconnections

Bitfinex.NET connects and reconnects to Bitfinex at least once per day, sometime many times a day.
I get it because I log the events BitfinexSocketClient.ConnectionLost and BitfinexSocketClient.ConnectionRestored.

Sometimes Bitfinex.NET reconnects but the candle subscription (opened at startup with BitfinexSocketClient.SubscribeToCandleUpdates ) is not restored.

I thought about a timer to detect if data is still arriving and, if not, close-reopen connection from scratch.
Is there a better way to deal with the issue ?

P.S.: my machine is in a datacenter with 99.9 connectivity SLA, so connections/reconnections are probably originated from Bitfinex endpoint and inherent to their service.

Application freezes when an authenticated method is called

i'm doing some tests with my application,

when i set the api credentials, and call, for istance, GetWalletsAsync()
the entire application hangs and get stuck,
i noticed it worked fine just the first time.

apparently it get stucks on this line :
using (var stream = request.GetRequestStream().Result)
on BitfinexClient.cs , line 852

i checked my api key on the website and it seems to be working fine.

the code is the same you provided:

BitfinexClient.SetDefaultOptions(new BitfinexClientOptions(){
    ApiCredentials = new ApiCredentials("APIKEY", "APISECRET")
});
using(var client = new BitfinexClient())
{
    var walletResult = client.GetWallets();
    if(!walletResult.Success)
       Console.WriteLine("Error: " + walletResult.Error);
    else
    {
        foreach(var wallet in walletResult.Data)
            Console.WriteLine(wallet.Currency + ": " + wallet.Balance);
    }
}

please help me, what i have to check?

Will BitfinexSocketClient's ProcessSending() and ProcessData() wait a maximum of 100ms?

Looking at the code, I see this:

private void ProcessSending()
{
    while (running)
    {
        while (toSendMessages.TryTake(out string data, TimeSpan.FromMilliseconds(100)))
        {
            log.Write(LogVerbosity.Debug, "Sending " + data);
            socket.Send(data);
        }
    }
}

and

private void ProcessData()
{
    while (running)
    {
        var received = receivedMessages.TryTake(out string dequeued, TimeSpan.FromMilliseconds(100));
        if (!received)
   ...

Will the TryTake(x, 100ms) cause delays to PlacingOrder and receiving market data?

Bitfinex Withdrawals

Hi @JKorf -- nice libraries :) I'm using your Bittrex lib, but noticed that those guys charge a lot for withdrawals to off-exchange wallets.

Any plans to add withdrawal support to your Bitfinex library? Apologies if I missed it, but can't see any methods to do that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.