# iHigh() Problem 65

I have a problem with strategy tester.

When applying High, Low, Close, Open it always returns the same values (although the values are in fact different).

If I do High, Low, Close, Open it works as expected.

Any idea why this is? 616

If you are doing this for the first tick of Bar 0 then the first tick is OHLC all at the same time and therefore the values will be equal. I hope I've understood you problem

V 1049

When applying High, Low, Close, Open it always returns the same values (although the values are in fact different).

always? eg, if look at a 'first tick' new bar oftentimes it has values <> to each other, yes? Otherwise how can terminal plot bar graphic? ie, the graphic is not just an horizontal bar on the chart is it?

Open will always be same value, that is a constant value established on first tick, just like Time is.

L,C,H are dynamic and can change on each new incoming server data tick.

Perhaps you could show code, which demonstrates your observation. ie, Print()'s

btw, not attempting to patronize you but please remember that truncation (to 4 decimals) happens using Print().

eg, if d = 1.12345 then Print(d); displays "1.1234" but Print(DoubleToStr(d,Digits)); displays "1.12345"

It can easily happen (I bear witness to it all the time ;) that what one printed out is far from what's in memory...

hth 65

fbj:

always? eg, if look at a 'first tick' new bar oftentimes it has values <> to each other, yes? Otherwise how can terminal plot bar graphic? ie, the graphic is not just an horizontal bar on the chart is it?

Open will always be same value, that is a constant value established on first tick, just like Time is.

L,C,H are dynamic and can change on each new incoming server data tick.

Perhaps you could show code, which demonstrates your observation. ie, Print()'s

btw, not attempting to patronize you but please remember that truncation (to 4 decimals) happens using Print().

eg, if d = 1.12345 then Print(d); displays "1.1234" but Print(DoubleToStr(d,Digits)); displays "1.12345"

It can easily happen (I bear witness to it all the time ;) that what one printed out is far from what's in memory...

hth 65

The thing I do not understand is when I do:

Open, High, Low, Close it returns four times

today's open price. I would expect it to return today's open, today's high, today's low and today's close .

If I do Open, High, Low, Close it works fine, i.e. it returns yesterday's open, yesterday's high, yesterday's low and yesterday's close . 616

The only way that happens AFAIK is if it's the first tick of the bar... would need to see some code to advise further.

V 65

Print("iOpen: ", iOpen(Symbol(), PERIOD_D1, 0));
Print("iLow: ", iLow(Symbol(), PERIOD_D1, 0));
Print("iHigh: ", iHigh(Symbol(), PERIOD_D1, 0));

Print("iClose: ", iClose(Symbol(), PERIOD_D1, 0));

returns four times today's open. Why?

Print("iOpen: ", iOpen(Symbol(), PERIOD_D1, 1));
Print("iLow: ", iLow(Symbol(), PERIOD_D1, 1));
Print("iHigh: ", iHigh(Symbol(), PERIOD_D1, 1));
Print("iClose: ", iClose(Symbol(), PERIOD_D1, 1));

works fine i.e. it returns yesterday's open, yesterday's high, yesterday's low and yesterday's close . 616

So are you saying if you run that code as a script with no other code, in the middle of the day it produces 4 equal values?

```int start()
{
//----
Print("iOpen: ", iOpen(Symbol(), PERIOD_D1, 0));
Print("iLow: ", iLow(Symbol(), PERIOD_D1, 0));
Print("iHigh: ", iHigh(Symbol(), PERIOD_D1, 0));
Print("iClose: ", iClose(Symbol(), PERIOD_D1, 0));
//----
return(0);
}``` 1049

Viffer:

So are you saying if you run that code as a script with no other code, in the middle of the day it produces 4 equal values?

so where's the problem? - confused am I...

2010.07.30 18:32:12 34001 EURUSD,M15: removed
2010.07.30 18:32:12 34001 EURUSD,M15: uninit reason 0
2010.07.30 18:32:12 34001 EURUSD,M15: iClose: 1.308
2010.07.30 18:32:12 34001 EURUSD,M15: iHigh: 1.3107
2010.07.30 18:32:12 34001 EURUSD,M15: iLow: 1.2978
2010.07.30 18:32:12 34001 EURUSD,M15: iOpen: 1.2988
2010.07.30 18:32:12 34001 EURUSD,M15: iClose: 1.3047
2010.07.30 18:32:12 34001 EURUSD,M15: iHigh: 1.3094
2010.07.30 18:32:12 34001 EURUSD,M15: iLow: 1.298
2010.07.30 18:32:12 34001 EURUSD,M15: iOpen: 1.3079
2010.07.30 18:32:12 34001 EURUSD,M15: loaded successfully
2010.07.30 18:32:06 Compiling '34001'

as one would expect... all are different.

using:

```int start()
{
Print("iOpen: ", iOpen(Symbol(), PERIOD_D1, 0));
Print("iLow: ", iLow(Symbol(), PERIOD_D1, 0));
Print("iHigh: ", iHigh(Symbol(), PERIOD_D1, 0));
Print("iClose: ", iClose(Symbol(), PERIOD_D1, 0));
//returns four times today's open. Why?

Print("iOpen: ", iOpen(Symbol(), PERIOD_D1, 1));
Print("iLow: ", iLow(Symbol(), PERIOD_D1, 1));
Print("iHigh: ", iHigh(Symbol(), PERIOD_D1, 1));
Print("iClose: ", iClose(Symbol(), PERIOD_D1, 1));
return;
}
``` 22428

If you are running under the tester and NOT on current symbol or current timeframe D1, there's a tester limitation reading bar 0. 65

I only have daily data (OHLC). And as I said the following code return four times today's open.

```Print("iOpen: ", iOpen(Symbol(), PERIOD_D1, 0));
Print("iLow: ", iLow(Symbol(), PERIOD_D1, 0));
Print("iHigh: ", iHigh(Symbol(), PERIOD_D1, 0));
Print("iClose: ", iClose(Symbol(), PERIOD_D1, 0));
```