Errors, bugs, questions - page 725

 
Snaf: I found the error in the first script myself, but I don't have enough brains for the second one .

Bild 630

This example is written using the new build of MQL5 compiler. We apologize for not taking this into account. But it will be out soon. Please wait a bit and everything will compile.
 
MetaDriver: Yeah, well, it's with string handling that I messed up, too. My function used to assemble a long string from chunks returned by other functions (OpenCL program generation). In the debugger it's like clockwork - the build crashes and says "Acces Violation"... ;)

I was about to write to Service Desk, but out of nowhere it worked. :) I could not reproduce it (although I tried to do it honestly), so why should I send it to service Desk?

Yes, there is a clear problem with CLProgramCreate(). I specifically tracked down where in the script the first execution glitch was, and it was in this function. The function does not return a value.

The CL-program in the form of a string seems to be reproduced correctly. But the CL program itself is not created.

 
When testing on crosses there is accurate modelling of other rates as well for correct conversion of profits and margin requirements.

Try running the visualisation and you will immediately understand the volume of calculations based on the number of background characters in the marketwatch.
 
Please tell me how to merge my laptop and PC, when testing strategies, computers are working through a router, one via cable, the other via Wi-Fi, tried to create on the desktop computer file mt5, I threw to the laptop, added to the section remote, but the names of agents are the same as on a laptop
 

from the post https://www.mql5.com/ru/forum/1111/page736#comment_185306

localized the problem to the point :

- on function from CFastFile::ReadInteger class

It turned out that in 630/64 either structure assignment, or reading from array into array got screwed up, although the worst variant seems to be conversion of signed (short/int/char) into unsigned (ushort/uint/uchar).

Somewhere there are extra bits or offsets. As a result, the programmer reads quite a different number than intended. It will be easier for you to sort it out and double-check in the function.

But it works steadily in the same code on 4 computers (the code is large, I can't stretch the plot).

 
lazarev-d-m:
Please tell me how to merge my laptop and PC, when testing strategies, computers are working through a router, one via cable, the other via Wi-Fi, tried to create a file mt5 on a desktop computer, threw it on the laptop, added to the section remote, but the names of agents are the same as on a laptop
Is this not working? Client Terminal / Strategy Tester / Agents
 
Yedelkin:
It doesn't work like this? Client Terminal / Strategy Tester / Agents
I must have done something wrong, now I created mt5 file again, now notebook sees PC processors, but in the connecting test nothing goes further, what can be the problem, and do I need to add notebook processors to PC tester, if I will not use them on PC?
 

Developers, you've won me over with this bug! As they say, "I'm crying".

Functions from CFastFile ( ::ReadInteger)

        uint ReadArray(uchar &dst[], uint dst_start=0, int cnt=WHOLE_ARRAY) { int r=ArrayCopy(dst, m_data, dst_start, m_pos, cnt); if (r>0) m_pos+=r; return(r); }
        ushort ReadShort() { __2 b={0}; __short d={0}; ReadArray(b.v, 0, 2); d=b; return(d.v); }
        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); return(s); }
                return(ReadInt());
        }


It returns nonsense when reading SHORT_VALUE.


Started digging around, wrapping my head around different options for reading from an array.

It turned out that if instead of ushort s=ReadShort() put the body of function ReadShort itself, all numbers are read normally.

But then I found a variant that really made me cry.

        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); if (s==426) Print(s); return(s); }
                return(ReadInt());
        }

That is, the Print function magically transforms a wrong number s into a correct one and returns the correct value.


Dear developers, come to your senses! You are making a rubbish!!!

How will you compensate for losses in the marketplace resulting from your own attitude to your product?

After all, MT5 is just a huge consumer resource, which is served by third-party programmers.

And you with your negligent actions question their competence and the quality of their programs!

 
sergeev:

Developers, you've won me over with this bug! As they say, "I'm crying".

Functions from CFastFile ( ::ReadInteger)

Wait, but this is your code of the CFastFile class, isn't it? What have platform developers got to do with it?

//+------------------------------------------------------------------+
//|                                                         FastFile |
//|                                            Copyright © 2006-2012 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006-2012"
#property version "1.00"
#property library
 
Renat:

Wait, but this is your code of the CFastFile class, isn't it? What do the platform developers have to do with it?



Yes Renat, that's my code.

It worked in previous builds. But it stopped working in the current 630/64.

And it continues to work successfully in 630/32.


The bug I've found is rather odd and frankly speaking, frightening.

Reason: