Metatrader known bugs ... - page 63

 

Maybe the best thing to do. No enthusiasm anywhere about that new beta

 

Why should anybody get enthusiastic?

An answer why backtesting stops at some date without no reason : "You may be out of memory for logging the ticks from your broker.". Now we are out of memory because of the broker

 

I don't know what are they doing but the build 711 is very unreliable. You never know what will happen the next

 

A bug when arrays are passed to a function (by default arrays are always passed by reference). Neither compiler nor runtime error is risen in the case when an array dimension is specified wrongly (like in this example :

void SortIt(double& sortArr[][2])

{

int size = ArrayRange(sortArr,0);

int increment = size / 2;

//

//

//

//

//

while (increment > 0)

{

for (int i = increment; i < size; i++)

{

int j = i;

double temp = sortArr[0];

double temi = sortArr[1];

while ((j >= increment) && (sortArr[j-increment][0] < temp))

{

sortArr[j][0] = sortArr[j-increment][0];

sortArr[j][1] = sortArr[j-increment][1];

j = j-increment;

}

sortArr[j,0] = temp;

sortArr[j,1] = temi;

}

if (increment == 2) increment = 1;

else increment = (increment / 2.2);

}

//

//

//

//

//

//

//

for(i = 0; i < size; i++)

{

sortArr[2] = i+1; if(sortArr[0] != sortArr[0]) continue;

//

//

// average where needed

//

//

temp = i+1;

for (j=i+1, temi=1; j < size; j++,temi++)

if(sortArr[j][0] == sortArr[0])

temp += (j+1);

else break;

temp /= temi;

for(; i < j; i++) sortArr[2] = temp;

}

}

Second dimension of the array is declared as 2 element array, while it is a 3 element array and it is used as such in the code too. It seems that whatever you declare in the function parameters when arrays are passed by reference is simply ignored and serves for nothing.

 
mladen:
A bug when arrays are passed to a function (by default arrays are always passed by reference). Neither compiler nor runtime error is risen in the case when an array dimension is specified wrongly (like in this example :
void SortIt(double& sortArr[][2])

{

int size = ArrayRange(sortArr,0);

int increment = size / 2;

//

//

//

//

//

while (increment > 0)

{

for (int i = increment; i < size; i++)

{

int j = i;

double temp = sortArr[0];

double temi = sortArr[1];

while ((j >= increment) && (sortArr[j-increment][0] < temp))

{

sortArr[j][0] = sortArr[j-increment][0];

sortArr[j][1] = sortArr[j-increment][1];

j = j-increment;

}

sortArr[j,0] = temp;

sortArr[j,1] = temi;

}

if (increment == 2) increment = 1;

else increment = (increment / 2.2);

}

//

//

//

//

//

//

//

for(i = 0; i < size; i++)

{

sortArr[2] = i+1; if(sortArr[0] != sortArr[0]) continue;

//

//

// average where needed

//

//

temp = i+1;

for (j=i+1, temi=1; j < size; j++,temi++)

if(sortArr[j][0] == sortArr[0])

temp += (j+1);

else break;

temp /= temi;

for(; i < j; i++) sortArr[2] = temp;

}

}
Second dimension of the array is declared as 2 element array, while it is a 3 element array and it is used as such in the code too. It seems that whatever you declare in the function parameters when arrays are passed by reference is simply ignored and serves for nothing.

Can that cause terminal crashes?

 
checkin:
Can that cause terminal crashes?

Probably yes

 
mladen:
A bug when arrays are passed to a function (by default arrays are always passed by reference). Neither compiler nor runtime error is risen in the case when an array dimension is specified wrongly (like in this example :
void SortIt(double& sortArr[][2])

{

int size = ArrayRange(sortArr,0);

int increment = size / 2;

//

//

//

//

//

while (increment > 0)

{

for (int i = increment; i < size; i++)

{

int j = i;

double temp = sortArr[0];

double temi = sortArr[1];

while ((j >= increment) && (sortArr[j-increment][0] < temp))

{

sortArr[j][0] = sortArr[j-increment][0];

sortArr[j][1] = sortArr[j-increment][1];

j = j-increment;

}

sortArr[j,0] = temp;

sortArr[j,1] = temi;

}

if (increment == 2) increment = 1;

else increment = (increment / 2.2);

}

//

//

//

//

//

//

//

for(i = 0; i < size; i++)

{

sortArr[2] = i+1; if(sortArr[0] != sortArr[0]) continue;

//

//

// average where needed

//

//

temp = i+1;

for (j=i+1, temi=1; j < size; j++,temi++)

if(sortArr[j][0] == sortArr[0])

temp += (j+1);

else break;

temp /= temi;

for(; i < j; i++) sortArr[2] = temp;

}

}
Second dimension of the array is declared as 2 element array, while it is a 3 element array and it is used as such in the code too. It seems that whatever you declare in the function parameters when arrays are passed by reference is simply ignored and serves for nothing.

As usual : compiler is a ... and runtime error checking of array access does not exist

 
techmac:
As usual : compiler is a ... and runtime error checking of array access does not exist

You can add my "out of memory" message too. The RAM runs at 90% (i.e. of 4GB) and the disc is going nuts...then the nice windows man comes and serves an "Out of memory" notice.

It was even worse when it first updated to 711. I started a video while I waited for the MT4 to finish..woah...Windows crashed, locked up, all screens went black, cursor arrow stayed on deck, eventually a message saying either hit esc key, or turn off the machine.

At moments like those you really, really hope its all in the CPU, not disc.

These pesky Ruskies sure know how to write code.

Pity they didn't hang around in lectures and learn a thing or two about testing and roll-out.

(yes we all know its boring, and there is a vodka and a missus waiting at home, but it is important.)

 

They really are having memory handling issues - these last builds are a disaster. I do not know how do they plan to convince us that it is all OK

 

My Broker updated my Demo to 711 so I checked a few things out to see if my indicators would run on that build and yes they do however the same issue that was with 670 ( at least the object shift appears to have been altered back to the same as builds pre 670 ) is if you compile anything it does not change on the chart, just a simple thing like shift a display up or down and compile and nothing moves, you have to remove the indicator and reload to see the change, now that makes programming a graphic display a right pain in the butt. I guess I will have to continue to use build 625 for the programming platform for now.