# Logic error in current bar

23

Hi Techies,

I need to initiate order when the current bar is opened at some price and moved 5 pips high or low and return to the open price

regards,

Naveen

Moderator
2317

Hi, what have you got so far?
23

honest_knave:
Hi, what have you got so far?
I am not able to calculate the current price moved to 5 pips or not and returned to opened price.
23

int Direction()
{
int direction=NEUTRAL;
static double price[3];
price[2]=price[1];
price[1]=price[0];

if(price[2] - price[0] >= 0.00006)
{
while(price[2] == price[0])
{
return direction = UP;
}
}
if(price[0] - price[2] >= 0.00006)
{
while(price[2] == price[0])
{
return direction = DOWN;
}
}
Moderator
2317

If this is what you want:

grknaveen:

I need to initiate order when the current bar is opened at some price and moved 5 pips high or low and return to the open price

You can make it easier.

Is this MQL4?

Compare Open[0] to High[0] - this should be greater than 5 pips.

Compare Open[0] to Close[0] - this will tell you if price has returned to the open price.

Use Volume[0] if you want it to happen within so many ticks.

You also might want to change this:

if(price[2] - price[0] >= 0.00006)

It won't work on JPY crosses, or 4 digit brokers.

23

I am able to get the prices of current bar but the validation is problem for me
23

yes this is MQL4
23

you mean to say the below code will work:

if((High[0] - Open[0] >= 0.0005) && (Open[0] == Close[0])){

Moderator
2317

That's the general gist of it.

A few extra things to consider...

I would do Open[0]<=Close[0] rather than ==

I would restrict how many orders can be placed each bar. Otherwise, if price stays below the Open it will keep firing off buy orders.

16112

grknaveen: you mean to say the below code will work:
if((High[0] - Open[0] >= 0.0005) && (Open[0] == Close[0])){
}
1.  Play video Please edit your post. For large amounts of code, attach it.

2. You are not adjusting for 4/5 digit brokers/JPY pairs. (5 * pip)
double   pip        = StringFind(_Symbol,"JPY") < 0 ? 0.01 : 0.0001;
int      pip_digits = (int)MathLog10(pip/_Point);
int      slippage   = 3 * int(pip / _Point);

3. The two values will never be equal The == operand. - MQL4 forum as honest_knave pointed out.