Reply

OrdersHistoryTotal() returns 0

4 replies

Steve Green

Subscriber, bbp_participant, community, 47 replies.

Visit profile

5 years ago #238359

Hi,

Trying to get the last order size for a given magicnumber & symbol but OrdersHistoryTotal() always returns as 0 even thou I have orders in my Account History tab on my mt4 terminal?

 

My code is below.

 

extern int lv_hour = 6;
extern int lv_minute = 0;
extern int lv_orderMagicNumber = 0; // input correct magicnumber here

int lv_count = 0;

double lv_DefaultPositionSize = 5;
double lv_ReturnPositionSize = 0;

void start()
{
if (TimeHour(Time[0]) == lv_hour && Minute() == lv_minute && lv_count == 0)
{
lv_ReturnPositionSize = sqGetLastPositionSize(lv_orderMagicNumber);

if (lv_ReturnPositionSize != 0)
{
lv_DefaultPositionSize = lv_ReturnPositionSize; //overide default position size
}
printf(“lv_DefaultPositionSize = ” +lv_DefaultPositionSize);

lv_count = 1; // makes sure that it prints once in journal only
}
}

double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=OrdersHistoryTotal(); i>=0; i–) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol()) {
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber) {
return(OrderLots());
}
}
}

return(0);
}

 

 

Thanks in advance

Steve

 

0

coensio

Customer, bbp_participant, community, 106 replies.

Visit profile

5 years ago #238361

For example you could do a littlebit of debugging and see where it goes wrong.

double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=OrdersHistoryTotal(); i>=0; i–) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol())

{

Print(“Symbol:”,OrderSymbol());
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber) {

Print(“Magic: “,OrderMagicNumber());
return(OrderLots());
}
}
}

return(0);
}

This is a false statement.

0

Steve Green

Subscriber, bbp_participant, community, 47 replies.

Visit profile

5 years ago #238362

Thanks Coensie,

 

 

Have you run your code. It doesn’t even go into the if(OrderSelect statement      as OrderSymbol() returns as NULL and I speculate OrderSelect returns as false thats why?

 

see modication of your function sqGetLastPositionSize below:

 

double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=OrdersHistoryTotal(); i>=0; i–) {
Print(“OrderSymbol():”,OrderSymbol());
Print(“Symbol():”,Symbol());
Print(“OrderMagicNumber():”,OrderMagicNumber());

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol())

{

Print(“Symbol:”,OrderSymbol());
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber) {

Print(“Magic: “,OrderMagicNumber());
return(OrderLots());
}
}
}

return(0);
}

 

 

 

Any ideas?

0

coensio

Customer, bbp_participant, community, 106 replies.

Visit profile

5 years ago #238365

This one verified on my account:

 

double sqGetLastPositionSize(int orderMagicNumber)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i–)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol() == Symbol())
{
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber)
{
Print(“Magic:”,OrderMagicNumber(),” OrderLots: “,OrderLots());
return(OrderLots());
}
}
}
return(0);
}

This is a false statement.

0

Steve Green

Subscriber, bbp_participant, community, 47 replies.

Visit profile

5 years ago #238369

 

Still doesn’t work maybe because it is a demo account?

 

My last order was:

166861186 2019.01.24 08:00:01 buy 0.79 usdjpy 109.625 109.690 0.000 2019.01.24 08:37:29 109.691 0.00 0.00 0.00 47.53

 

 

This was my output from your code:

2019.01.26 12:39:35.900 USDJPY,H1: 109397 tick events (24 bars, 110397 bar states) processed in 0:00:00.016 (total time 0:00:02.359)2019.01.26 12:39:35.900 USDJPY,H1: 109397 tick events (24 bars, 110397 bar states) processed in 0:00:00.016 (total time 0:00:02.359)2019.01.26 12:39:35.892 2019.01.25 06:00:00  dummy USDJPY,H1: lv_DefaultPositionSize = 52019.01.26 12:39:35.889 2019.01.25 00:00:00  dummy inputs: lv_hour=6; lv_minute=0; lv_orderMagicNumber=2670682; 2019.01.26 12:39:33.536 TestGenerator: current spread 14 used

0

Viewing 4 replies - 1 through 4 (of 4 total)