New metatrader 4 related questions, issues, solutions ...

 

A thread for the new metatrader 4 questions, known issues, solutions for issues, code snippets and so on

 

This is a version of SSA of price that uses some new possibilities of the new metatrader 4 (descriptive name of prices from a drop down list, descriptive parameters - parameter name and its description do not have to be the same at all). It also uses a dll, so the usual dll usage works as it should (that same dll can be used from regular metatrader 4 as well as from metatrader 5)

PS: it will not work on current metatrader 4 builds (build 509 for example - you will get a lot of compiler errors if you try to compile it with older metatrader 4)

Files:
 

And this is a 1 line of code example that is still causing errors even in build 532. When time frames are changed external sting parameters can change values without you making those changes

Files:
 

Related to previous post : in build 532 all external parameters declared as string are cleaned up (whatever you write in those fields/parameters it will be lost) when time frame or symbols is changed. It reminds very much to the almost exactly same error metatrader 5 had at the beginning. Till they fix it, string parameters can not be used

 

The problem with external things goes deeper than just keeping the values in string parameters. If an indicator has any string parameter used, and if it is called using iCustom() call, it will return values OK as long as you don't change time frames or symbol. As soon as you do that (change time frame or symbol) none of the values that one tries to access is accessible any more and the called indicator is not working as it should any more.

That prevents a lot of EAs using custom indicators to work - they will work with incorrect (no) data without "knowing" about it

 

PS: that string parameters error does not exist in EAs. It is an error that happens exclusively in indicators

 
mladen:
Related to previous post : in build 532 all external parameters declared as string are cleaned up (whatever you write in those fields/parameters it will be lost) when time frame or symbols is changed. It reminds very much to the almost exactly same error metatrader 5 had at the beginning. Till they fix it, string parameters can not be used

This is a killer! Nearly all of my indicators use string input to define multiple conditions, time frames or symbols separated by commas.

As an aside, I am developing an RSI dashboard that uses 3 dimensional arrays for storage. I am getting an element set correctly and then it is changed to the value of the next element when that element is computed and stored into the array. It is only happening for the next to last element in a 4 item iteration. Any reports of this problem in 509?

 
Tzuman:
This is a killer! Nearly all of my indicators use string input to define multiple conditions, time frames or symbols separated by commas. As an aside, I am developing an RSI dashboard that uses 3 dimensional arrays for storage. I am getting an element set correctly and then it is changed to the value of the next element when that element is computed and stored into the array. It is only happening for the next to last element in a 4 item iteration. Any reports of this problem in 509?

Tzuman

Are you having that error in build 509 or the beta version?

I am asking it because I am working frequently with arrays (3 dimensional too) but so far haven't noticed problems

 
mladen:
Tzuman

Are you having that error in build 509 or the beta version?

I am asking it because I am working frequently with arrays (3 dimensional too) but so far haven't noticed problems

Its 509. I will develop a cut down sample of it tomorrow and post it on this thread.

It is not a bug

It was caused by an error on my part. My old VB .Net background took over and I defined the third dimension of the array with one less element than required for the loop index. I spent 2 days looking for the problem as the upper bound was set in a #Define and just found it in developing the sample. In VB,Dim array(3) as double, indicates the array will have an upper bound of 3 and will have 4 elements whereas in Metatrader, double array[4]; provides the same array with 4 elements and having an upper bound of 3. Old training dies hard.

 

A string, screen printed on the original content.

After that is handled by a function, the string retrieved is the one below.

Is changing and most of the time shows only "1".

Files:
gbpusdem1.png  31 kb
gbpusdem1_4.png  33 kb
 
Antonsan:
A string, screen printed on the original content.

After that is handled by a function, the string retrieved is the one below.

Is changing and most of the time shows only "1".

They are having big problems with anything using strings

Here is an example of a simple master-slave indicator. Master is calling a slave indicator to get a simple current value from the only buffer. In the first tick it gets the value, and on the second tick it is already a "access violation". It will happen if you try to use any value for the string parameter (except when you do not specify parameters at all)

Even if you change the parameters type (to integer for example) it will seemingly work OK, but will keep reloading the "slave" indicator over an over.

For now anything including iCustom() calls is out of order (unless you use a iCustom() call without any parameter)

_____________________

PS: if you try to execute all that code compiled with build 509 all will work OK

Files:
Reason: