# Quick moving average question

162

Hi Guys,

I'm having trouble with one of my sell signals.

The buy signal works perfect but when I turn it around for a sell signal it gives me a False statement the whole time.

double MA1L15 = iMA(NULL,15,7,0,MODE_SMA,PRICE_OPEN,0);
double MA2L15 = iMA(NULL,15,21,0,MODE_SMA,PRICE_CLOSE,0);

bool buy_condition_2 = (MA1L15 > MA2L15);
bool sell_condition_2 = (MA1L15 < MA2L15);

Has anyone encountered this before?

Anton

Moderator
33784

Print your value and check why.
162

Alain Verleyen:
Print your value and check why.

I tried that already and both moving averages have a value.

This is a example of what it printed:

EURUSD,H1: Sell Conditions

EURUSD,H1: Sell 1true

EURUSD,H1: Sell 2false

EURUSD,H1: MA2L151.088302380952381
EURUSD,H1: MA1L151.088302857142855

So my first selling condition, which I didn't post in my original post is true. It is just the second one that for some reason won't accept it.
Moderator
33784

C0mput3r:

I tried that already and both moving averages have a value.

This is a example of what it printed:

EURUSD,H1: Sell Conditions

EURUSD,H1: Sell 1true

EURUSD,H1: Sell 2false

EURUSD,H1: MA2L151.088302380952381
EURUSD,H1: MA1L151.088302857142855

So my first selling condition, which I didn't post in my original post is true. It is just the second one that for some reason won't accept it.
bool sell_condition_2 = (MA1L15 < MA2L15);

sell_condition_2 = (1.088302857142855 < 1.088302380952381) : false

It's correct.

Though you have only difference on 7th decimal.

162

Alain Verleyen:
bool sell_condition_2 = (MA1L15 < MA2L15);

sell_condition_2 = (1.088302857142855 < 1.088302380952381) : false

It's correct.

Though you have only difference on 7th decimal.

I don't understand then where I could be wrong. It shows that 7 period MA is always higher than the 21 period MA. How can this be? It is averaged out so it should definitly be possible for the 21 to be higher than the 7 at some point.

I just want it to sell when 7 MA < 21 MA and buy when 7 MA > 21 MA

65704

C0mput3r:

I don't understand then where I could be wrong. It shows that 7 period MA is always higher than the 21 period MA. How can this be? It is averaged out so it should definitly be possible for the 21 to be higher than the 7 at some point.

I just want it to sell when 7 MA < 21 MA and buy when 7 MA > 21 MA

If you want to sell when fast is less than slow and buy when fast is greater than slow, with your conditions you are always going to be either selling or buying on each and every bar regardless of the previous state.  You should consider using only crosses instead.

PS: it is not showing that 7 period MA is always higher than 21 period MA (at least at my terminal it does not). It works as expected. Check the rest of your code for some accidental assignment
162