Errors, bugs, questions - page 2490
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Have you carefully read my quote in the post below?
This behaviour has always been there since the introduction of the "maximum number of bars per chart" setting , i.e. since the beginning of MT4. And we have explained many times over those 15 years why we do not cut back the number of bars according to that setting every time. And now we don't cut back every time.
Nobody reads the documentation. But it's a paradox. They still ask us to write something else in documentation that they don't read.
Slava, I have no complaints. I read carefully and not only your quote and this one
Forum on trading, automated trading systems and trading strategies testing
Bugs, bugs, questions
Slava, 2019.06.29 18:25
rates_total always shows the number of bars available on the current chart.
I do not understand the meaning of your statement
and this
Forum on trading, automated trading systems & strategy testing
Bugs, bugs, questions
Slava, 2019.06.29 18:42
I don't have the client terminal at hand right now to quote the help. From mobile device in two clickshttps://www.metatrader5.com/ru/terminal/help/startworking/settings#max_bars
Specially highlighted paragraph.
For a more economical calculation, indicators may have more bars available than specified in "Max bars in window" parameter. As new bars arrive, older bars are not immediately removed from the data cache. This allows the indicator not to be recalculated completely at each new bar, but only to additionally calculate its values for new bars.
Of course, I do not understand something, that is why I ask again and try to understand. I guess there will not be any changes. Please do not take my statements as a complaint.
The reference is not correct, it is misleading, I wrotehttps://www.mql5.com/ru/forum/304239/page57#comment_11519307
In MQL5 the buffers in general work as usual arrays, in MT4 the terminal dealt with buffers - it reset them to EMPTY_VALUE, then ... I don't remember where I wrote about the difference between MT5 and MT4 indicators
You need to clear the buffers - you clear them as a usual array, the terminal only sets the size of the array-buffer itself.
Igor, can you explain in plain Russian: if each hole of the indicator buffer will be filled with some values, which will replace the rubbish contained there, what is the purpose of forcing these holes before filling them with the right values? For loss of execution speed?
Igor, can you explain in plain Russian: if each hole of the indicator buffer will be filled with some values that will replace the trash contained there, what's the purpose of forcefully clearing these holes before filling them with the needed values? For loss of execution speed?
filling of "holes" is critical only in an indicator with "arrows", in MT4 during the initialization of the indicator these "holes" will be filled automatically by the value EMPTY_VALUE
in MT5 it must be done by the programmer
or in MT5 the programmer should fill the indicator buffers via the if() else construct
i.e. this will work in MT4:
if(...) Buf[i] = high[i];
in MT5 you have to write:
or in MT5 you need to clear the indicator buffers, otherwise the indicator will draw "rubbish" from the array, which is bound by the indicator buffer ...., when you switch the TF. it is a matter of taste how to write and what to take into account
SZY: speed? Well, measure the speed, in 99% of cases the built-in functions are faster, but there is no difference in performance between filling every bar in the loop EMPTY_VALUE and one initialization with ArrayInitialize(Buf,EMPTY_VALUE)
filling of "holes" is critical only in an indicator with "arrows", in MT4 during the initialization of the indicator these "holes" will be filled automatically by the value EMPTY_VALUE
in MT5 it must be done by the programmer
or in MT5 the programmer should fill the indicator buffers via the if() else construct
i.e. this will work in MT4:
in MT5 you must necessarily write:
or in MT5 you need to clear the indicator buffers, otherwise the indicator will draw "rubbish" from the array, which is bound by the indicator buffer ...., when you switch the TF. it is a matter of taste how to write and what to take into account
Well, measure the speed, in 99% of cases the built-in functions run faster, but there is no difference in performance between filling each bar in the EMPTY_VALUE loop and initializing it once with ArrayInitialize(Buf,EMPTY_VALUE).
All this is just a nag. That's how it was, that's how I want it, it's hard to change my habits and other reasons.
The if else construct can easily be replaced with
Buf[i] = условие ? high[i] : EMPTY_VALUE;
It's all just nagging. That's the way it was, that's the way I want it to be, changing my habits is difficult, and other reasons.
The if else construct is easily replaced with
If you're being picky, tips on increasing performance in C++ or C# just recommend not to use "conditional operator ? : " I think I read an article on Habra once (I haven't tested it, I write as convenient as possible)
;)
If I'm being picky, the advice on how to improve performance in C++ or C# is to not use "conditional operator ? : " I think I read an article on Habra once (I haven't tested it, I write as conveniently as possible myself)
;)
Well the compiler here is not an idiot, and optimises better than the "gurus" on the hubr
On such occasions I always repeat: "The sun rises in the morning and sets in the evening..." - Do you see any logic here? - Yes, it's logical, but is there information in my sentence? - It's not there.
i won't test it ? : , compiler machine.... Hubr, good...
i won't be testing ? :
Tested MT5:
2019.06.30 13:37:04.230 tst (EURUSD,H1) Testing if() cycles=99999999999999 time=10859 ms
2019.06.30 13:37:15.116 tst (EURUSD,H1) Testing ? : cycles=999999999999 time=10891 ms
2019.06.30 13:38:05.348 tst (EURUSD,H1) Testing if() cycles=99999999999999 time=10843 ms
2019.06.30 13:38:16.190 tst (EURUSD,H1) Testing ? : cycles=999999999999 time=10844 ms
2019.06.30 13:38:32.111 tst (EURUSD,H1) Testing if() cycles=99999999999999 time=10860 ms
2019.06.30 13:38:42.955 tst (EURUSD,H1) Testing ? : cycles=999999999999 time=10843 ms
2019.06.30 13:46:09.087 tst EURUSD,H1: Testing ? : cycles=999999999999 time=33234 ms
2019.06.30 13:45:35.854 tst EURUSD,H1: Testing if() cycles=99999999999999 time=32953 ms
2019.06.30 13:44:43.421 tst EURUSD,H1: Testing ? : cycles=999999999999 time=333298 ms
2019.06.30 13:44:10.094 tst EURUSD,H1: Testing if() cycles=99999999999999 time=33016 ms
2019.06.30 13:42:56.925 tst EURUSD,H1: Testing ? : cycles=999999999999 time=33344 ms
2019.06.30 13:42:23.584 tst EURUSD,H1: Testing if() cycles=99999999999999 time=32953 ms
I have noticed for a long time that the highlighting of user-defined macro names in a large project does not always work. Many macros defined in other files are not highlighted for some reason. I can't find a pattern yet. All I see is that all macros defined in a certain file stop highlighting in other files after a certain line. Anyone else see this happening to themselves?
I've noticed that if you write as a parameter of any function, it doesn't light up. I think it's not a complete match type. Or how to call it more precisely do not know.