Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
@fxsaber, ничего, что массивы структур не инициализируются нулями? Нигде боком не вылезет?
Надо бы конкретизировать. Столько выложено, что сплошная неоднозначность.
Строки 91 и 238, "{0}" заменить на "{}", тогда собирается.
@fxsaber, ничего, что массивы структур не инициализируются нулями? Нигде боком не вылезет?
Огромное спасибо за помощь,Андрей (только добрался до ПК и увидел ваш ответ. Чуть позже попробую повторить у себя. О результатах отпишусь дополнительно..
Надо бы конкретизировать. Столько выложено, что сплошная неоднозначность.
В TypeToBytes.mqh заменил "{0}" на "{}" в строках 91 и 238.
Есть еще несколько аналогичных мест, но Валидейт их не использует.
Насколько я понимаю, это инициализация массивов при объявлении (раньше они забивались нулями, если это возможно).
Если вы в коде не закладываетесь на обнуленность этих массивов, то все будет работать. Если закладываетесь, вылезут артефакты рано или поздно.
К сожалению, не могу отследить этого сам.
Вроде бы сразу после объявления в массив что-то копируется, значит косяков быть не должно.
Насколько я понимаю, это инициализация массивов при объявлении (раньше они забивались нулями, если это возможно).
Ilyas, вроде, говорил, что такая инициализация все обнуляет. Из этого исходил, когда заменял {0} на {}.
Ilyas, вроде, говорил, что такая инициализация все обнуляет.
насколько я помню, напрямую он этого не говорил, просто {} наиболее простая замена для {0}, но не аналогичная.
насколько я помню, напрямую он этого не говорил, просто {} наиболее простая замена для {0}, но не аналогичная.
{0} - первому элементу присвоить ноль. Вроде, такая трактовка была после ввода {}. В общем, спрашивать надо по новой.
Ilyas, вроде, говорил, что такая инициализация все обнуляет. Из этого исходил, когда заменял {0} на {}.
Да, нашел:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
Ilyas, 2021.05.28 18:18
Мы расширяем инициализирующие последовательности "{ ... }", в ближайшем билде будет разрешено использовать любое выражение, а не только константное.
Вместо с этим изменением, появится и граничение на использование констант для перечислений (как для обычного выражения): если константа не входит в перечисление, то будет выдана соответствующая ошибка.
Анализ существующих кодов показал, что часто неправильно используется последовательность из одного нуля - "{0}"
Например так:
Такая запись означает, выставить значение ноль для первого поля структуры и обнулить остальные поля.
Для приведённой выше строки кода, по новым правилам, будет выдана ошибка, т.к. первое поле имеет тип ENUM_TRADE_REQUEST_ACTIONS, перечисление, в котором отсутствует значение "0"
Правильно будет так:
MqlTradeRequest request={};
Значит, можно везде заменить {0} на {}. Почему не сделаете этого в TypeToBytes?
Много кода в КБ. Этот КБ-баг сильно отбивает желание обновлять.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2021.10.02 21:59
Если в кодобазе заменить один из mqh-файлов и отправить на проверку, то все остальные mqh-файлы удаляются.
Из-за этого приходится полностью удалять все исходники и заново прикреплять, вместо того, чтобы перезалить только один mqh-файл.
Прошу починить.
Намучался обновлять Virtual - заново приходится загружать абсолютно все.
ЗЫ Файлы, что прикреплены к блог-постам, совсем не обновляются: загружаются самые первые, что были при создании записи.
Пришел, добрался до компьютера, по совету Андрея, заменил {0} на {}, ошибки связанные TypeToBytes.mqh пропали, но осталось еще две при вызове (как я понимаю) метода класса Parameters, который находится в Expert.mqh.
Все дело, в неправильном наборе параметров, передаваемых из "приложений" ValidateTasks.mqh (строка 29) и ValidatePortfolio.mqh (строка 162), т.к. метод требует передачи номера окна графика, структуры вида MqlParam, а также некоего массива с именами (скриншот №1), и этим ограничивается, но в двух вызовах, из вышеуказанных документов, четвертым параметром идет непонятный "false" (скриншоты 2 и 3), из-за чего и вылезают две ошибки.
Если "false", потереть, оставив три параметра, тогда уже 100% все собирается без ошибок.
В связи с чем, вопрос к создателю @fxsaber, скажите, что за "false", присутствовал в параметрах, и как поступить правильнее, так как поступил я (удалив его из вызовов метода), либо добавить этот bool в метод?
Заранее спасибо за ответ.
UPD 1:
Вроде бы работает (по крайней мере с графика не удаляется, самостоятельно запускает тестирование (даже ПЕРЕзапускает, пока принудительно не закроешь окно графика, на котором висит эксперт), ну и несколько раз уже выдал какие-то свои графики (явно не стандартный метаквот отчет), поработав буквально две минуты, пока я предавался восторгу). Дальше будем посмотреть, думаю сейчас можно запустить первое полноценное тестирование/оптимизацию (с нормальным сроком), ну а там будет видно, что и как.
Всем спасибо за помощь в наладке новой сборке, и отдельное спасибо товарищу @fxsaber за очень интересный рабочий инструмент.
В связи с чем, вопрос к создателю @fxsaber, скажите, что за "false", присутствовал в параметрах, и как поступить правильнее, так как поступил я (удалив его из вызовов метода), либо добавить этот bool в метод?
В КБ-исходнике все есть. Скачайте mqh-файл, а не zip (их лучше никогда не смотреть).