Обновление платформы MetaTrader 4 build 670: виртуальный хостинг, web-запросы и работа с сигналами из MQL-программ - страница 48

 
Renat:

Нет.

Для отображения любых текстов в любой позиции чарта вы можете использовать объекты.


Спасибо за ответ! Я это знаю, но с объектами не так удобно и сложнее! Ну Вам видней, а я пользуюсь комментом, имея инфу только 29 параметров из 64 возможных, т.к. остальное расходуется на пробелы, и в колонке параметры яснее читаются, чем в строках среди котиров! Успехов Вам!
 

Продолжая тему о работе графических объектов, расположенных на "чужом" графике (отличном от того, на котором запущен советник) я заметил следующее: после указания ChartSetInteger(chart_id,CHART_EVENT_MOUSE_MOVE,true) начинают отправляться сообщения о перемещении мыши для графика к которому прикреплен советник, а не для графика, chart_id которого я указал в функции ChartSetInteger. Так и должно быть?

Как получить сообщение о том, что пользователь щелкнул мышью на объекте, расположенном на другом графике (chart_id графика я знаю)?

 
zdd:

Продолжая тему о работе графических объектов, расположенных на "чужом" графике (отличном от того, на котором запущен советник) я заметил следующее: после указания ChartSetInteger(chart_id,CHART_EVENT_MOUSE_MOVE,true) начинают отправляться сообщения о перемещении мыши для графика к которому прикреплен советник, а не для графика, chart_id которого я указал в функции ChartSetInteger. Так и должно быть?

Как получить сообщение о том, что пользователь щелкнул мышью на объекте, расположенном на другом графике (chart_id графика я знаю)?

Прямым способом - никак.

На другом графике запустите эксперта, который после получения мышиного события будет отправлять пользовательские события нужному графику

 
stringo:

Прямым способом - никак.

На другом графике запустите эксперта, который после получения мышиного события будет отправлять пользовательские события нужному графику

Лучше всё же запустить индикатор, посылающий события на требуемый график. Тогда на том (другом) графике можно будет и экспертов запускать.
 

В вариантах типов файлов в "Save as" присутствуют разнообразные типы файлов. Однако я наткнулся (с помощью собственной невнимательности) на ситуацию, когда присутствовали только "*.mq5" и "*.*".

Делается это так: в открытый файл вносим изменения, а потом, забыв сохранить, меняем названия и/или расположения папок так, чтобы пути, по которому был открыт несохранённый файл, больше не существовало. При попытке закрыть МЕ предлагается сохранить изменённый файл с аскетичным набором типов файлов.

 

как правильно сравнивать double c нулем ?

if (MathAbs(curLots)-MathAbs(newLots)>0)

{//работает}

else if (MathAbs(curLots)-MathAbs(newLots)<0)

{//не работает} 

curLots и newLots double переменные ранее нормализованные до 2-х знаков после запятой.. значения в обоих переменных не ноль и равны..

почему выражение разницы не работает, причем далее эта разница передается параметром в функцию, где этот параметр при сравнении <= 0 корректно отрабатывает..

теперь чтобы сравнить выражение с нулем его нужно сначала переменной присвоить, а затем переменную с нулем сравнивать, так что ли ?

 
Разницу значений double  чисел округляете до нужной точности и сравниваете с нулем. Это тоже что проверить на равенство double числа.
 
keekkenen:

как правильно сравнивать double c нулем ?

curLots и newLots double переменные ранее нормализованные до 2-х знаков после запятой.. значения в обоих переменных не ноль и равны..

почему выражение разницы не работает, причем далее эта разница передается параметром в функцию, где этот параметр при сравнении <= 0 корректно отрабатывает..

теперь чтобы сравнить выражение с нулем его нужно сначала переменной присвоить, а затем переменную с нулем сравнивать, так что ли ?

Вот ключевые слова в твоей проблеме...

В коде разница должна быть только больше нуля или меньше нуля, а если обе переменные равны, то их разница равна нулю, что нигде не учитывается...

 
keekkenen:

как правильно сравнивать double c нулем ?

curLots и newLots double переменные ранее нормализованные до 2-х знаков после запятой.. значения в обоих переменных не ноль и равны..

почему выражение разницы не работает, причем далее эта разница передается параметром в функцию, где этот параметр при сравнении <= 0 корректно отрабатывает..

теперь чтобы сравнить выражение с нулем его нужно сначала переменной присвоить, а затем переменную с нулем сравнивать, так что ли ?


double c нулём можно сравнивать безболезненно. Просто сравниваете и всё.

Но только если речь идёт о константном нуле, а не о переменной (в принципе, с переменной тоже можно, если Вы уверены, что в ней содержится 0)

 
AlexeyVik:

Вот ключевые слова в твоей проблеме...

видимо я некорректно выразился про второе условие.. обе переменные имели значение -0.47, но управление переходило в блок отмеченный {//не работает}  

и там что-то делалось, но туда попадать не должно..

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