coinapi / coinapi-sdk Goto Github PK
View Code? Open in Web Editor NEWSDKs for CoinAPI
Home Page: https://docs.coinapi.io/
License: MIT License
SDKs for CoinAPI
Home Page: https://docs.coinapi.io/
License: MIT License
"params.time" should be "params.time_end" at
coinapi-sdk/javascript-rest/coinapi_v1.js
Line 107 in 933bce9
Hi,
I would like to suggest to use concurrentQueue instead of Queue and remove the lock for faster receiving of data and this will prevent from timing out or disconnecting from the Websocket Server.
ConcurrentQueue is thread-safe and you can have multiple threads doing enqueue and dequeue at the same time, giving it more better performance rather than using 1 lock for enqueue and dequeue.
Is there a way to modify the _hbTimeout as configurable? It looks like the 10 secs is very fragile and we are hitting always the operation cancelled exception.
Details:
Message: The operation was canceled.
Exception type: System.OperationCanceledException
Failed method: CoinAPI.WebSocket.V1.WSUtils+<ReceiveMessage>d__1.MoveNext
Stack Trace:
System.OperationCanceledException:
at System.Threading.CancellationToken.ThrowOperationCanceledException (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Net.WebSockets.WebSocketConnectionStream+d__21.MoveNext (System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Net.WebSockets.WebSocketBase+WebSocketOperation+d__19.MoveNext (System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Net.WebSockets.WebSocketBase+d__45.MoveNext (System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Runtime.CompilerServices.TaskAwaiter1.GetResult (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at CoinAPI.WebSocket.V1.WSUtils+<ReceiveMessage>d__1.MoveNext (CoinAPI.WebSocket.V1, Version=1.6.7.0, Culture=neutral, PublicKeyToken=null) at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Runtime.CompilerServices.TaskAwaiter
1.GetResult (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at CoinAPI.WebSocket.V1.CoinApiWsClient+d__45.MoveNext (CoinAPI.WebSocket.V1, Version=1.6.7.0, Culture=neutral, PublicKeyToken=null)
Trying to start the OEML docker container according to the manual,
but no matter what I try, the container hangs in a crashloop.
On Windows (Powershell)
Using the parameter, as documeted.
docker run -d --name=BINANCE --restart=always --net=host coinapi/oeml-api --OEML:ExchangeId BINANCE --OD:PublicApiKey key_string --OD:PrivateApiKey key string --CoinAPI:ApiKey key_string
Using config file, as documented:
docker run -d --name=BINANCE --restart=always --net=host coinapi/oeml-api --env-file oeml.env
oeml.env was created using:
cat > oeml.env << EOF
OEML__ExchangeId=BINANCE
CoinAPI__ApiKey=key_string
OD__PublicApiKey=key_string
OD__PrivateApiKey=key_string
EOF
key_string does not contain any whitespaces nor underscores.
From the documentation,
Docker_Error_Log.txt
key / value pairs for env. variable must be:
Which I translate to:
KEY__ID=VALUE
However, the above format seems to trigger an exception when trying to parse the key/value string.
When printing out the docker logs, I see the following exception :
shutting down...
TODO - ThreadedSocketAcceptor.WaitForLogout not implemented!
[03:42:17 FTL] Host terminated unexpectedly
System.FormatException: Unrecognized Guid format.
at System.Guid.GuidResult.SetFailure(Boolean overflow, String failureMessageID)
at System.Guid.TryParseGuid(ReadOnlySpan`1 guidString, GuidResult& result)
at System.Guid.Parse(String input)
at CoinAPI.OEML.API.LicenseService.CreateApikeyUsageOEML() in /src/CoinAPI.OEML.API/LicenseService.cs:line 131
Practically speaking, how do I format the API keys to get the service up & running?
Thank you
Tried testing the coinapi sdk for websocket. Followed the one in the repo, and able to get the log connected already but no data is received in TradeEvent. Are there other examples to follow?
Code I used:
` Hello helloMessage = new Hello()
{
apikey = Guid.Parse("api key"),
subscribe_data_type = new string[] { "trade" },
subscribe_filter_symbol_id = new string[] { "COINBASE_"},
subscribe_filter_exchange_id = new string[] { "COINBASE" }
};
using (CoinApiWsClient wsClient = new CoinApiWsClient(true))
{
wsClient.TradeEvent += (s, e) =>
{
try
{
Debug.WriteLine($"{e.ToString()}");
Debug.WriteLine($"{s.ToString()}");
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
};
wsClient.Error += (s, e) =>
{
Debug.WriteLine($"e.InnerException, CoinApi Websocket - Error: {e.Message}");
};
wsClient.SendHelloMessage(helloMessage);
if (wsClient.ConnectedEvent.WaitOne(TimeSpan.FromSeconds(5)))
{
Debug.WriteLine("Connected already");
}
} `
curl https://rest.coinapi.io/v1/assets --request GET --header "X-CoinAPI-Key: key"
[
{
"asset_id": "BTC",
"name": "Bitcoin",
"type_is_crypto": 1,
"data_start": "2010-07-17",
"data_end": "2018-05-01",
"data_quote_start": "2014-02-24T17:43:05.0000000Z",
"data_quote_end": "2018-04-30T23:06:35.4455119Z",
"data_orderbook_start": "2014-02-24T17:43:05.0000000Z",
"data_orderbook_end": "2018-04-30T23:06:35.4455119Z",
"data_trade_start": "2010-07-17T23:09:17.0000000Z",
"data_trade_end": "2018-05-01T05:00:40.0000000Z",
"data_trade_count": 4083899375,
"data_symbols_count": 6235
},
This makes go-rest Asset
error:
type Asset struct {
Asset_id string `json:"asset_id"`
Name string `json:"name"`
Type_is_crypto bool `json:"type_is_crypto"`
}
When I using the free key request the BTC data,returned data have a lot of redundant commas ,like this.
{
"time_period_start": "2019-08-25T12:00:00.0000000Z",
"time_period_end": "2019-08-25T13:00:00.0000000Z",
"time_open": "2019-08-25T12:00:07.5240000Z",
"time_close": "2019-08-25T12:59:47.2180000Z",
"price_open": 1013,0.000000000, // here
"price_high": 10355.890000000,
"price_low": 10113.180000000,
"price_close": 10317.010000000,
"volume_traded": 478.267948660,
"trades_count": 869
},
{
"time_per,iod_start": "2019-08-25T14:00:00.0000000Z", // here
"time_period_end": "2019-08-25T15:00:00.0000000Z",
"time_open": "2019-08-25T14:00:10.1020000Z",
"time_close": "2019-08-25T14:59:36.9410000Z",
"price_open": 10260.570000000,
"price_high": 10272.000000000,
"price_low": 9977.240000000,
"price_close": 10050.000000000,
"volume_traded": 526.659400560,
"trades_count": 1159
},
{
"time_period_start": "2019-08-25T15:00:00.0000000Z",
"time_period_end": "2019-08-25T16:00:00.0000000Z",
"time_open": "2019-08-25T15:00:17.431,0000Z", // here
"time_close": "2019-08-25T15:59:27.2940000Z",
"price_open": 10050.000000000,
"price_high": 10109.750000000,
"price_low": ,10043.290000000, // here
"price_close": 10062.280000000,
"volume_traded": 145.783488210,
"trades_count": 328
}
I downloaded all the assets available on coinapi just now using this URL: https://rest.coinapi.io/v1/assets.
Here is the raw JSON for IOTA (MIOTA):
{
"asset_id": "IOTA",
"name": "MIOTA",
"type_is_crypto": 1,
"data_start": "2017-06-13",
"data_end": "2018-08-23",
"data_quote_start": "2017-06-13T16:51:17.1775282Z",
"data_quote_end": "2018-08-23T21:03:51.0029903Z",
"data_orderbook_start": "2017-06-13T16:51:17.1775282Z",
"data_orderbook_end": "2018-08-23T21:03:51.0029903Z",
"data_trade_start": "2017-06-13T16:51:20.0000000Z",
"data_trade_end": "2018-08-23T21:05:37.0000000Z",
"data_trade_count": 27072757,
"data_symbols_count": 25
},
Note that coinapi is claiming that the asset_id (i.e. symbol) is IOTA while the name is MIOTA.
I think that that is reversed!
For example, checkout this page: https://coinmarketcap.com/currencies/iota/. Note how it puts MIOTA in parentheses, which is what coinmarketcap does for ids, not names.
Of all the assets that downloaded from coinapi, I checked the top 10 crypto currencies by market cap, and only IOTA has this error.
How would one achieve retrieving data from the API using Rust?
Issue related to PR #108
Requesting data streams using Golang works for all message types except volume data. When constructing a hello message requesting only volume data, the connection terminates with error 1006. It is unclear to me why all other data types work as expected while requesting volume continues to throw that error. I am still investigation this error, but any help to fix this would be apricated.
An isolated test replicating this issue is part of the PR.
#108
Hello,
I was looking through the NodeJS SDK that we use and I realized that it doesnt use keep alive.
Is it an oversight ? Does this API support keep alive with HTTP 1.1 to do parallel requests ?
Our infra is deployed on Azure and we are trying the reduce the number of outbound connections to prevent SNAT port exhaustions.
Thank you,
https://github.com/coinapi/coinapi-sdk/blob/dev/data-api/csharp-rest/CoinAPI.REST.V1/CoinApiRestClient.cs
Why all requests are sync? while in GetData you use GetAsync but take result from it, please use async/await because its impossible to use this nuget like this
Hi there,
Can you please share example R code to get historic data for a crypto?
Many thanks,
The sole Java API class java_rest_coin_api uses an old class, java.sql.Timestamp, to represent all time instances.
That is a strange choice: this API does no interaction with databases at all, so why use a class from java.sql?
Java 8 introduced a new time API that blows away the old Java classes in every way I know of. If you are unfamiliar, check out this introduction..
In java_rest_coin_api, I think that every current use of Timestamp should be replaced by the new Java time API class Instant.
The transformer negates the status.
Hello,
Any ideas why this happens?
Error:
PHP Fatal error: Uncaught Error: Wrong parameters for Exception([string $message [, long $code [, Throwable $previous = NULL]]]) in /coinapi.inc.php:379
Stack trace:
#0 /coinapi.inc.php(379): Exception->__construct(Object(stdClass))
#1 /coinapi.inc.php(311): CoinAPI->CurlRequest('https://rest.co...')
#2 /getLatest.php(17): CoinAPI->GetTwitterLatest(200)
#3 {main}
thrown in /coinapi.inc.php on line 379
Code:
require_once('coinapi.inc.php');
$api_key = "myAPIkeyHere";
$period_id = '1HRS';
$time_start = (new DateTime())->modify('-7 days');
$time_end = (new DateTime())->modify('-5 days');
$limit = 200;
$capi = new CoinAPI($api_key);
foreach($capi->GetTwitterLatest($limit) as $data) {
echo $data->id;
}
Thank you in advance.
Is there a reason that the c# version is released as a console application instead of a class library? Presumably anyone who wants to use it is going to have to customize it into a class library and make the class "CoinApi" public if that actually want to use it.
The Java API essentially has but a single top level class, namely, java_rest_coin_api.
(There is also a top level test class, java_rest_coin_api_test.java, which shows how to use the API.)
That single top level class, however, has tons of inner classes/enums like asset, exchange, etc.
I see no reason why all these inner objects are defined inside the same top level class. They are fundamental domain objects, therefore, each should be pulled out into its own top level class.
I quickly glanced at the csharp-rest directory in the coinai .zip file, and I see that has proper top level classes for stuff. Java is no different than C# in regards to how you should nest your classes, so why does the Java API have this unconventional design?
It is an annoying design because you now need to refer to classes with really long unreadable names like "java_rest_coin_api.timedata" when you should just be able to use "timedata".
Also, that java_rest_coin_api class is in the default (unnamed) package, but it should probably be in a named package like "com.coinapi" or something.
I have Java code which uses the coinapi Java code to download market data every day.
In particular, I use its java_rest_coin_api class.
The relevant part of my download code that uses coinapi are these 2 lines:
java_rest_coin_api c = new java_rest_coin_api(KEY);
java_rest_coin_api.timedata[] result = c.ohlcv_get_historical_timeseries(symbol_id, period_id, time_start, time_end, limit);
The time_start arg that I supply is always the java.sql.Timestamp that represents the next interval start time AFTER the last interval that I previously downloaded the day before.
The time_end arg that I supply is always the Timestamp that represents 2222-01-01T00:00:00Z (i.e. a far distant future time).
This protocol should ensure that I download all the recent data that I am missing up to BUT NOT BEYOND the present.
When I ran my download at ~21:00 EDT (i.e. about 45 minutes ago), the download for 1 hour intervals for binance BTC/USDT behaved as expected.
In particular, the start time of the last interval downloaded was 2018-07-27T01:00:00Z. That time is a UTC timezone value that corresponds to 21:00 EDT. It is UTC because coinapi says that it always uses that timezone: "All time values we provide are UTC time zone. Do not assume otherwise." See: https://docs.coinapi.io/#time
In contrast, when I immediately ran the same code to download coinbase BTC/USD data, it behaved incorrectly.
In particular, the start time of the last interval downloaded was 2018-07-27T05:00:00Z. That date is 5 hours in the future, so it is obviously wrong!
Does anyone know what is going on?
My guess: coinapi is incorrectly converting coinbase timestamps. In particular, coinapi is assuming that the raw values it is getting from coinbase are in UTC−04:00 when in fact they are actually already in UTC. So, coinapi is mistakenly adding 4 hours to them to convert them to what it thinks should be UTC.
If true, this indicates a serious bug in coinapi's internal code: they failed to write a DBC ("Design By Contract") check to insist that market data times can NEVER be in the future (barring small clock skew differences).
First off, thank you for providing such a diverse collection of API wrappers!
Would it be possible to push the coinapi python-rest
wrapper to https://pypi.org/ ?
Thanks again!
Hi Guys,
I've put together an R package for the REST API - https://github.com/Ramshreyas/rcoinapi
The aim is to mimic Quantmod response objects (basically the OHLCV data), so that existing functionality can be brought to bear with minimum effort.
Feedback most welcome!
Can you please release a NuGet package for the C# API?
It will make the api consumption easier. I am happy to help with a PR if needed.
Hi we have just found out that the c# websocket sdk is referencing the https://github.com/neuecc/Utf8Json/issues library, upon checking the latest version of this library contains a lot of issues and bugs, did you guys make a forked version of this or do you just use the latest version from the original repo?
Can I not use Pip to install this module?
I think this print will make a diversion especially when get a list of messages.
I just made a request using the requests python module and received data, but when I try and just use the SDK bindings for the endpoints it just gets stuck. So there is definitely something wrong with the SDK itself.
I have implemented the CoinAPI SDK websocket client for C# - having some issues with subsequent SendHello messages to update the subscribed trade update symbols.
The initial SendHelloMessage works and i receive updates for any symbols contained in subscribe_filter_symbol_id. But if I try to update my subscriptions with new symbols via a subsequent SendHello it seems to be ignored and I continue receiving trade updates for the original subscribe_filter_symbol_id list.
The sole Java API class java_rest_coin_api has a method named get_json that has 2 local variables, client and response, that are resources that should always be immediately closed.
Failure to close these resources in the current official version of get_json initially caused my Java programs to hang (never end naturally) until I fixed these bugs.
The hack rewrite of get_json that I came up with is:
private String get_json(String url) throws IOException, exception {
OkHttpClient client = new OkHttpClient();
//RequestBody body = RequestBody.create(null, new byte[0]); // no need to create, since it is only used in a commented out .post line below
Request request = new Request.Builder()
.url("https://rest.coinapi.io" + url)
//.post(body)
.addHeader("X-CoinAPI-Key", key)
.build();
//System.out.println(request.url().toString());
try ( Response response = client.newCall(request).execute() ) { // you MUST always immediately close response, easiest way is like this; see https://square.github.io/okhttp/3.x/okhttp/okhttp3/ResponseBody.html
if (response.code() >= 400) {
String error = "Error code " + response.code();
try {
JSONObject object = new JSONObject(response.body().string());
error = object.getString("error");
} catch (Exception ex) {
}
throw new exception(response.code(), error);
}
return response.body().string();
}
finally {
client.dispatcher().executorService().shutdown();
client.connectionPool().evictAll();
//client.cache().close(); // only call this if client was created with a cache; the one above was NOT
}
}
I am almost totally unfamiliar with the OkHttp library being used inside this method, so this code should be scrutinized by someone who does know that library.
The way that I close client above is discussed in this link.
An alternative approach is that when request is created, you could add .header("Connection", "close").
That link also mentions that client is meant to be shared--each instance has its own connection and thread pools--so having it be a local variable is a performance mistake. It should be a field of some top level class. If you do this, you may need to add a shutdown hook that calls those methods above to close client at that point.
Android Studio just does not wish to see the package. I tryed to add is as zip, folder and a folder that contains only java code
https://github.com/coinapi/coinapi-sdk/blob/dev/data-api/csharp-rest/CoinAPI.REST.V1/CoinApiRestClient.cs
in "private T GetData(string url)" :
is this some testing code in library? and its pushed to nuget?
Hello, would like to bring up this issue where the error maximum allowed buffered messages is received.
For our procedure, we are purely enqueueing (using ConcurrentQueue) the data received from websocket under Trade message and still receiving the mentioned error.
It should also be noted that we are not doing any processing and just purely receiving data. Also when using ConcurrentQueue, it can process 1 million data in around 20 milliseconds, so it shouldn't cause a bottleneck when processing data received.
For the datacenter, we are using Azure VM and that the network bandwidth is very high and is located in Singapore Region.
Edit: Additional Question: What does the error "The operation was canceled." mean when it is received?
When calling some methods from the SDK, like Client#exchange_rates_get_specific_rate
, there are some edge cases - in particular, the test API Key has no access to the "specific exchange rate" endpoint, so it gets a 403.
But the method still tries to parse the date before returning the object, which results in an obscure "nil can't be parsed" sort of error.
Many such details exist.
Does the SDK intend to pass the message object with the error?
Hi it would be nice if
coinapi-sdk/javascript-rest/coinapi_v1.js
Line 220 in 56aca0b
was something like
var path = this.url + ("/v1/orderbooks/current?filter_symbol_id=" + symbol_id);
to allow filtering by multiple symbols
I am not able to pull any result using the symbol 'HUOBI_SPOT_ETH_USDT'. However, 'HUOBIPRO_SPOT_ETH_USDT' works fine. I'm wondering why is that. Could anyone look into this? Many thanks!
I'm trying to use the java api and getting OHLCV historical data using the method ohlcv_get_historical_timeseries
provided by the class io.coinapi.rest.REST_methods
but the method needs the period of the time-series data to fetch. This argument is of the type io.coinapi.rest.Period_identifier
which is not public and cannot be accessed from outside packages and results in compile errors if accessed and there's no way of calling this method!
I was wondering if I'm the first person who used this java api, since this code is committed around 10 months ago. Anyways is there something that I'm missing or this issue is really a problem?
P.S.
Apart from not sticking to Java naming conventions and some other structural problems of the code, the maven package with version 1.13 as mentioned in the documentation does not exist in maven central repository and I ended up using the version 1.2, however it seems it's the same code as the Git repo.
the windows 2016 sever,ECS, in HongKong,sometimes can not receive websocket BTCUSDT trades message,while LTCUSDT is ok,by the way,no problem with local testing
CoinAPI provides OEML as REST, websocket & FIX and yet only a generated REST API is available.
Are there plans for an OEML socket streaming SDK similar to the ones listed for the data web streaming?
Related to that, OEML has been labeled as "public beta", is there a rough ETA for release i.e. Q4 or next year?
CoinAPI provides data on request limits, exchanges used in aggregation of OHLCV data, and possibly more that I'm not aware of in the response headers. As far as I can see, the response header is currently neither parsed nor stored. I think it would be good to capture that information, either by parsing it for the relevant request or by just giving the CoinAPIv1
class an attribute response_header
and leaving it to the user to parse it. I have only looked at the Python SDK, but I imagine the other languages are similar.
Do you think this makes sense generally and one of the implementations above specifically? If so, I'm happy to make a PR for the Python SDK.
Hi i have a question can i use this api with Unity3d software somehow?
Please guide?
thanks
Hi thank YOU, This is the thing i was looking for 2 days now i have found it.
I have a slight problem can you tell me how i can get the price only from this api
https://min-api.cryptocompare.com/data/pricemulti?fsyms=BTC,ETH&tsyms=USD,EUR&api_key=2854a5c3399c288c9183d204216c9c5d706e7d55bb64cd5a67eda10db684a574
https://min-api.cryptocompare.com/documentation?key=Price&cat=multipleSymbolsPriceEndpoint&api_key=2854a5c3399c288c9183d204216c9c5d706e7d55bb64cd5a67eda10db684a574
Please help me.
thanks
I have tried using HTTPoison, for example:
iex(10)> HTTPoison.get "http://www.ibm.com"
{:ok,
%HTTPoison.Response{
body: "",
headers: [
{"Server", "AkamaiGHost"},
{"Content-Length", "0"},
{"Location", "https://www.ibm.com/"},
{"Date", "Fri, 16 Mar 2018 23:15:37 GMT"},
{"Connection", "keep-alive"},
{"X-Content-Type-Options", "nosniff"},
{"X-XSS-Protection", "1; mode=block"},
{"Content-Security-Policy", "upgrade-insecure-requests"}
],
request_url: "http://www.ibm.com",
status_code: 301
}}
No problemo. But:
iex(10)> HTTPoison.get "http://v1/exchangerate/BTC?apikey=MYAPIKEY"
{:error, %HTTPoison.Error{id: nil, reason: :nxdomain}}
iex(11)> HTTPoison.get "/v1/exchangerate/BTC?apikey=MYAPIKEY"
** (CaseClauseError) no case clause matching: []
(hackney) /home/tbrowne/code/crypto/deps/hackney/src/hackney_url.erl:192: :hackney_url.parse_netloc/2
(hackney) /home/tbrowne/code/crypto/deps/hackney/src/hackney.erl:331: :hackney.request/5
(httpoison) lib/httpoison/base.ex:439: HTTPoison.Base.request/9
Do you have something for Erlang or Elixir in the pipeline? I know for sure Erlang is used quite heavily in finance, and Elixir is gaining traction. Obviously I have changed MYAPIKEY to my real API key.
Hey,
I am learning android development, just want to try to showing users a list of crypto-currency , Is there anyway you could provide example how to get the info?
Thanks.
PS
this API is cool
Environment:
OS: Linux Mint 20.1
Kernel: 5.4.0-80-generic
CPU: Intel© Core™ i7-2600K CPU @ 3.40GHz × 4
Mem: 24 GB
I'm testing the Go websocket client, but are having some issues. When subscribed to all trades (production feed):
110-120%
Unexpected EOF
or being closed because too many messages are buffered by the sender.When running the C# websocket client (targeting net5.0) on the same environment and subscribing to all trades, the CPU usage is ~20-40%
and it seems to be more stable.
When running the Python websocket client on the same environment, the CPU usage is ~35-50%
I would have assumed the Go client to be at least as efficient as the C# client and more efficient than Python. Any thoughts on this?
Hello folks,
Here is my commands list
cd <project>
virtualenv <project_env>
source ./<project_env>/bin/activate
pip3 install coinapi.rest.v1 # no issue here
git clone https://github.com/coinapi/coinapi-sdk/data-api/python-rest/coinapi_rest_v1
cd <coinapi-sdk/data/python/coinapi_rest_v1>
python example.py <API_KEY>
Which results in
Traceback (most recent call last):
File "examples.py", line 1, in <module>
from coinapi_rest_v1 import CoinAPIv1
ImportError: cannot import name 'CoinAPIv1' from 'coinapi_rest_v1' (/home/user/Development/project/project_env/lib/python3.8
Tested on Arch (python 3.8.6) and Windows (python 3.9.0).
Hi guys,
the following code throws an HTTP 500 error when time_end
is specified in the query parameters:
start = datetime.datetime(2017, 1, 1, 0, 1, 0).isoformat()
end = datetime.datetime(2017, 1, 1, 0, 5, 0).isoformat()
data_query = api.orderbooks_historical_data(
symbol_id="COINBASE_SPOT_ETH_USD",
query_parameters={'time_start': start,
'time_end': end,
'limit': 1000})
When time_end
is not specified, it works.
When I run python examples.py
I get a syntax error in coinapi_v1:
Traceback (most recent call last):
File "examples.py", line 1, in <module>
from coinapi_v1 import CoinAPIv1
File "/coinapi-sdk/python-rest/coinapi_v1.py", line 196
self.headers = {**self.DEFAULT_HEADERS, **headers, **header_apikey}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.