Помогите новичку.... Прошу очень!!! - страница 2

 
sergeev:

где код который можно скомпилировать ?

где журнал в котором показана данная ошибка ?


Прошу прощенья. Мне казалось достаточно описать. Значит так... вот код.

Там есть строка int ret=MessageBox("П = "+ g_m+" "+" " +m1+" "+ limit);

По идее там долна показываться переменная, которая в цикле в основной части start перебирается циклом.

for(j=0; j<limit; j++, g_m++). Дк в рамках этого цикла и запускается процедура в которой строк и отражается в сообщении...

Вот так... Помогите???!!!

Файлы:
 
MessageBox в тестере не работает.
юзайте Comment или Print
 
rick1177:

Ребята, а помогите ещё с одним моментом....

Я обяъвляю глобальную переменную, на пример

int m1;

Дальше в тексте...

int start()
{

for(j=0; j<limit; j++, m1++) ema();

}

Ловит переменная в цикле некоторое значение... и в рамках цикла запускается функция.

void ema()
{

int ret=MessageBox("П = " +m1+" "+ limit);
}

И вот по какой-то причине у меня переменная не передаётся в функцию...

Что это значит??? Что не так????

int start(){
   for(int j=0; j<5; j++, m1++) {
      ema();
      ema2(m1);
   Alert("ema2() ->> m++ "+m1 +"не изменится, т.к. функция не получила ссвлку");
      ema3(m1);
   Alert("ema3() ->> m++ "+m1);
   }
}

void ema(){
   Alert("ema() m1= "+m1);
}
void ema2(int m){ //адрес на переменную (массив ...), т.е. функция не может изменить значения
   Alert("ema2() m= "+m);
   m++;
}
void ema3(int &m){ //ссылка на переменную (массив ...), т.е. функция может изменить значения
   Alert("ema3() m=  "+m);
   m++;
}

Скрипт в скрипты.

Файлы:
gf.mq4  1 kb
 
costy_:

Скрипт в скрипты.


огромное спасибо.

Прошу ещё немного помощи для понимания....

Посмотрел методику расчёат EMA https://www.mql5.com/ru/code/7534

Вот что инетерсует...

Если посмотреть расчёт по формуле в учебнике, то там формула EMA = (CLOSE (i) * P) + (EMA (i - 1) * (1 - P)) говорит, что показатель есть результат сложения цены закрытия текущей + предыдущей скользящей средней...

в расчётном коде есть пункт...

while (pos >= 0) {
if (pos == Bars - 2)
ExtMapBuffer[pos+1] = (Open[pos+1]+Close[pos+1])/2;
ExtMapBuffer[pos] = GetPrice(pos)*pr+ExtMapBuffer[pos+1]*(1-pr);
pos--;
}

Если я правильно понимаю код..., то после определения значнеия pos, а оно расчитывается как число Баров минучс число пересчитанных минус 1...

То получается что цикл Вайл перебирает все бары до 0. Я правильно понимаю, что например если на графике 40 000 Баров, то он проходится по всем????

Как понеимать эту часть??? Дайте пояснений?

Пожалуйста и спасибо.

Причина обращения: