Новая версия платформы MetaTrader 5 build 2980: Push-уведомления о торговых операциях - страница 34

 
Ilyas # :

Подозреваю, что скрипт скомпилирован в Debug или Profile, для таких EX5 требуется версия терминала не менее версии компилятора, которым эти EX5 были созданы

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

Ahh - in order for an EA, Indicator or Script to run on different parallel versions of MT5, it must be compiled with the oldest valid version of the terminal/editor.
 

Очень долго генерируется ReportHistory-отчет для большой торговой истории. На это время GUI терминала недоступно.

 
b3029, актуально.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 2980: Push-уведомления о торговых операциях

fxsaber, 2021.07.29 12:00

Вручную вводимые значения переменных в GUI могут ошибочно изменяться.

// Изменение значения глобальной переменной во время ее незаконченного редактирования.

void OnStart()
{
  GlobalVariableSet("Lots", 1);
  
  Alert(GlobalVariableGet("Lots"));
  
  MessageBox("Нажмите F3 и начните редактировать значение переменной Lots.\n" +
             "Не нажимайте ENTER - конечный результат изменения переменной при редактировании.");
             
  Sleep(10000); // Даем время на редактирование.
  
  Alert("Этим сообщением редактируемая переменная Lots была изменена.");
  
  Sleep(1000);
  
  Alert(GlobalVariableGet("Lots"));
}


Результат.

2021.07.29 12:55:07.837 Alert: 1.0
2021.07.29 12:55:07.837 Нажмите F3 и начните редактировать значение переменной Lots.
2021.07.29 12:55:07.837 Не нажимайте ENTER - конечный результат изменения переменной при редактировании.
2021.07.29 12:55:19.209 Alert: Этим сообщением редактируемая переменная Lots была изменена.
2021.07.29 12:55:20.203 Alert: 1234.0


Эта уязвимость может иметь серьезные последствия во время торговли.

Строка для поиска: Oshibka 030.

 

b3029, компиляция по F7 выдает такую последовательность готовности кода.

generating code 87%
generating code 92%
generating code 25%
generating code 74%

После 92% идет 25%. Наверное, это ошибка. Воспроизводится каждый раз.

 
b3029, запуск EX5 вызывает вылет терминала каждый раз. В логе только это.
QR      2       19:01:24.214    Terminal        crashlog finalized
 
fxsaber #:
b3029, запуск EX5 вызывает вылет терминала каждый раз. В логе только это.

У меня еще вот такая строка есть:

2021.08.28 20:35:00.485 Exception       C0000005 at 81EA0A98 read to A490BA33
 
Renat Fatkhullin #:


Подскажите пожалуйста, это правильное поведение функции или нет.

Функция

SocketTlsRead(socket, buf, 65535)

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

Но документация гласит

Возвращаемое значение
В случае успеха возвращает количество прочитанных байт, в случае ошибки возвращает -1.








Примечание Функция исполняется до тех пор, пока не получит указанное количество данных или не наступит таймаут (SocketTimeouts).

В примечании сказано, что функция исполняется до тех пор, пока не получит указанное количество данных.
Но тогда нет возможности получить количество прочитанных байт, без использования функции SocketIsReadable.
SocketIsReadable заточена, только под TCP протокол, и с другими протоколами не совместима.
По этому приходится самому разбирать протокол, но не возможно получить количество прочитанных байт.
Тупик.

p.s. 
Функция SocketTlsReadAvailable работает как и ожидалось, и не зависит от указанного ей количества байт
Но она очень медленная.

Реально, я уже на нервном срыве от невозможности корректной вычитки, и разбора протокола.
Если SocketTlsRead тупо читать по одному байту, то протокол разбирается, но ужасно медленная реализация получается.

Документация по MQL5: Сетевые функции / SocketTlsRead
Документация по MQL5: Сетевые функции / SocketTlsRead
  • www.mql5.com
SocketTlsRead - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber #:
b3029, запуск EX5 вызывает вылет терминала каждый раз. В логе только это.

Где крешлоги поглядеть?

У меня такое написал:

PO      2       01:44:03.163    Terminal        crashlog generated
MP      0       01:44:03.303    Network '8550475': disconnected from MetaQuotes-Demo
MI      2       01:44:03.624    Terminal        crashlog finalized

Если установлен пользовательский советник на графике, то терминал вылетает. Если успеть удалить советник до его полного запуска, то терминал не падает.