Ошибки, баги, вопросы - страница 2575
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Память выделена в mql коде как
out и передаётся как указатель на выделенную память, так как string в mql, это wichar_t* в dll
Ой как запущено...
Я не знаю реализацию string, могу только догадываться, но, судя по ошибке, при string out на стеке создается указатель, который инициализируется 0x00000000 и Вы благополучно в dll разыменовываете нулевой указатель.
Ой как запущено...
Я не знаю реализацию string, могу только догадываться, но, судя по ошибке, при string out на стеке создается указатель, который инициализируется 0x00000000 и Вы благополучно в dll разыменовываете нулевой указатель.
Память выделена в mql коде как
out и передаётся как указатель на выделенную память, так как string в mql, это wchar_t* в dll
Саму dll покопай, скорее всего там что-то. Последнее время плотно гоняю данные из mql в сторонние приложения С++/С#, никаких проблем никогда не было.
Саму dll покопай, скорее всего там что-то. Последнее время плотно гоняю данные из mql в сторонние приложения С++/С#, никаких проблем никогда не было.
В dll всё просто, лишнее убрано для наглядности, показана сама идея
Вывожу результат data в консоль, все строки в консоли идут чётко без пропусков и без глюков.
Передаю в mql через wcscpy(out, data) начинаются траблы
А если передаю проверочную строку написанную руками
То почему то проблем нет.
Хм, а тип string в mql учитывает терминальный ноль wchar_t* ???
Предложение о небольшом расширении возможности события OnTimer()
В данный момент, событие OnTimer() начинает возникать с момента установки периодичности вызова ф-цией EventSetTimer().
Получается, что вот такой советник:
Выдает примерно следующее:
Однако, часто, для проверки возникновения сигнала, достаточно делать проверку после появления очередного бара.
И получается, что, например, для PERIOD_M15 бар возникнет в 00:15:00, а проверка советником может произойти только в 00:29:59.
Т.е. для более менее стабильных и одинаковых результатов, независимо от времени запуска советника,
придется ставить таймер на более короткие промежутки времени, либо дополнительно использовать OnTick().
Как показали эксперименты, это очень сильно замедляет скорость тестирования в тестере стратегий.
Предложение:
Добавить функцию, которая бы позволила установить начальное время, от которого ведется отсчет для возникновения события OnTimer.
Например, какую-нибудь функцию EventSetTimerFrom(const datetime SinceDT), которая бы позволила подстроить вызов таймера через несколько секунд после нового бара.
В dll всё просто, лишнее убрано для наглядности, показана сама идея
Вывожу результат data в консоль, все строки в консоли идут чётко без пропусков и без глюков.
Передаю в mql через wcscpy(out, data) начинаются траблы
А если передаю проверочную строку написанную руками
То почему то проблем нет.
Хм, а тип string в mql учитывает терминальный ноль wchar_t* ???
А вот эта функция заработала
Но кривовато, кажется один символ бажит в конце строки, лишняя скобка } то появляется то пропадает.
wcslen(data)+1
wcslen(data)+2
не помогло,
и парсится стало без ошибок, без якобы каких то утечек
вообще не понятно, какая длина или размер, одного символа в mql-овскоком string
в типе string точно присутствует какая то ошибка
И в давнейшей статье в пункте 3.3 Передача и модификация строк, в примере скорее всего допущена ошибка.
Возможно, где то в коде терминала, преобразование mql-овского string работает таким же образом, без указателя.
установить начальное время, от которого ведется отсчет для возникновения события OnTimer.
Вы можете сами это сделать через повторный вызов EventSetTimer. Учитывайте, что на счете (не в Тестере) таймер плавает и требует постоянной корректировки.
Вы можете сами это сделать через повторный вызов EventSetTimer. Учитывайте, что на счете (не в Тестере) таймер плавает и требует постоянной корректировки.
Спасибо, полезная вещь!
Очень странно, конечно, что такой несложный момент не учтен в терминале "из коробки".
А вот эта функция заработала
Но кривовато, кажется один символ бажит в конце строки, лишняя скобка } то появляется то пропадает.
wcslen(data)+1
wcslen(data)+2
не помогло,
и парсится стало без ошибок, без якобы каких то утечек
вообще не понятно, какая длина или размер, одного символа в mql-овскоком string
в типе string точно присутствует какая то ошибка
И в давнейшей статье в пункте 3.3 Передача и модификация строк, в примере скорее всего допущена ошибка.
Возможно, где то в коде терминала, преобразование mql-овского string работает таким же образом, без указателя.
В dll всё просто, лишнее убрано для наглядности, показана сама идея
Прикольные такие примеры у вас, всё убрали, оставили UB (модификация строковых литералов), а все телепатить должны. Если рассчитывайте на какой-то толковый совет, то приведите минимальный рабочий код (на двух сторонах), иначе просто трёп.