Topics
Replies
swapd0
10 Apr 2023, 22:00
This is the code to read a message.
First I read an int32_t to know the message length, and then I create the message using ParseFromArray or ParseFromPartialArray, I've seen that this code fails because the message length for trend bars is wrong, I get a size of 21,508 bytes but if I inspect the memory there's about 16,391 bytes, after that is full of zeros.
mConnection->receive(mBuffer.data(), mBuffer.size(),
[&](std::error_code ec, std::size_t size)
{
if ( !ec )
{
int32_t length;
memcpy(&length, mBuffer.data(), sizeof(int32_t));
// big endian to little endian
length = ntohl(length);
if ( length > mBuffer.size() )
tools::Log().error("Message too big: " + std::to_string(length));
if ( length > 0 )
{
ProtoMessage pmsg(OpenMessageFactory::message(mBuffer.data() + sizeof(int32_t), length));
int type = pmsg.payloadtype();
auto it = mObservers.find(type);
if ( it != mObservers.end() )
it->second.fn(pmsg, it->second.context);
else
tools::Log().error("Message not handled: " + std::to_string(type) + "with size: " + std::to_string(length));
}
receiveMessages();
}
else
{
tools::Log().error("Receive data: " + ec.message() + " size: " + std::to_string(size));
}
});
@swapd0
swapd0
09 Apr 2023, 16:21
( Updated at: 09 Apr 2023, 21:43 )
RE: RE:
kostya.bartchenkov said:
swapd0 said:
No one is using OpenAPI and ICMarkets to access historical data? This is a bit frustrating :(
I also have an icMarkets account . I may try it out tomorrow if I have some time. What PAIR are you trying?
Any forex pair, but usually I choose AUDCAD because it's the first one in the list.
Right now I'm trying to use tick data to generate the 1min candles, I use set_clientmsgid to set the pair name but when I read the response I don't get any clientmsgid data. If I inspect the memory the message contains my clientmsdid but it didnt't read it... weird.
Edited:
Ok, when I create a ProtoMessage from the sockets buffer it fails (return false) on some messages. I downloaded the .proto messages about one month ago, and the lastest change was four months ago.
This function works when I receive Application and account messages, symbol list, spot prices, but fails when I receive ProtoOAGetTrendbarsRes although on D1 request I can read the candles.
ProtoMessage createMessage(void *ptr, size_t size)
{
ProtoMessage msg;
bool ok = msg.ParseFromArray(ptr, (int)size);
tools::Log().check(!ok).error("Parse from array failed: " + std::to_string(msg.payloadtype()));
return msg;
}
@swapd0
swapd0
03 Apr 2023, 17:32
( Updated at: 03 Apr 2023, 17:55 )
I'm connected to live-eu.ctraderapi.com, this is the request using ProtoOAGetTrendbarsReqm, right now I'm not using the set_count paramerter, but I get the same result if I use it.
I think that my IP is 92.57.56.65
clientId: 5666_hFOvRarXsCjgiR0DBMVVVeGbSWpZRcO5w5q1dVLCBcobxkzBnE
accountId: 16177258
symbol: AUDCAD(18)
period: 1 (1 minute)
from: 27/3/2023 0:00:00 (1679875200000)
end: 3/4/2023 16:25:07 (1680539107670)
sended at: 3/4/2023 16:24:59
This is the Response, a few chunck of zeros data.
unknow data (16383 bytes):
memory dump: 0 0 0 0 0 0 0 0
unknow data (400e bytes):
memory dump: 0 0 0 0 0 0 0 0
unknow data (4002 bytes):
memory dump: 0 0 0 0 0 0 0 0
unknow data (3ffd bytes):
memory dump: 0 0 0 0 0 0 0 0
unknow data (4 bytes):
memory dump: 0
@swapd0
swapd0
31 Mar 2023, 20:42
( Updated at: 31 Mar 2023, 22:56 )
Sometimes I got the same issue, I send a ProtoOAGetTrendbarsReq with M1 time frame, for yesterday data (from 0:00:00 to 23:59:00) and I sometimes I get a zero size message or a 16kB message full of zeroes.
If I change the time frame to M5 it works.
Edited:
Maybe the problem is with the type of connection? I can create a sslv23, sslv23_client, sslv3, sslv3_client, ttlsv13, lsv13_client context type, not sure which one I've to use. Although I've no problem to get the symbol list, or subscribe to a symbol.
@swapd0
swapd0
18 Mar 2023, 20:49
I've fixed some bugs, most important, now it runs on a clean High Sierra or higher OS-X.
https://mega.nz/file/pUcUGara#0dBlJ2Si5fetHdieJZ4FigIjE_WP0X-xUgMqCL1k17w
@swapd0
swapd0
08 Nov 2023, 09:34
RE: News tab missing
PanagiotisCharalampous said:
icmarkets.
@swapd0