Gamestudio Links
Zorro Links
Newest Posts
No errors in the command line
by JMMAC. 05/06/26 16:20
U4GM Where I Found Water Filters for Avian Alarm
by Hartmann846. 05/06/26 08:52
U4GM Why Black Ops 7 Campaign Feels So Different
by Hartmann846. 05/06/26 08:51
Purchase A8 full licence version
by jcl. 05/05/26 11:20
AUM Magazine
Latest Screens
Dorifto samurai
Shadow 2
Rocker`s Revenge
Stug 3 Stormartillery
Who's Online Now
1 registered members (salisy), 5,860 guests, and 11 spiders.
Key: Admin, Global Mod, Mod
Newest Members
salisy, Hartmann846, dangyc, ukgamer, valino
19213 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