Глючит MetaTrader 5 или переход с MetaTrader 4

 

Заметил интересную работу в МТ5, возможно это только у меня такое.

1. Вывожу на экран данные через функцию Comment ("123"). Данные отображаются, все хорошо.
Следующей попыткой пытаюсь очистить данные путем вывода функции Comment (""). На экране продолжают висеть старые "123".
Такую очистку можно применять только в МТ4?

2. Формирую вывод значений по буферу индикатора, например провести линию от Хая 5-го бара до Лоу 4-го бара. Линия проводится, здорово.
В настройках указано "indicator_type1 DRAW_SECTION".
Меняю код на провести линию от Хая 6-го бара до Лоу 3-го бара. Компилирую... Ничего не поменялось. Линия проведена по старому условию.
При закрытии-открытии графика с заново установкой индикатора линия прорисовывается правильно.

3. Есть переменная (int Myvar;)
В МТ4 если ее вывести на экран получаю значение "0".
Вывожу переменную в МТ5 и получаю значение "489433488". От куда оно берется?

Я не правильно работаю с МТ5? В МТ4 с такими моментами все в порядке. Откройте глаза на эти истины, пожалуйста. :)

 
Roman Starinskiy:

Заметил интересную работу в МТ5, возможно это только у меня такое.

1. Вывожу на экран данные через функцию Comment ("123"). Данные отображаются, все хорошо.
Следующей попыткой пытаюсь очистить данные путем вывода функции Comment (""). На экране продолжают висеть старые "123".
Такую очистку можно применять только в МТ4?

2. Формирую вывод значений по буферу индикатора, например провести линию от Хая 5-го бара до Лоу 4-го бара. Линия проводится, здорово.
В настройках указано "indicator_type1 DRAW_SECTION".
Меняю код на провести линию от Хая 6-го бара до Лоу 3-го бара. Компилирую... Ничего не поменялось. Линия проведена по старому условию.
При закрытии-открытии графика с заново установкой индикатора линия прорисовывается правильно.

3. Есть переменная (int Myvar;)
В МТ4 если ее вывести на экран получаю значение "0".
Вывожу переменную в МТ5 и получаю значение "489433488". От куда оно берется?

Я не правильно работаю с МТ5? В МТ4 с такими моментами все в порядке. Откройте глаза на эти истины, пожалуйста. :)

1 Попробуйте не ""  а NULL

2 Отрисовать линию не достаточно, нужно использовать функции для перерисовки изменения значений координат.

3 Любую переменную в коде при обьявлении нужно обнулять, дабы вычистить из нее хлам ...   int Myvar = 0 ;

 
Vladimir Pastushak:

1 Попробуйте не ""  а NULL

2 Отрисовать линию не достаточно, нужно использовать функции для перерисовки изменения значений координат.

3 Любую переменную в коде при обьявлении нужно обнулять, дабы вычистить из нее хлам ...   int Myvar = 0 ;

2. При перекомпиляции данные индикатора ведь должны обнуляться.

3. Опять же перекомпиляция происходила. Программа по умолчанию в int переменные не 0 подставляет как другие языки? 

 
Roman Starinskiy:

2. При перекомпиляции данные индикатора ведь должны обнуляться.

Нет, не должны.

Еще нужно учесть, что в МТ4 и МТ5 индикаторы по-разному инициализируют индикаторные буфера. В МТ4 по умолчанию используется EMPTY_VALUE (значение не равно нулю), а в МТ5 - 0.0. Поэтому лучше взять за правило принудительно инициализировать индикаторные буфера нужным значением. 

 

3. Опять же перекомпиляция происходила. Программа по умолчанию в int переменные не 0 подставляет как другие языки? 

Инициализация значений переменных при объявлении - это аксиома. То, что часто получаем 0 без явной инициализации, говорит о том, что занимаемая приложением память к моменту запуска еще не была использована и, следовательно, содержит 0. В тех же случаях, когда приложение загружается в область ранее кем-то использованной памяти, в неинициализированных переменных будет храниться "мусор".
 

Буду знать. Спасибо. 

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

 
Roman Starinskiy:

Заметил интересную работу в МТ5, возможно это только у меня такое.

1. Вывожу на экран данные через функцию Comment ("123"). Данные отображаются, все хорошо.
Следующей попыткой пытаюсь очистить данные путем вывода функции Comment (""). На экране продолжают висеть старые "123".
Такую очистку можно применять только в МТ4?

..

После любого действия с экраном графика обновляйте экран:

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