Общайтесь с разработчиками через Сервисдеск! - страница 8

 
pronych:

Будьте добры,  объясните что происходит!

В последнем билде (306), как поперло жрать трафик, 100 метров сожрало. Попытался выяснить в чем дело, понял только, что файлы истории стали докачиваться. Выросли порядка в два раза (каждый!) на нескольких инструментах. Я имею ввиду файлы гггг.hcc, по всем открытым графикам и по всем загруженным годам. То-есть, они уже и так были загружены, и даже тест на них проходил с 2005 по 2010.07.31, а тут на тебе скачанная история начинает расти пофайлово каждый год... По идее, докачать период на 3х инструментах 2010.07.31-2010.08.08 оказалось столько же, как за весь период с 93г на десяти. Что там за новая инфа добавилась, любопытно? Просто у меня трафик ограничен, вот и испугался, что за дела...

спреды
 
pronych:

Будьте добры,  объясните что происходит!

В последнем билде (306), как поперло жрать трафик, 100 метров сожрало. Попытался выяснить в чем дело, понял только, что файлы истории стали докачиваться. Выросли порядка в два раза (каждый!) на нескольких инструментах. Я имею ввиду файлы гггг.hcc, по всем открытым графикам и по всем загруженным годам. То-есть, они уже и так были загружены, и даже тест на них проходил с 2005 по 2010.07.31, а тут на тебе скачанная история начинает расти пофайлово каждый год... По идее, докачать период на 3х инструментах 2010.07.31-2010.08.08 оказалось столько же, как за весь период с 93г на десяти. Что там за новая инфа добавилась, любопытно? Просто у меня трафик ограничен, вот и испугался, что за дела...

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

Несколько месяцев назад создал заявку: #11486

Ответов от разработчиков не было.

Проверьте, пожалуйста. 

спасибо за сообщение. ошибка исправлена. исправление станет видно в ближайшее время
 

Разработчикам.

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

328 билд, файл Trade.mqh, класс CTrade

Методы: PositionModify, PositionClose, OrderOpen, OrderModify и OrderDelete в обработке ошибок стоит "Print("CTrade::PositionOpen::OrderSend: ",ResultRetcodeDescription());"

Должно быть:

"Print("CTrade::PositionModify::OrderSend: ",ResultRetcodeDescription());" ,

"Print("CTrade::PositionClose::OrderSend: ",ResultRetcodeDescription());"  и т.д.

  

Мелочь, конечно, но при отладке сбивает с толку.

 
Разработчикам!


Пишу свой компонент для работы с чартом, на подобии стандартного CChart.

Возникла проблема с перегрузкой функций при наследовании.

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

Первый вариант (стандартный) компилируется без ошибок, второй выдает ошибку и компилироваться не хочет

1. объявления в CChart, работает без особых проблем.

color ColorBackground() const;
bool  ColorBackground(color new_color);

2. Объявление в моем классе, выдает вот эту ошибку - 'ColorBackground' - ambiguous call to overloaded function

color ColorBackground(long ID=0);
bool  ColorBackground(color NewColor,long ID=0);
//Как вариант
color ColorBackground(long ID);
bool  ColorBackground(color NewColor,long ID=0);

Причем, ошибка появляется если производится попытка определить текущий цвет. Если цвет меняется (устанавливается новый)  ошибка не возникает.

PS

В других вариантах вот эта ошибка появляется - 'ColorBackground' - ambiguous call to overloaded function with the same parameters

Будем заявку оформлять или так разберетесь?

PPS

Все нормально компилируется только если в предке сделать вот такое объявление

color ColorBackground(long ID);
bool  ColorBackground(color NewColor,long ID);

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

Самое интересное то что при компиляции класса предка даже намеков на ошибочность действий нет, хотя в этом случае предупреждения желательны (еще желательны комментарии в справке по этому поводу)...

 

Все верно ругается компилятор, это не наша ошибка.

У Вас две потенциально одинаковые функции из-за дефолтных параметров. Не нужно самостоятельно создавать грабли для себя.


 
Renat:

Все верно ругается компилятор, это не наша ошибка.

У Вас две потенциально одинаковые функции из-за дефолтных параметров. Не нужно самостоятельно создавать грабли для себя.


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

А то получается ситуация при которой могут быть созданы десятки функций, компилятор их пропустит, а потом со СПОКОЙСТВИЕМ МАМОНТА перед ВСЕМИРНЫМ ПОХОЛОДАНИЕМ сообщит об ошибке...

PS

Заодно и в справке об этом на мой взгляд следует упомянуть (желательно с примером как делать можно, а как нет).

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
Interesting:

Самое интересное то что при компиляции класса предка даже намеков на ошибочность действий нет, хотя в этом случае предупреждения желательны (еще желательны комментарии в справке по этому поводу)...

А это не подойдет - Перегрузка?

В пределах одного класса можно определить два или более методов, которые совместно используют одно и тоже имя, но имеют разное количество параметров. Когда это имеет место, методы называются перегруженными, а о процессе говорят как о перегрузке метода. Перегрузка метода – один из способов, с помощью которых реализуется полиморфизм. Перегрузка методов в классах производится по тем же правилам, что и перегрузка функций.

Если для вызываемой функции нет точного соответствия, то компилятор производит поиск подходящей функции по трем уровням последовательно:

  1. поиск среди методов класса;
  2. поиск среди методов базовых классов, последовательно от ближайшего предка до самого первого;
  3. поиск среди остальных функций.

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


 
Rosh:

А это не подойдет - Перегрузка?

В пределах одного класса можно определить два или более методов, которые совместно используют одно и тоже имя, но имеют разное количество параметров. Когда это имеет место, методы называются перегруженными, а о процессе говорят как о перегрузке метода. Перегрузка метода – один из способов, с помощью которых реализуется полиморфизм. Перегрузка методов в классах производится по тем же правилам, что и перегрузка функций.

Если для вызываемой функции нет точного соответствия, то компилятор производит поиск подходящей функции по трем уровням последовательно:

  1. поиск среди методов класса;
  2. поиск среди методов базовых классов, последовательно от ближайшего предка до самого первого;
  3. поиск среди остальных функций.

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


Как сказать. На мой взгляд нет. Прямого упоминания о подобных проблемах я лично не увидел (может плохо смотрел). Да и общие формулировки какие-то уж очень расплывчатые (правда опять же на мой взляд).

Что мы имеем:

1. Примеров как нужно нет в описаниях;

2. Точных или более детальных формулировок нет;

3. Предупреждений на уровне компилятора о возможных проблемах тоже нет.

А что есть? Есть три абзаца текста (который явно не рассчитан на простых смертных и требует дополнительной информации) + предупреждение о критической ошибке во время попытки использовать функционал уже готового и прошедшего контроль компилятора класса.

Это хорошо что я имею определенный опыт в программировании, да и класс оказался МАЛЕНЬКИЙ по моим меркам - всего каких то 1000 строк. А что будет если модуль класса будет в 10000 строк или на подобную ошибку натолкнется человек только начинающий программировать на MQL5 и никогда до этого не сталкивающийся с ООП (обычный трейдер одним словом)?

Кроме того тут явно говориться о функциях с разным количеством параметров, но нет ЯВНОГО упоминания о функциях имеющих разные параметров.

PS

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

Как максимум еще и статью написать про возможные подводные камни при перегрузке функции в создаваемом классе.

 
Interesting:

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

Как максимум еще и статью написать про возможные подводные камни при перегрузке функции в создаваемом классе.

Лично я могу только догадываться, что у Вас там произошло. Предоставьте заявку в Сервисдеск, тогда точнее скажут. Ваше сообщение не менее туманно для меня.
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
Причина обращения: