Новая версия MetaTrader 4 Client Terminal build 432 - страница 24

 
stringo:

Это не баг. Это именно так и реализовано с самого начала. А именно: "Обновление значения переменной, передаваемой по ссылке, происходит только после выхода из функции."

И это поведение не будет меняться.

Кстати проверил это утверждение и оно ошибочно - после выхода из функции обновления переменной не происходит и все расчеты становятся напрасными. На распечатке будет func1: x=1,func2: x=2,func1: x=1

int x=0;
int init()
{
   func1(x);
}
//---------
void func1(int& x){
{   
   x = 1;
   Alert("func1: x=",x);
   func2();
   Alert("func1: x=",x);   
}
//---------
void func2()
{   
   x = 2;
   Alert("func2: x=",x);
}
 
Andrei01:

Кстати проверил это утверждение и оно ошибочно - после выхода из функции обновления переменной не происходит и все расчеты становятся напрасными. На распечатке будет func1: x=1,func2: x=2,func1: x=1


Что это Вы представили в качестве примера?

В функции func2 переменная x глобальна (так как нет её ни среди локальных переменных, ни среди параметров)

В функции func1 переменная x локальна. По факту - это совершенно разные переменные.

То что Вы продемонстрировали, никак не противоречит моему утверждению: "переменная, переданная по ссылке, обновляется только после выхода из функции". Вы вызываете функцию func2, ещё не выйдя из функции func1.

 
stringo:

В функции func1 переменная x локальна. По факту - это совершенно разные переменные.

Чтобы х была локальна внутри func1, нужно либо объявить внутри функции новую переменную х либо передать копию глобальной, но тогда это описывается func1(int x).

Если же она была бы локальна и была бы другой переменной, то она не должна была никак влиять на глобальную переменную х, которая изменяется внутри func1.

 
хватит уже флудить, объяснили как работает, вот и используйте, не нравится - напишите свою версию mql41/2 и пользуйтесь ей..
 
keekkenen:
хватит уже флудить, объяснили как работает, вот и используйте, не нравится - напишите свою версию mql41/2 и пользуйтесь ей..
вместо флуда лучше бы вы объяснили как это работает, если поняли, а то все объяснения пока что не подтвердились на практике.
 
Andrei01:

вот еще баг компилятора с видимостью переменных. на распечатке будет func1:x=1, func2:x=0 хотя это та же самая переменная.

Да, очень странная и сомнительная особенность. Я вроде хорошо знаком с документацией, но про такую особенность слышу впервые.
 
Andrei01:
вместо флуда лучше бы вы объяснили как это работает, если поняли, а то все объяснения пока что не подтвердились на практике.

Я думаю что так:

int gv = 0;  // Глобальная переменная.

void fn()
{
   gv = 5;   // Изменения по адресу gv произойдут немедленно.
   return;
}
int gv = 0;  // Глобальная переменная.

void fn(int &refToGv)   // refToGv - ссылка на gv.
{
   refToGv = 5;   // Изменения немедленно, произойдут только по адресу refToGv (немного странно звучит, но ...).
   return;        // А вот сейчас изменения произойдут по адресу gv.
}
int gv = 0;  // Глобальная переменная.

void fn(int &refToGv)   // refToGv - ссылка на gv.
{
   refToGv = 5;
   interFn();    // После возврата из данной функции gv = 10, а refToGv по-прежнему = 5.
   return;
}

void interFn()
{                // В данный момент gv = 0.
   gv = 10;
   return;
} 
 

Новая версия... Новая версия... = головная боль трейдерам.

На моём стареньком нетбуке последняя версия уже вопще не запускается даже.

Хотелось бы взглянуть на минимальные требования к железу.

Почему их не указывают, и при выпуске каждой следующей версии в том числе ?

Если новая версия челу уже не подходит по железу - у пользователя должен быть выбор, обновляться или продолжать

работу на той версии, что у него уже работает.

Ведь железо человек обновляет раз в год, а то и в пятилетку,

а вы шлёпаете обновления, как пирожки на привокзальной площади... - за вами попросту не угнаться.

И как я вижу по коментам пользователей - либо вовсе их не обкатываете, либо этот процесс выполняется весьма частичноусловно...

 
Diko:

...

Купите "железное" феррари и катайтесь на нём вплоть до МТ8! :-)

Нет баблеца на мин требования по железу? - слушайте А.Герчика - он фигню не скажет: "Идите работать на стройку или таксистом. Позже приходите, как будете нам интересны."

 
Можно ли изменять настройки "стандартной" сетки в МТ4?
Например каждые 50 пипсов относительно круглых уровней и полностью отменить сетку по вертикали,
достаточно уже имеющихся разделителей периодов.
Если "нет" то сделайте это возможным в будущих версиях (можно и через ini файл).
Причина обращения: