Topics
Replies
swapd0
27 Apr 2024, 13:34
Maybe on Monday I can capture some screen shots when the market is open.
I mean that, if I buy one lot of XAGUSD at 27.000$ and later when the silver is at 27.100$ I double the position. In cTrader web I got one position on XAGUSD with two lots at 27.050$
But if I send a ProtoOAReconcileReq message I receive two positions, one at 27.000$ with one lot and another one at 27.100$ with one lot.
@swapd0
swapd0
08 Nov 2023, 09:34
RE: News tab missing
PanagiotisCharalampous said:
Hi there,
Which broker are you using?
Best regards,
Panagiotis
icmarkets.
@swapd0
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
14 Sep 2024, 21:50 ( Updated at: 15 Sep 2024, 05:25 )
A bit late but I think that the market was closed for gold because it was a bank holyday XD.
@swapd0