Получай значение в точке для одной, потом для другой и вычитай одно из другого.
Дистанция между 2мя МА - это значение индикатора MACD
Суть: нужен пример или несколько примеров MQL4 или MQL5, для реализации расчета расстояния (дистанции) между двумя скользящими линиями индикатора Moving Average.
Допустим две скользящие на графике одна с периодом 10 и вторая 200 и обе с простым усреднением SMA - Simple без сдвигов, применение к Close. Нужно рассчитать в пунктах расстояние линии с периодом 10 от линии с периодом 200.
MQL4
//+------------------------------------------------------------------+ int GetDistanceBetweenMAinPoints(string sy, // символ МА int timeframe, // таймфрейм МА int period_ma1, // период МА 1 int shift_ma1, // смещение МА 1 int method_ma1, // метод расчёта МА 1 int appled_price_ma1, // цена расчёта МА 1 int period_ma2, // период МА 2 int shift_ma2, // смещение МА 2 int method_ma2, // метод расчёта МА 2 int appled_price_ma2, // цена расчёта МА 2 int shift // бар, на котором рассчитать дистанцию ) { double pt=SymbolInfoDouble(sy,SYMBOL_POINT); double ma1=iMA(sy,timeframe,period_ma1,shift_ma1,method_ma1,appled_price_ma1,shift); double ma2=iMA(sy,timeframe,period_ma2,shift_ma2,method_ma2,appled_price_ma2,shift); return(int((ma1-ma2)/pt)); } //+------------------------------------------------------------------+
А в общем по вашему вопросу так:
int distance=int((iMA(Symbol(),Period(),10,0,MODE_SMA,PRICE_CLOSE,0)-iMA(Symbol(),Period(),200,0,MODE_SMA,PRICE_CLOSE,0))/Point());
получим дистанцию в пунктах между двумя МАшками с вашими параметрами на текущем графике, на текущем таймфрейме, на текущем баре
Спасибо всем за помощь задача решена
<...> double RedLine = iMA(Symbol(), 0, RedPeriud, 0, MODE_SMA, PRICE_CLOSE, 2); double BlueLine = iMA(Symbol(), 0, BluePeriud, 0, MODE_SMA, PRICE_CLOSE, 2); //double Delta=(RedLine - BlueLine)/Point; if(Digits==3 || Digits==5) {Delta1=(RedLine - BlueLine)/ 10 /Point; Delta2=(BlueLine - RedLine)/ 10 /Point;} else if(Digits==2 || Digits==4) {Delta1=(RedLine - BlueLine)/Point; Delta2=(BlueLine - RedLine)/Point;} <...>
Спасибо всем за помощь задача решена
if( _Digits == 3 || _Digits == 5 ) Delta = MathAbs(( RedLine - BlueLine ) / 10 / Point ); else if( _Digits == 2 || _Digits == 4 ) Delta = MathAbs(( RedLine - BlueLine ) / Point );
А если Digits будет равно 1 или 0 или 6, например?))
if( _Digits == 3 || _Digits == 5 )... и else if( _Digits == 2 || _Digits == 4)...
эти конструкции для цен с пятью и тремя знаками или двумя и четырьмя знаками после запятой к примеру, может быть цена на золото 1225,999 а может быть токая же цена но у другого брокера 1225,99 или на пример у пары EUR-USD 1,10250 или 1,1025 от сюда и следует ответ - Digits 1 или 0 или 6 не может быть так как стандартом идут именно 3 или 5 и 2 или 4 так как бы будет правильней.
А кто то так не пробовал
double Poin if(Digits<=0) Poin=1; if(Digits<=1 && Digits>0 ) Poin=0.1; if(Digits<=2 && Digits>1 ) Poin=0.01; if(Digits<=3 && Digits>2 ) Poin=0.001; if(Digits<=4 && Digits>3 ) Poin=0.0001; if(Digits<=5 && Digits>4 ) Poin=0.0001;
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Суть: нужен пример или несколько примеров MQL4 или MQL5, для реализации расчета расстояния (дистанции) между двумя скользящими линиями индикатора Moving Average.
Допустим две скользящие на графике одна с периодом 10 и вторая 200 и обе с простым усреднением SMA - Simple без сдвигов, применение к Close. Нужно рассчитать в пунктах расстояние линии с периодом 10 от линии с периодом 200.