![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Став на тропу программиста, нужно понимать, что именно Вы начинаете потреблять ресурсы своими запросами. Вызов дорогих функций ни в коем случае не означает, что можно отключиться от вопроса "а как же в реальности происходит работа с ресурсами".
Лучше всего опубликовать тут в форуме полный код и сразу же обнаружится проблемное место. Если нельзя тут, то можно в сервисдеске (код после проверок будет удален).
ps: у нас не возникает никогда вопросов, когда операционка выдает, что недостаточно памяти и мы никогда не виним Майкрософт в этом.
Всё-таки напишу то, от чего воздержался ранее.
Да, я в курсе, что есть корпорации, заинтересованные в форсировании сбыта продукции и увеличении прибыли всеми правдами и неправдами. Существуют картельные сговоры, к примеру. А Майкрософт, которая, по слухам, славится циклическими программными накрутками для замедления своей многострадальной ОС (что вполне тянет на правду), чуть ли не перманентно находится в состоянии сговора с хардверными гигантами, которые тоже мечтают нагреть руки, поскорее впарив потребителю Windows своё новенькое дорогое железо на смену старому и вполне рабочему, которому ещё жить да жить на Unix-платформах или стареньких Windows.
Так вот к чему бишь это я? К тому, что MQ никогда не вызывала во мне ощущения, что меня хотят подсадить на железную иглу и оставить без последнего нижнего белья. И MT4, и MT5 всегда радовали приличным откликом интерфейса и юзабилити на протяжении многих лет, особенно на фоне этих относительно новомодных повсеместно распространённых неповоротливых .NET Framework-приложений. Так что с этим всё в порядке, чего хотелось бы и в дальнейшем. Важно, чтобы была исчерпывающая информативность о новых билдах, сопроводительная информация об изменившихся минимальных требованиях и т. п., чтобы мы знали, к чему нам готовиться морально, интеллектуально и финансово.
А ко всему прочему, касательно обвинений от зависимых девелоперов в сторону первичных: Майкрософт никого не принуждает обновляться в безальтернативном порядке. У вас же почему-то нельзя отключить автообновления. Так что...
Всё-таки напишу то, от чего воздержался ранее.
Вы бы потратили на создание заявки в сервис-деск не больше 5 минут. И, возможно, уже на следующий день получили бы конкретный ответ.
Но вы предпочитаете обсуждать с Ренатом заговор майкрософта против пользователей.
Только не говорите после этого, что у вас действительно есть проблема ;)
после тихого обновления к последнему билду, удалённые агенты стали отваливаться:
Кто-то засылает неверные данные. До этого агенты втихую крешились (Вы просто этого не замечали) из-за деления на 0. Этого деления на ноль не должно быть в принципе, поэтому у нас и не было соответсвующей проверки. Этот кто-то, возможно и не злоумышленник, поэтому мы ждём от него в сервисдеске заявки. Сами мы не смогли воспроизвести эту ошибку.
UPD
Я вдруг увидел строку лога
Это говорит о том, что Ваш агент действительно использовался в качестве удалённого. То есть Вы знаете источник проблемы. Хотелось бы пообщаться в сервисдеске
Что такое
2012.12.19 21:33:50 Core 01 2004.04.02 20:15:00 Access violation write to 0x0000000000000009
Выдаётся во время бэктеста стратегии.
Что такое
2012.12.19 21:33:50 Core 01 2004.04.02 20:15:00 Access violation write to 0x0000000000000009
Выдаётся во время бэктеста стратегии.
Ошибка отправки сообщения в сервисдеск
Renat, в общем, с 32-битной версией проблемы остались, зато впервые довелось протестировать код на x64 версии MT5. И вот что выявилось...
Тех ошибок, что выдавала 32-битная версия терминала, не было, но были проблемы с неполной первичной (то есть до ручного перехода на другие таймфреймы) отрисовкой графической разметки и эпизодическое смещение точек привязки некоторых объектов с экстремумов наряду со смещением графических серий вспомогательного индикатора. До последнего момента готовил пламенный спич для СервисДеска, но после десятка запусков терминала (даже с учётом нескольких полных перезагрузок компьютера) всё чудесным образом стабилизировалось. Логики всего этого не знаю и даже не берусь предположить, но по ощущениям - терминал за этот десяток перезапусков словно "раскочегаривался" и в конце концов окончательно "притёрся" к ОС и/или индикатор - к терминалу. Да, это звучит мистически, по логике этого быть вроде бы не должно: единственая "притирка" - это полная закачка истории, кэширование используемых таймфреймов, точная ручная донастройка опций терминала и... вроде бы всё. Но это всё было сделано при первом же запуске, последующие же запуски терминала своим состоянием уже ничем не отличались от второго (небольшая докачка последней истории и добавление новостных флажков на чарт к делу не относится, так что в расчёт это не берём).
Остаюсь в некотором недоумении, полагаю, перекосы полувнезапно ещё себя проявят и тогда я буду с ними разбираться, но это ещё не скоро, а пока - запланированная оптимизация кода. Если будет интересно потестировать код чисто для себя - сообщите, пока я опять не запропастился.
Загляните в каталог истории и посмотрите на сотни мегабайт исторических данных.
Под "чудесно стабилизировалось" имеете в виду, что вся история подкачалась? Так это ожидаемо - история подкачивается по необходимости и это может занимать время.
Загляните в каталог истории и посмотрите на сотни мегабайт исторических данных.
Наоборот. Под личным визуальным контролем вся история скачивается при первом же запуске, по окончании загрузки проверяется клавишей Home с уходом в начало 1994 года на M1. Затем вручную совершаю обход часто используемых мной, а также актуальных для мультитаймфреймового индикатора таймфреймов, дожидаюсь их формирования, перезагружаю терминал. Всё.
Всякие последующие маленькие докачки новых исторических данных не оказывают никакого принципиального влияния, то есть теоретически терминал можно считать "стабилизировавшимся" после полной загрузки истории в конце первого запуска или, для надёжности, в самом начале запуска второго, когда на HDD уже гарантированно осели сгенерированные не-M1 таймфреймы. Но это теоретически. У меня же почему-то всё устаканилось (я говорю о должной работе индикатора) при перезапуске эдак десятом, хотя, подчёркиваю, основная история была закачана уже при первом, а последующие закачки не должны быть в состоянии делать погоду в принципе... я бы даже сказал наоборот: чем больше становится история от запуска к запуску, тем выше риск, что индикатор в какой-то свой запуск не проглотит её и сбоит, но на деле всё получилось наоброт: чем дальше, тем исправнее он работал).
Значит, вероятно, есть какие-то скрытые и неочевидные для пользователя процессы терминала или связки MT5 + ОС, которые оптимизируют работу приложения в операционной среде не сразу, а после какой-то n-ной подгонки. Свой исходный код не модифицирую уже давно, касательно его компиляции - только при первом запуске свежеустановленного MT5 (чей билд в данном исследовании всегда один и тот же). Донастроек после первого запуска не было. Вся эта загадочная ситуация напомнила мне меню "Пуск" в Windows, где часто вызываемые приложения со временем становились доступными в первую очередь (ОС собирала статистику, но на это уходило время и определённое количество вызовов одних и тех же программ). Или вот с дефрагментацией файлов на диске оптимизируется к ним доступ и приложения быстрее запускаются - это всё из той же оперы.
Не склонен полагать, что вы реализовали что-то подобное в MT5, иначе об этом сообщили либо сами, либо вас давно бы уже настигли с расспросами об этом на форуме. Так что всё это просто неподтверждённая гипотеза на основании полученного опыта.