Distance of Moving average

 

Hi guys,

Would it be possible for someone to help me find a way to tell me EA to only execute trades when there is a specific distance between two moving averages?

For example 

double ma50=iMA(Symbol(),0,50,0,1,0,0); 
double ma200=iMA(Symbol(),0,200,0,1,0,0); 

I basically want to know which command i can give into the EA so that when the distance between the 50 ema and 200 ema is say 50 pips then its safe to trade. IF the distance between them is say less than 50 pips then it doesn't trade.


Thanks in advance

 
double ma50=iMA(Symbol(),0,50,0,1,0,0); 
double ma200=iMA(Symbol(),0,200,0,1,0,0);
int pipsMA = (int)MathFloor( MathAbs(ma50-ma200)/_Point );
 
Konstantin Nikitin:

Thank you! But how many digits will this produce?

double ma50=iMA(Symbol(),0,50,0,1,0,0); 
double ma200=iMA(Symbol(),0,200,0,1,0,0);
int pipsMA = (int)MathFloor( MathAbs(ma50-ma200)/_Point );

I would like to then have an extern int which i could change 

so would this be correct 

double ma50=iMA(Symbol(),0,50,0,1,0,0); 
double ma200=iMA(Symbol(),0,200,0,1,0,0);
int pipsMA = (int)MathFloor( MathAbs(ma50-ma200)/_Point );
extern int Tradepip = 50

So could i literally put this into my buy order function 

if(pipsMA< Tradespip && Close[0]<ma50 && ma50>ma200 && !EPs(Symbol(),-1,Magic,Commentt) && !UseManual)Sig=1;

would this work?

 
int pipsMA = (int)MathFloor( MathAbs(ma50-ma200)/_Point );
Let's parse this line. To understand her.
ma50-ma200
We get the difference of values. And we'll bring it to the right value.
MathAbs
Divide by the value of one pips
_Point
And rounded
MathFloor

We get a simple value for pips. Then we compare with what we need.
 
Konstantin Nikitin:
Let's parse this line. To understand her.
ma50-ma200
We get the difference of values. And we'll bring it to the right value.
MathAbs
Divide by the value of one pips
_Point
And rounded
MathFloor

We get a simple value for pips. Then we compare with what we need.

Thank you so much this was really helpful!

I fully understand :) 

 
Trading: is say less than 50 pips
Konstantin Nikitin: int pipsMA = (int)MathFloor( MathAbs(ma50-ma200)/_Point );

A point is not a PIP.
           What is a TICK? - MQL4 and MetaTrader 4 - MQL4 programming forum

Using Point means code breaks on 4 digit brokers, exotics (e.g. USDZAR where spread is over 500 points,) and metals. Compute what a PIP is and use it, not points.
          How to manage JPY pairs with parameters? - MQL4 and MetaTrader 4 - MQL4 programming forum
          Slippage defined in index points - Currency Pairs - Expert Advisors and Automated Trading - MQL5 programming forum
 
whroeder1 :

A point is not a PIP.  

The values ​​of iMA are the same as the price. Therefore it is possible to use _Point.
With other indicators. Perhaps you need to apply another.


P.S. Well, you can universally.
double t=1;
for(int i=0; i<_Digits; i++) t /= 10;
int pipsMA = (int)MathFloor( MathAbs(ma50-ma200)/t );
 
Konstantin Nikitin:

The values ​​of iMA are the same as the price. Therefore it is possible to use _Point.
With other indicators. Perhaps you need to apply another.


P.S. Well, you can universally.

So this is the correct way?

 
Trading:

So this is the correct way?

For iMA, both parameters work. The second option, for example, for MACD. In which digits, less by 1, from the price. With what and the values, it differs from the price.

 
Konstantin Nikitin: The values ​​of iMA are the same as the price. Therefore it is possible to use _Point.

If I measured a 9 foot distance using a yard stick I would get an answer of 3 yards. If I used a foot ruler, I would get an answer of 9 feet. If I wanted yards, 9 is the wrong answer.

OP wanted an answer in PIPs. using _Point gives the wrong answer. A PIP is not a point.

 
Konstantin Nikitin: Transfer all distances to centimeters. And you will compare one value.

Numerical value of the Moving Average indicator. Tied to the price of the currency quotes
The _Point variable contains the point size of the current symbol in the quote currency.

  1. OP stated he wants to compare the distance to 50 PIPs, not to 50 points. A PIP is not a point. Either he has to translate 50 PIPs to points to compare to your delta/_Point, or he has to translate your delta/_Point to PIPs to compare to 50 (PIPs.) Your answer is wrong. Your are missing the point. You can not compare 50 (PIPs) to distance (in points) and get a valid answer.
  2. True and irrelevant.
  3. True and irrelevant.
Reason: