Metatrader known bugs ... - page 63

test
1232
test  

Giving up

Not going to use any build that is not updated by my broker. These 700+ builds I leave to sado-maso lovers : not worth losing time

name
992
name  

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

test
1232
test  

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

name
992
name  

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

Mladen Rakic
135838
Mladen Rakic  

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.

test
1232
test  
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?

Mladen Rakic
135838
Mladen Rakic  
checkin:
Can that cause terminal crashes?

Probably yes

techmac
2973
techmac  
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

jumpstart
5
jumpstart  
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.)

techmac
2973
techmac  

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