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

 
Дмитрий Касаткин:
как быть не могу войти на платформу, на сайте пишит web terminal is not supported by this MetaTrader Server. Please contact your broker to update server, на самой платформе пишит что нет связи?
Ваш брокер не поддерживает работу с Web терминалом. Если терминал установлен на компьютер и нет соединения, то надо открыть порт 443 если он до этого был закрыт.
 
Уважаемые разработчики, какой порядок отработки функции OnDeinit - порядок удаления объектов и других переменных, очистка памяти и т.д.
 
coderex:
Уважаемые разработчики, какой порядок отработки функции OnDeinit - порядок удаления объектов и других переменных, очистка памяти и т.д.

OnDeinit - обыкновенная функция в программе MQL4/5, которая вызывается в определённых ситуациях. Тут как запрограммируете, так и будет

Конкретизируйте вопрос. Что именно Вас интересует?

 
Slawa:

OnDeinit - обыкновенная функция в программе MQL4/5, которая вызывается в определённых ситуациях. Тут как запрограммируете, так и будет

Конкретизируйте вопрос. Что именно Вас интересует?

С объектами, которые явно удаляются (созданные в выделенной памяти) все понятно. Интересует процесс освобождения памяти и удаления объектов созданных в автоматической памяти.

Т.е. есть к примеру два объекта и переменная фундаментального типа:  

class CFirst {...};
class CSecond {...};

int iVolume = 100;
CFirst first_obj;
CSecond *second_obj;

int OnInit(void) {
   second_obj = new CSecond();
// текст функции OnInit
}
void OnDeinit(const int reason) {
   if(CheckPointer(second_obj == POINTER_DYNAMIC)
      delete second_obj;
}

Интересует какой будет порядок освобождения памяти и удаления всех объектов, при удалении программы.

 
Slawa:

...

В каких случаях терминал может зависнуть? - по видимому существуют штатные ситуации, в которых терминалу положено виснуть.

По моим наблюдениям виснет (подвисает на неопределённое время) всегда при:

1. Подключении к серверу.

2. П1. при переключении между счетами.

3. Во время запуска терминала.

В последний раз вот при запуске терминал завис. Я заглянул в диспетчер задач, терминал байт за байтом жрет память, через пару минут сожрал все 8Гб памяти и операционная система зависла напару с терминалом. Пришлось жать кнопку "ресет" на системном блоке.

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

После перезапуска компьютера я удалил все конфигурационные файлы терминала, запустил - история с зависанием повторилась.

После  перезапуска компьютера я удалил все файлы истории торговых серверов и только после этого терминал соизволил работать нормально, и то после некоторого раздумья минуты 3.

 

Терминал виснит из билда в билд. Win10x64. 

 
Joo Zepper:

В каких случаях терминал может зависнуть? - по видимому существуют штатные ситуации, в которых терминалу положено виснуть.

По моим наблюдениям виснет (подвисает на неопределённое время) всегда при:

1. Подключении к серверу.

2. П1. при переключении между счетами.

3. Во время запуска терминала.

В последний раз вот при запуске терминал завис. Я заглянул в диспетчер задач, терминал байт за байтом жрет память, через пару минут сожрал все 8Гб памяти и операционная система зависла напару с терминалом. Пришлось жать кнопку "ресет" на системном блоке.

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

После перезапуска компьютера я удалил все конфигурационные файлы терминала, запустил - история с зависанием повторилась.

После  перезапуска компьютера я удалил все файлы истории торговых серверов и только после этого терминал соизволил работать нормально, и то после некоторого раздумья минуты 3.

 

Терминал виснит из билда в билд. Win10x64. 

Такая же винда, терминал запускается только от админа, и все файлы типа метаедитор так же от админа, проблем нет.
 

Как разбить код на части и включаемые файлы правильно, первый раз с таким сталкиваюсь по этому задаю вопрос к опытным спецам

Вот пример

class WL : public C_Object
  {
private:
   MqlTick           tick;
   struct STRUCT_SYMBOL // Структура символа
     {    
      bool              TRADING_IS_ALLOWED;      // Обновлять
      double            INDIKATOR_VOLUME;        // Обновлять
     };
   struct STRUCT_WATCH_LIST // Структура сохраненных листов
     {
      string            NAME_LIST;
     };
   STRUCT_WATCH_LIST WatchList[];
   STRUCT_SYMBOL     SymbolMass[];
}

ТО есть класс наследуется от другого класса  и содержит структуру, в примере структуру я сократил, далее идут методы по работе с массивом структуры

этих методов штук 40-50 может больше пока не знаю.

Хочу каждый метод Вынести во включаемый файл или иначе как то организовать структуру кода что бы в самом советнике не городить 10 000 -20 000 строк кода в которых потом затруднен поиск.

Единственное что на текущий момент вижу это отправлять массив структуры по ссылке

типа

func(STRUCT_SYMBOL & str)

Мне кажется это не самый удачный выбор.

Что можно сделать ?

 
coderex:

С объектами, которые явно удаляются (созданные в выделенной памяти) все понятно. Интересует процесс освобождения памяти и удаления объектов созданных в автоматической памяти.

Т.е. есть к примеру два объекта и переменная фундаментального типа:  

Интересует какой будет порядок освобождения памяти и удаления всех объектов, при удалении программы.

OnDeinit к этому никакого отношения не имеет.

Вы читали документацию?

 
Vladimir Pastushak:
Такая же винда, терминал запускается только от админа, и все файлы типа метаедитор так же от админа, проблем нет.
от админа? а может терминалу ещё дать шапку с крестом, золотое яблоко, посох и величать его не иначе как Предобрейший Царь Всея Русси?
 
Vladimir Pastushak:

Как разбить код на части и включаемые файлы правильно, первый раз с таким сталкиваюсь по этому задаю вопрос к опытным спецам

Вот пример

ТО есть класс наследуется от другого класса  и содержит структуру, в примере структуру я сократил, далее идут методы по работе с массивом структуры

этих методов штук 40-50 может больше пока не знаю.

Хочу каждый метод Вынести во включаемый файл или иначе как то организовать структуру кода что бы в самом советнике не городить 10 000 -20 000 строк кода в которых потом затруднен поиск.

Единственное что на текущий момент вижу это отправлять массив структуры по ссылке

типа

Мне кажется это не самый удачный выбор.

Что можно сделать ?

Если классы емкие, то лучше под каждый класс создать отдельный листинг, а в коде где используются объекты этого класса, подключить листинг класса через #include. То же самое и структур касается и библиотек функций. Если классы и структуры не емкие, то их можно в один листинг включить. Так же можно создать листинг общих дефайнов и макросов.

И не бойтесь, что у вас будет целое семейство листингов, имеющих отношение к одной программе, это обычное явление, у меня в торговых системах используется 15-20 листингов, плюс каталоги с .bmp и .gif для интерфейса. Все листинги распределяю по отдельным каталогам. Так проще ориентироваться при отлове ошибок и модернизации.

Причина обращения: