Gamestudio Links
Zorro Links
Newest Posts
Purchase A8 full licence version
by ukgamer. 04/29/26 18:09
Z9 getting Error 058
by k_ivan. 04/25/26 19:13
ZorroGPT
by TipmyPip. 04/25/26 16:09
Stooq now requires an API key
by jcl. 04/13/26 09:42
Strange "Alien" Skull created with >Knubber<
by NeoDumont. 04/10/26 18:58
AUM Magazine
Latest Screens
Dorifto samurai
Shadow 2
Rocker`s Revenge
Stug 3 Stormartillery
Who's Online Now
1 registered members (Quad), 5,594 guests, and 72 spiders.
Key: Admin, Global Mod, Mod
Newest Members
ukgamer, valino, juergenwue, VladMak, Geir
19210 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
GET_TRADES via BrokerCommand #485391
03/04/22 16:49
03/04/22 16:49
Joined: Jan 2014
Posts: 86
London City
B
byakuren81 Offline OP
Junior Member
byakuren81  Offline OP
Junior Member
B

Joined: Jan 2014
Posts: 86
London City
Hello,

I implemented BrokerCommand for GET_TRADES in the broker API and called from Zorro at INITRUN:
int npos = brokerTrades(0);
printf("\nNumber of positions loaded: %d", npos);

However I do not get any opened trades when calling: for(open_trades).

I get the correct number of positions but I cannot modify the value of the argument dwParameters in my implementation of BrokerCommand as it is of type DWORD.
So I cannot pass the address of the first element of the TRADE array to Zorro.

I thought I could call brokerCommand on GET_TRADES directly and add the trades to Zorro internal trade list using the method enterTrade but I face the same issue on passing to Zorro the address of the first TRADE array element.
In the documentation I see 3 overloaded methods for brokerCommand but only one BrokerCommand in the broker API.

Moreover extern "C" functions cannot be overloaded so I cannot specialize BrokerCommand to pass this address Zorro.

Could you please tell me how to proceed?



Last edited by byakuren81; 03/06/22 14:24.
Re: GET_TRADES via BrokerCommand [Re: byakuren81] #485397
03/06/22 20:12
03/06/22 20:12
Joined: Jan 2014
Posts: 86
London City
B
byakuren81 Offline OP
Junior Member
byakuren81  Offline OP
Junior Member
B

Joined: Jan 2014
Posts: 86
London City
I found the solution:

In your broker API code, within your implementation of the function BrokerCommand(int nCommand, DWORD dwParameters), convert the argument dwParameters to an hexadecimal pointer address:

char hex[10];
sprintf(hex, "%x", dwParameters );
TRADE* trades = (TRADE*)strtoul(hex, NULL, 16);

Then fill the trades array with the trades you will have loaded from the broker.

Important: remember to set the structure alignment of your code to 4 as mentioned in Zorro documentation in Broker / Feed Plugin.
In Visual Studio 2017, go to your project properties, then under C/C++ Code Generation set Struct Member Alignment to 4.

Finally from Zorro call during INITRUN:
int npos = brokerTrades(0);

And check your broker API code works:
for(open_trades)
{
printf("\nTradeID number %d is loaded", TradeID);
}


Last edited by byakuren81; 03/06/22 20:13.

Moderated by  Petra 

Gamestudio download | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1