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

 
Konstantin83: Открывается ордер с магиком. Затем этот магик переносится на сделку и позицию. А вот потом когда закрывается позиция по профиту или стопу магик не переносится на закрывающую сделку.

Как узнать профит позиции перебирая сделки по магику? Туда не пападает закрывающая сделка так как она без магика.

POSITION_IDENTIFIER

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

long

 

DEAL_POSITION_ID

Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам, совершенным на инструменте в течение всей жизни позиции.

long

 
Abnormal termination означает, что эксперт зацикленный, не проверяет IsStopped и его принудительно стопит терминал.
 
Renat:
Abnormal termination означает, что эксперт зацикленный, не проверяет IsStopped и его принудительно стопит терминал.

могу заметить, что Abnormal termination бывает не только из-за MQL кода, но и из-за внутренних зависаний самой исполнительной среды. Так скажем неконтролируемый из MQL Abnormal terminatio.

Например, когда MQL код отсылает команду удаления ObjectDelete объекта с чарта, которого уже нет (ни объекта, ни чарта). Но на момент отправки команды он был.
и внутри исполнения MQL код просто не дождется ответа от команды, так как зависание произошло не в MQL коде, а в недрах исполнения. То есть в самой ObjectDelete. в результате получим Abnormal termination
Второй распространенный случай - это работа функции ObjectsDeleteAll. Так как она синхронна, то в ней также происходит зависание по удалению объектов, которые уже стали удалены, но только после её вызова.
Третий случай - самый вредный, когда исполнительная среда не может завершить команду эксперта из Deinit, по причине что эксперт удален с чарта, а чарт закрыт. Тоже получим зависание среды и неконтролируемый Abnormal termination.

Вобщем все что я описал - касается конкретно завершения работы экспа в функции OnDeinit.   С завершающими действиями где то в недрах происходит нестыковочка, во-первых с наличием чарта, во вторых поведения среды при Deinit эксперта
Кто то что то делает раньше и в результате Abnormal termination.

Конечно, некоторые случаи смог разрулить вставляя доп проверки наличия. Но редко, но выстреливает одна из описанных проблем синхронизации. То удаление/установка индикатора на чарте который пытаются закрыть, то удаление объектов.

 

Хотелось бы получить ответы по поводу как может быть Absolute Drawdown БОЛЬШЕ Начального баланса.

Хотя по определению

 Absolute Drawdown
Просадка от начального баланса показывает, насколько уменьшался баланс относительно первоначального значения. Максимально может быть равно начальному балансу, если потеряны все деньги.

Подробно расписано в теме  https://www.mql5.com/ru/forum/8996

 
Renat:
Abnormal termination означает, что эксперт зацикленный, не проверяет IsStopped и его принудительно стопит терминал.

Не угадали.

 

sergeev:

могу заметить, что Abnormal termination бывает не только из-за MQL кода, но и из-за внутренних зависаний самой исполнительной среды.

Да, и таких сюрпризов полно.

Я сталкивался с подвисанием терминала и невозможностью удаления советника при нехватке памяти. В этом случае даже запись в лог не всегда попадает.

 
komposter:

Не угадали.

 

Да, и таких сюрпризов полно.

Я сталкивался с подвисанием терминала и невозможностью удаления советника при нехватке памяти. В этом случае даже запись в лог не всегда попадает.

Как я понял эта тема https://www.mql5.com/ru/forum/8278 касается именно этого вопроса.
Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс.
 
Yedelkin:

POSITION_IDENTIFIER

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

long

 

DEAL_POSITION_ID

Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам, совершенным на инструменте в течение всей жизни позиции.

long

 

Спасибо, помогло)
 
iTC:
Как я понял эта тема https://www.mql5.com/ru/forum/8278 касается именно этого вопроса.

Нет, там про индикаторы было.

А советник, приводящий к превышению некоего лимита памяти, просто втихую вешает терминал. Случается это, например, когда подгружается много графиков разных символов/периодов с индикаторами.

 
sergeev:

могу заметить, что Abnormal termination бывает не только из-за MQL кода, но и из-за внутренних зависаний самой исполнительной среды. Так скажем неконтролируемый из MQL Abnormal terminatio.

Например, когда MQL код отсылает команду удаления ObjectDelete объекта с чарта, которого уже нет (ни объекта, ни чарта). Но на момент отправки команды он был.
и внутри исполнения MQL код просто не дождется ответа от команды, так как зависание произошло не в MQL коде, а в недрах исполнения. То есть в самой ObjectDelete. в результате получим Abnormal termination
Второй распространенный случай - это работа функции ObjectsDeleteAll. Так как она синхронна, то в ней также происходит зависание по удалению объектов, которые уже стали удалены, но только после её вызова.
Третий случай - самый вредный, когда исполнительная среда не может завершить команду эксперта из Deinit, по причине что эксперт удален с чарта, а чарт закрыт. Тоже получим зависание среды и неконтролируемый Abnormal termination.

Вобщем все что я описал - касается конкретно завершения работы экспа в функции OnDeinit.   С завершающими действиями где то в недрах происходит нестыковочка, во-первых с наличием чарта, во вторых поведения среды при Deinit эксперта
Кто то что то делает раньше и в результате Abnormal termination.

Конечно, некоторые случаи смог разрулить вставляя доп проверки наличия. Но редко, но выстреливает одна из описанных проблем синхронизации. То удаление/установка индикатора на чарте который пытаются закрыть, то удаление объектов.

Спасибо, это проверим.
 
komposter:

Нет, там про индикаторы было.

А советник, приводящий к превышению некоего лимита памяти, просто втихую вешает терминал. Случается это, например, когда подгружается много графиков разных символов/периодов с индикаторами.

Спасибо, обязательно проверим.
Причина обращения: