Ошибки, баги, вопросы - страница 2677

 
Ilyas:
Видно, что ArrayResize для объектов стал работать быстре.
Ещё раз, сложность одной из частей функции ArrayResize удалось свести от логарифма к нолю

Удалось на реальном проекте сравнил скорость работы массивов ArrayResizeReserve и ArrayOnNew для типа данных - класс с единственным полем int, количество записей 20М.

В MT5 (build 2363) по всем параметрам сравнения кроме одного ArrayOnNew оказался хуже за ArrayResizeReserve:

Доступ на чтение/запись (std::fill_n, std::copy, std::vector::clear): в 2-2.5 раз медленнее
Создание всех элементов сразу (std::vector::resize) для "холодной"/"горячей" памяти - в 1.1-1.2 раза медленнее
Создание всех элементов по одному (std::vector::push_back) для "горячей" памяти  - в 1.2 раза быстрее

 

эти ссылки в справке (эдитор) ведут на страницу ненайдену


 
Баг МТ5 (build 2363) Не соответствие приоритетов выполнения шаблонных функций в MQL в сравнении с шаблонными функциями в С++ (online: https://onlinegdb.com/HkNqBDZ88).
Проблема  возникает, когда первая функция "test" в качестве аргумента содержит полностью специализированный шаблонный базовый класс,
а вторая функция "test" перегружает первую, является шаблонной, и в качестве аргумента содержит неспециализированный шаблонный базовый класс.

template<typename T>
struct B{
   T data;
};

template<typename T>
struct BB : public B<T>{};


template<typename T>                                             
struct A{
public:
   static void test(T& src){
      printf("1");
   }
   
   template<typename TT>
   static void test(B<TT>& src){
      printf("2");
   }
};
      

void OnStart(){
   BB<int> bb;
   A<B<int>>::test(bb);         //'test' - ambiguous call to overloaded function        
}
 
Всем здравия !! Вопрос : В общем ситуация такая : я на копьютере пользуюсь двумя платформами МТ4 и МТ5 , с МТ 4 подключилась на сигнал без проблем . А вот с МТ5 на другой сигнал   не получается . Счёт есть и и движение средств отображается , но в графе счета нет номера счета , И в панели терминала нет кнопки сигналы . И арендовав сервер vps мне пишет что нужна миграция , при этом кнопка миграция не срабатывает. Подскажите почему так .
 
Anna:
Всем здравия !! Вопрос : В общем ситуация такая : я на копьютере пользуюсь двумя платформами МТ4 и МТ5 , с МТ 4 подключилась на сигнал без проблем . А вот с МТ5 на другой сигнал   не получается . Счёт есть и и движение средств отображается , но в графе счета нет номера счета , И в панели терминала нет кнопки сигналы . И арендовав сервер vps мне пишет что нужна миграция , при этом кнопка миграция не срабатывает. Подскажите почему так .

Для MetaTrader 5 (для аренды встроенного в терминал виртуального хостинга) нужна 64-битная операционная система.

 

на Win 10 кто-нибудь подключает локальных агентов? 

попробовал подключить 2 ПК, удаленный агент постоянно ready-connecring-ready-connecring... задания не получает

посмотрел в брандмауэр вроде есть галки для Metatrader Agent , экспорт - импорт агентов через файл тоже видит порты и имя ПК

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

 
Vladimir Karputov:

Для MetaTrader 5 (для аренды встроенного в терминал виртуального хостинга) нужна 64-битная операционная система.

Спасибо за ответ  , догадывалась ...
 
Igor Makanu:

на Win 10 кто-нибудь подключает локальных агентов? 

попробовал подключить 2 ПК, удаленный агент постоянно ready-connecring-ready-connecring... задания не получает

посмотрел в брандмауэр вроде есть галки для Metatrader Agent , экспорт - импорт агентов через файл тоже видит порты и имя ПК

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

дело в портах все таки было

нагуглил как из командной строки открыть в Win10 порты, запустил PowerShell на ПК который будет раздавать ресурсы с командами для открытия 3000 и 3001 порта:

netsh advfirewall firewall add rule name="mtferm" protocol="TCP" localport=3000 action=allow dir=IN
netsh advfirewall firewall add rule name="mtferm" protocol="TCP" localport=3001 action=allow dir=IN

сразу агенты начали получать задания

 
я немного не по теме но кто пользовался VSIsoShell.exe (Visual Studio 2010 Shell (Isolated)) это вообще для чего ??? кто может подскажет
 
Sergey Dzyublik:
Баг МТ5 (build 2345) в конструкторе базового класса невозможно выполнить explicit typecast по приведению указателя на объект базового класса к указателю на родительский класс.


Получается для реализации "патерна" по эмуляции работы виртуальных шаблонных функций необходимо тянуть в базовый класс кроме наследования типов еще и непосредственное значение указателя на родительский класс, что не есть good...

В MQL нельзя приводить указатель в конструкторе предка к потомку, потомок ещё не сконструировался.

То что получился dynamic_cast, это оптимизация, T* приводится к T* - компилятор просто удаляет эту инструкцию, она не "бесплатная"