Author |
Topic: GFAPI COM Help with Closed Positions (18 messages, Page 1 of 1) |
||||
---|---|---|---|---|---|
Moderators: VPfau | |||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
I am having 2 issues:
1. When opening/closing a position with a symbol that currently does not have an open order closed position, the DetailedPositionDictionaryPtr does not increment in size and therefore the position is not there. If I re-initialize everything (logout and log back in) they will appear. We use this to get our closed positions: IDetailedPositionDictionaryPtr poses; if(pAcct) poses = pAcct->DetailedPositions; for(int i = 0; i Count; i++) { IPositionListPtr pos = poses->ValueByIndex(i); for(int j = 0; j Count; j++) { IPositionPtr p = pos->GetAt(j); if(p->Net->Volume == 0) //closed position { //build closed position } } } 2. In the OECAPI, we use the SourceFill ID to display the open/closed position id, however, the sourcefill id always changes. What is an accurate way to get the open/close order id for the closed position in the GF API? |
||||
JSmith5611 Posts: 187 Joined: |
I'm looking into these this morning. If you have any more details, please let me know.
Jason Smith
|
||||
JSmith5611 Posts: 187 Joined: |
1) I've been testing this situation this morning, but the new positions always are in the detailedpositions.. can you give me a detailed step-by-step you do to reproduce? Aslo, i do notice that your for loops in this example do not show what is the source of the Count calls.
2) Yes, every time you get an IFill.ID (of type IFillID) it will be a different object, the IFillID's Value member will always be the same value for a given fill. Jason Smith
|
||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
1) Sorry something must have happened when I copied and pasted. The for loops should show:
IDetailedPositionDictionaryPtr poses = pAcct->DetailedPositions for(int i = 0; i < poses -> Count; i++) { IPositionListPtr pos = poses->ValueByIndex(i); for(int j = 0; j < pos -> Count; j++) { } } 1 cont...) Inside of our callback for OnOrderFilled we update our closed positions. If I open a position and close a position and put a breakpoint on a variable that stores the count of our detailed positions, it shows 0. On first run of the software for the day, this is true no matter how many times I open and close any position: IDetailedPositionDictionaryPtr poses = pAcct->DetailedPositions int count = poses->Count; //this is 0 If I restart my application, the detailed positions count is then correct until I open and close a position with a different symbol (It's not just base symbol, doing it on the same base symbol with different expiration does not show up). Step by step: Open Software Buy MNQU22 Sell MNQU22 Detailed Position size is 0 Sell MNQU22 Buy MNQU22 Detailed Position size is 0 Restart application Detailed Position size is 1 Buy MESU22 Sell MESU22 Detailed Position size is 1 Sell MESU22 Buy MESU22 Detailed Position size is 1 Restart application Detailed Position size is 2 Whenever the detailed position size is correct, I can close positions of the same symbol that is in the detailed positions map and it will then correctly show up. It's like the detailed positions list doesn't update for new symbols or something. 2) Oh perfect, thank you for that. Edited by RWare2020 on Jun 13, 2022 12:21 PM Edited by RWare2020 on Jun 13, 2022 12:31 PM Edited by RWare2020 on Jun 13, 2022 12:48 PM |
||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
I have tested this in the latest GAIN GFAPI COM 4.7.603.176 as well as GAIN GFAPI COM 4.5.311.173
|
||||
JSmith5611 Posts: 187 Joined: |
Do you keep a copy of IDetailedPositionDictionaryPtr or IAccount, or get a new object from the api each time?
Jason Smith
|
||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
We get a new object from the api each time. This is our GetAccountPtr function:
if(GF_Api_COM::IAccountListPtr accts = GFApi()->Accounts->Get()) { std::string currentIdString = std::to_string(accts->GetAt(m_curAccountIndex)->id->Value); if(strAcct.compare(currentIdString) == 0) { pAcct = accts->GetAt(m_curAccountIndex); found = true; } else { for(int i = 0; i Count && !found; i++) { std::string str = std::to_string(accts->GetAt(i)->id->Value); if(str.compare(strAcct) == 0) { pAcct = accts->GetAt(i); found = true; } } } } |
||||
JSmith5611 Posts: 187 Joined: |
Ok. after much digging, I do see that there is a problem here. I'll let you know when i have a fix.
Jason Smith
|
||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
Thank you very much!
|
||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
It appears that the fix is in the api environment. Thanks for getting this taken care of. Do you have an ETA as to when this will be in PROD/SIM?
Thanks again. |
||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
Any ETA on when this fix will be in Sim/Prod?
|
||||
VPfau Moderator Posts: 164 Joined: |
Hello
this item was released to SIM at June 26 2022 to PROD at July 9 2022 Vitaliy Pfau
|
||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
Well then it appears that we are still experiencing the issue.
I have updated to version GAIN GFAPI COM 4.7.624.179 and having the same issue. I am having an issue login to the api side to test api again to make sure it is still working over there. I will update the thread if I have issues logging into API Thanks. Edited by RWare2020 on Jul 11, 2022 12:04 PM |
||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
I am unable to login to the api side. Can I please get some help with that as well?
Thanks |
||||
JSmith5611 Posts: 187 Joined: |
This fix was released in 4.7.709.181
Jason Smith
|
||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
The latest version available from https://gainfutures.com/gainfuturesapi/documentation/ Download GF API COM (32 - Bit) button is GAIN GFAPI COM 4.7.624.179
|
||||
JSmith5611 Posts: 187 Joined: |
I just used those links and got the version i mentioned.4.7.709.181
Jason Smith
|
||||
RWare2020 Posts: 206 Joined: Feb 11, 2020 |
I was able to download it today.
I cleared my cache, not sure if that helped. I should have tried before clearing my cache today. I tested this new version and things are working correctly, thanks for getting this fixed. |
||||