Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов - страница 59

 
fxsaber:

Ошибка исчезла, но Вашего объяснения не понял.

все просто, string в MQL это ведь структура (если не изменили уже на класс), а значит конкатенация строк работает через перегрузку  , вот я и построил предположение исходя из rvalue и lvalue, если и так не поняли, то забейте т.к. сами пишите, что ошибка исчезла, а значит мое предположение не верно )))

Мягко говоря, не понимаю использующих эту функцию.

не важно, главное, что она предусмотрена и иногда удобна

 
Konstantin:

главное, что она предусмотрена и иногда удобна

В каких ситуациях?

 
Slava:
Спасибо. Разберёмся

Пожалуйста. Очень надеюсь, что проблему удастся решить в ближайших обновлениях.

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

2019.05.02 09:41:50.029 Test_CopyTime (Si-6.19,M1)      _Symbol=Si-6.19
2019.05.02 09:41:50.030 Test_CopyTime (Si-6.19,M1)      Failed to CopyTime, error code 4401

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

Прошлый билд, где ошибку я не наблюдал 1950 (кажется).

 
fxsaber:

В каких ситуациях?

лет 6 назад MQL4  очень "задумчивый" был при работе со строками и StringConcatenate() выручал, сейчас наверное нет в нем смысла, ну максимум Pointer  или что то подобное  в строку перевести

 
fxsaber:

В каких ситуациях?

уже не помню в каких случаях, т.к. на mql почти не пишу уже, лишь старое подправляю и форум по привычке еще читаю, в основном пишу на с++ и Python используя МТ5 как коннектор ))

ps. вообще обратите внимание на стандарт с++17, там очень много чего ввели нового, к примеру помню вы создавали имена функций путем конкатенации через препроцессор, в с++17 это реализовали на уровне стандарта, так же удобна распаковка объектов по принципу:

auto [fraction, remainder] = divide_remainder(16, 3);

из кортежей, до этого код выглядел убого, да и вообще стандарт 17 много чего нового внес, в интернете найдите:



вот к примеру функция упаковки в массив данных и возврат результата в виде кортежа:

typedef std::vector<std::time_t>  _T_at;
typedef std::tuple<std::time_t, std::unique_ptr<_T_at>> _T_tuple;
typedef std::chrono::time_point<std::chrono::system_clock> _T_clock;
    /*!      * \brief   упаковка массива для тестового контроля      * \return  кортеж auto [ время, указатель на массив ]      */     _T_tuple PackArray(void) {         std::unique_ptr<_T_at > _result(new _T_at);         _T_clock _now = std::chrono::system_clock::now();         std::time_t _t_curr = std::chrono::duration_cast<std::chrono::milliseconds>(_now.time_since_epoch()).count();         std::time_t _range_ms = _t_curr - _t_curr%T_SEC_TO_MS;         _range_ms += RANGE_MS;         bool _flag = true;         while(_range_ms > _t_curr) {             _now = std::chrono::system_clock::now();             _t_curr = std::chrono::duration_cast<std::chrono::milliseconds>(_now.time_since_epoch()).count();             if(_flag) {                 _result->push_back(_t_curr);                 _flag = false;             }         }     //---         return std::make_tuple(_t_curr, _result);     }

а еще обратите внимание на API Python под МТ5, используйте МТ5 как коннектор, а на Python пишите своих роботов, поверьте и проще и производительнее будет

 
Konstantin:

а еще обратите внимание на API Python под МТ5, используйте МТ5 как коннектор, а на Python пишите своих роботов, поверьте и проще и производительнее будет

как тестировать стратегии на Питоне? 

ЗЫ: про С++17 ни  в одном месте не "торкнуло", максимум совместимость с существующими интерфейсами какого софта... Питона или Явы... имхо, это из споров на тему "ООП - зло", у каждого свои предпочтения

 

build 2025, Тестер, отладка

Если поменять значение параметра на новое и сразу запустить  отладку в Тестере в окне редактора, то он, сц*ко, подставит старое значение. Лечится переключением на другую вкладку Тестера.

Вроде уже об этом коллеги писали, но не исправлено. Просьба к Разработчикам обратить внимание. Спасибо

 

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

Пропущено || в строке 475, компилятор ждёт какой-то оператор в строке 476, причем в том месте, где уже есть &&. Даже придумать не могу какой оператор в этом месте может исправить ситуацию...


Вопрос, конечно привычки, но если код большой, а пропущена скобка, простая или фигурная... Бывает тяжело :)

 
Aleksey Vyazmikin:

Пожалуйста. Очень надеюсь, что проблему удастся решить в ближайших обновлениях.

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

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

Прошлый билд, где ошибку я не наблюдал 1950 (кажется).

Ошибка повторилась сегодня в торговую сессию - все воспроизводится нормально.

2019.05.03 12:04:04.349 Test_CopyTime (Si-6.19,M1)      _Symbol=Si-6.19
2019.05.03 12:04:04.349 Test_CopyTime (Si-6.19,M1)      Failed to CopyTime, error code 4401
 
Комментарии, не относящиеся к этой теме, были перенесены в "Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам".
Причина обращения: