Author |
Topic: Marginrequest does not always respond (8 messages, Page 1 of 1) |
||||
---|---|---|---|---|---|
Moderators: VPfau | |||||
JKovalcin926 Posts: 9 Joined: Jan 24, 2022 |
It turns out that the GF API does not respond to a percentage of the MarginRequests that we make. We have taken special care to validate the request, implement waiting times, verify that the contract is valid, among others.
But we don't get the event for everyone. For example, "ESZ22" or "MEZ22" we have tried to apply it since Sept/12/2022 2 times per day but the event has not been triggered yet. But it does work for others like 6JX22, BTCX22, GFV22, M6AZ22, NKDZ22 and others. The rest works fine with all symbols except the MarginRequest Could you help us? Thank you very much in advanced |
||||
VPfau Moderator Posts: 164 Joined: |
Hello,
Please provide account name, environment name, GFAPI version and example of request you are sending. Thank you Vitaliy Pfau
|
||||
JKovalcin926 Posts: 9 Joined: Jan 24, 2022 |
Hi VPfau, of course
The account name is JKovalcin926, GFAPI version 4.0.3.44 The code is i use is the following: GF.Api.Accounts.AccountID accountID = client.Accounts.Get().First().ID; HypoPosition position = new HypoPosition(e.Contracts.First().ID, 1, 1); HypoOrder order = new HypoOrder(e.Contracts.First().ID, GF.Api.Values.Orders.OrderSide.Buy, 1); List listPosition = new List(); listPosition.Add(position); List listOrder = new List(); listOrder.Add(order); IReadOnlyList datapositions = listPosition; IReadOnlyList dataorders = listOrder; MarginCalculationRequest marginRequest = new MarginCalculationRequest(accountID, datapositions, dataorders); string validation = client.Margin.ValidateMarginCalculationRequest(marginRequest); if (string.IsNullOrEmpty(validation)) { int response = client.Margin.RequestMarginCalculation(marginRequest); symbolData.requestID = response; } Thanks for advanced |
||||
VPfau Moderator Posts: 164 Joined: |
Hello,
I checked all contracts you specified and all of them are working but MEZ22. We do not have MEZ22 on API environment. I suppose the issue is that you don't see errors we send back if something goes wrong. Make sure you subscribe to `client.Traders.TraderError` event. Most often issue with margin requests is that you cannot send multiple requests in parallel. You need to wait `client.Margin.MarginCalculationCompleted` before send a new request. Please see example here: https://bitbucket.org/GainFuturesDev/workspace/snippets/Eg6jXk To See simultaneous error send two requests in line 44 like: client.Margin.RequestMarginCalculation(request); and you should get something similar at console: Connecting... Vitaliy Pfau
|
||||
JKovalcin926 Posts: 9 Joined: Jan 24, 2022 |
Thank you very much for your answer, I have a few points to share:
* MEZ22 is not found because I wrote it wrong in this forum, sorry. It is the MESZ22. So with that part there is no problem. * I wasn't using that event, thanks. Continuing with the thread of not receiving ESZ22, the new event returned the following message: "[Traders_TraderError event] Contract is not subscribed or not found for Margin Calculator request". I was going through the bitbucket example and this is how I am using it. Edited by JKovalcin926 on Sep 23, 2022 10:43 AM |
||||
VPfau Moderator Posts: 164 Joined: |
It is very possible that you use a contractID in your requests without obtaining a contract first.
To be able to send margin requests you have to have a contract on a client side doing lookup or other loading methods. Vitaliy Pfau
|
||||
JKovalcin926 Posts: 9 Joined: Jan 24, 2022 |
I understand, but we are requesting the contractID before MarginRequest. here is a sample of code vs console
------> GFClient_OnSymbolLookupReceived( IGFClient client, SymbolLookupEventArgs e ) <-------------- Console.WriteLine($"Contract: {e.Contracts.First().Symbol} - {e.Contracts.First().BaseSymbol} - ID: {e.Contracts.First().ID.Value} - is pit {e.Contracts.First().ID.IsPit}"); ... GF.Api.Accounts.AccountID accountID = client.Accounts.Get().First().ID; HypoPosition position = new HypoPosition(e.Contracts.First().ID, 1, 1); HypoOrder order = new HypoOrder(e.Contracts.First().ID, GF.Api.Values.Orders.OrderSide.Buy, 1); ... 17:12:36:724 Contract: ESZ22 - ES - ID: 280192539 - is pit False 17:12:36:806 Added Symbol:ESZ22 to Request Margin Event -- validaMarginCalculationRequest Sucessful [Traders_TraderError event] Contract is not subscribed or not found for Margin Calculator request Edited by JKovalcin926 on Sep 23, 2022 12:23 PM Edited by JKovalcin926 on Sep 23, 2022 12:26 PM |
||||
VPfau Moderator Posts: 164 Joined: |
Sorry, it is hard to understand what is going on based on lines above.
Can you provide a full example project that replicate the issue? Vitaliy Pfau
|
||||