Hi,
I'm trying to build a mechanism within my EA whereby the value of the iATR buffer is assigned to a variable of the same type for use further within the code (i.e. rolling ATR). However, the results I have been getting is a very small number and to further test this I had carved out the relevant bits of code (below) into a separate EA (away from all the other code) whereby I was getting the same results. I had inserted a couple of print functions to see the values and irrespective of whether it was directly from the array or through a variable of the same type I was yielding the same outcome. Attached below is a screen print of the strategy tester journal with the values from the array.
This way of extracting indicator values from a buffer is common from what I have seen including the MT5 expert programming book and in the mql5 reference book. I'm struggling to see where the problem lies in what should be quite simple. Is anyone able to provide an answer?
Thanks in advance for your help.
Peter
Your code is correct. Which symbol and timeframe are you using ?
Hi Alain,
I tested it against the daily EURUSD pair. The MT5 software I'm using was downloaded from mql5.com.
Have you ever experienced anything like this before?
Thanks
Peter
Hi Alain,
I tested it against the daily EURUSD pair. The MT5 software I'm using was downloaded from mql5.com.
Have you ever experienced anything like this before?
Thanks
Peter
It seems your printed values are data for each new daily bar. As you get data for current (open) candle which has only 1 (or very few) tick, the result is values around 0.00001. Seems logical to me. Try to get data for closed candle :
CopyBuffer(_1barATRHandle,0,1,1,_1barATRArray);
It seems your printed values are data for each new daily bar. As you get data for current (open) candle which has only 1 (or very few) tick, the result is values around 0.00001. Seems logical to me. Try to get data for closed candle :
Hi Alain,
Thanks. I made the change you suggested which solves the issue. However, when I embed the code back into my EA - more specifically within the method from the class that is called from I now get zero value. I've spent the last 2 days pulling apart the code trying to understand why but have not yet come to a conclusion yet. I know the code doesn't lie so I'll let you know once I've found the answer. Debugging is tough!
Thanks again.
Peter
Hi Alain,
Thanks. I made the change you suggested which solves the issue. However, when I embed the code back into my EA - more specifically within the method from the class that is called from I now get zero value. I've spent the last 2 days pulling apart the code trying to understand why but have not yet come to a conclusion yet. I know the code doesn't lie so I'll let you know once I've found the answer. Debugging is tough!
Thanks again.
Peter
Ok, let me know if you need help.
After hours of debugging, the problem seemed to have worked itself out. More specifically, I'm not getting very small numbers anymore without fundamentally changing my code. I had been tweaking with the position start index on the copybuffer together with the ArraySetAsSeries and somehow it worked out itself.
I do have another question in relation to arrays - the code above works fine under an OnTick event handler, as new ticks are populated a calculated value will populate the buffer and into the array. However, when inserting the same code into the initialize event handler no values are generate i.e. 0. Given that the strategy testing does not start at the very first bag of the chart (i.e. 1-Jan-1971) I would've thought that the iATR handle would still be able to calculate a value.
What do you think?
Peter
After hours of debugging, the problem seemed to have worked itself out. More specifically, I'm not getting very small numbers anymore without fundamentally changing my code. I had been tweaking with the position start index on the copybuffer together with the ArraySetAsSeries and somehow it worked out itself.
I do have another question in relation to arrays - the code above works fine under an OnTick event handler, as new ticks are populated a calculated value will populate the buffer and into the array. However, when inserting the same code into the initialize event handler no values are generate i.e. 0. Given that the strategy testing does not start at the very first bag of the chart (i.e. 1-Jan-1971) I would've thought that the iATR handle would still be able to calculate a value.
What do you think?
Peter
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hi,
I'm trying to build a mechanism within my EA whereby the value of the iATR buffer is assigned to a variable of the same type for use further within the code (i.e. rolling ATR). However, the results I have been getting is a very small number and to further test this I had carved out the relevant bits of code (below) into a separate EA (away from all the other code) whereby I was getting the same results. I had inserted a couple of print functions to see the values and irrespective of whether it was directly from the array or through a variable of the same type I was yielding the same outcome. Attached below is a screen print of the strategy tester journal with the values from the array.
This way of extracting indicator values from a buffer is common from what I have seen including the MT5 expert programming book and in the mql5 reference book. I'm struggling to see where the problem lies in what should be quite simple. Is anyone able to provide an answer?
Thanks in advance for your help.
Peter