# Custom Indicator: OnCalculate Function Query

26

I am testing an MQL5 custom indicator on historical data using Strategy Tester. See below:

```int OnCalculate (const int rates_total,      // size of input time series

const int prev_calculated,  // bars handled in previous call
const datetime& time[],     // Time
const double& open[],       // Open
const double& high[],       // High
const double& low[],        // Low
const double& close[],      // Close
const long& tick_volume[],  // Tick Volume

const long& volume[],       // Real Volume

{

int openLastElement=ArraySize(open)-1;

Print("openLastElement="+openLastElement, " O="+open[openLastElement]," H="+high[openLastElement]," L="+low[openLastElement]," C="+close[openLastElement]);

return(rates_total);

}

```
Second last (previous) bar on ST chart shows a bar O=1.0951, H=1.0951, L=1.0950, C=1.0950. (This bar is EUR/USD at 2015.08.03 23:59)

At this stage the next (current) bar being is being drawn and the only 1st tick of this new bar has been drawn on the chart. (This bar is EUR/USD at 2015.08.04 00:00) The data window shows the following values for this new bar:

O=1.0951, H=1.0951, L=1.0951, C=1.0951.

However, the above Print statement results show that the arrays (open, high, low, close) still contain the values from the previous bar. Only when the 2nd tick of the new bar arrives, do we see the results from the 1st tick n the arrays. For every new tick of each bar, the same is true: The arrays contain the information only up to the previous tick.

You can test it for yourself to see it for yourself, if you wish. Is this a bug or is MQL5 designed with this intention in mind?

Moderator
33271

Hello,

Please use the SRC button when you post code. Thank you.

This time, I edited it for you.

Moderator
33271

tbaronetti:

I am testing an MQL5 custom indicator on historical data using Strategy Tester. See below:

Second last (previous) bar on ST chart shows a bar O=1.0951, H=1.0951, L=1.0950, C=1.0950. (This bar is EUR/USD at 2015.08.03 23:59)

At this stage the next (current) bar being is being drawn and the only 1st tick of this new bar has been drawn on the chart. (This bar is EUR/USD at 2015.08.04 00:00) The data window shows the following values for this new bar:

O=1.0951, H=1.0951, L=1.0951, C=1.0951.

However, the above Print statement results show that the arrays (open, high, low, close) still contain the values from the previous bar. Only when the 2nd tick of the new bar arrives, do we see the results from the 1st tick n the arrays. For every new tick of each bar, the same is true: The arrays contain the information only up to the previous tick.

You can test it for yourself to see it for yourself, if you wish. Is this a bug or is MQL5 designed with this intention in mind?

You are wrong, check again (tested with build 1150).