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

 

 По какой причине Push-сообщения на мобильное устройство через Wi-Fi сеть доставляется, а через мобильную сеть интернет не доставляется?


 

Только что проверил на

2021.06.18 20:57:08.738 Terminal        MetaTrader 5 x64 build 2980 started for MetaQuotes Software Corp.

на iPhone - и через WiFi и через сотовую сеть Push прилетают мгновенно.

 
Комментарии, не относящиеся к этой теме, были перенесены в "iPhone без сим - можно по WiFi получать Push с сайта?".
 
Timothy94:

 По какой причине Push-сообщения на мобильное устройство через Wi-Fi сеть доставляется, а через мобильную сеть интернет не доставляется?


Там надо metatrader в постоянно включённые перенести. Сейчас Андроид такие приложения в глубокий сон отправляет автоматом. 
 

прилетело обновление, обновился и теперь при запуске висит с таким заголовком. Что делать?


UPD оказалось спотыкался на common.ini, после удаления которого терминал стал запускаться нормально, но если выбрать кастомный лайаут (с которым терминал нормально запускался утром, до обновления), то опять получил зависание терминала. Удалил этот лайаут, настрою по его по новой.

 
Компилятор нового билда 2980 не компилирует ранее успешно компилируемое на билде 2940.
Какой-то ДЕбилд получился :)

implicit conversion from 'number' to 'string' вот "warning" на строке DataiATR dataiATR_ADPT = {0};

Вот ошибка cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'  на строке MqlTradeRequest request={0};

 
ElenaFxPro4:
Компилятор нового билда 2980 не компилирует ранее успешно компилируемое на билде 2940.
Какой-то ДЕбилд получился :)

implicit conversion from 'number' to 'string' вот "warning" на строке DataiATR dataiATR_ADPT = {0};

Вот ошибка cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'  на строке MqlTradeRequest request={0};

Форум нужно иногда читать, об изменениях разработчики пишут, ну или воспользоваться поиском по сайту

MqlTradeRequest request={};
 
Ошибка компилятора.
typedef void (*FUNC)();

class A {};

void OnStart() 
{
  FUNC ArrayFunc[] = {NULL};
  A* Ptr = NULL;
  
  if (true && ArrayFunc[0]) // expression not boolean
    return;

  if (ArrayFunc[0]) // OK
    return;

  if (true && Ptr) // '&&' - illegal operation use
    return;

  if (Ptr) // OK
    return;
}
 
ElenaFxPro4:
Компилятор нового билда 2980 не компилирует ранее успешно компилируемое на билде 2940.
Какой-то ДЕбилд получился :)

implicit conversion from 'number' to 'string' вот "warning" на строке DataiATR dataiATR_ADPT = {0};

Вот ошибка cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'  на строке MqlTradeRequest request={0};

Не стоит ругать и обзывать, если у Вас не владеете информацией. Сообщения об изменениях:

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

Особенности языка mql5, тонкости и приёмы работы

Ilyas, 2021.05.28 18:18

Мы расширяем инициализирующие последовательности "{ ... }", в ближайшем билде будет разрешено использовать любое выражение, а не только константное.

Вместо с этим изменением, появится и граничение на использование констант для перечислений (как для обычного выражения): если константа не входит в перечисление, то будет выдана соответствующая ошибка.

Анализ существующих кодов показал, что часто неправильно используется последовательность из одного нуля - "{0}"

Например так:

MqlTradeRequest request={0};


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

Для приведённой выше строки кода, по новым правилам, будет выдана ошибка, т.к. первое поле имеет тип ENUM_TRADE_REQUEST_ACTIONS, перечисление, в котором отсутствует значение "0"

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


Правильно будет так:

MqlTradeRequest request={};

 
fxsaber:
Ошибка компилятора.

(1) - это скорее исключение для совместимости с С\С++ как часто используемая конструкция. В MQL указатели - это фактически не указатели (отсутствует адресная арифметика), а ссылки и общем случае указатель к bool преобразовать нельзя (2)(3)(5). А если можно было бы, тогда в (4) вместе вызова функции (*) получили бы простое условие (6)

class A {
public:
    A *operator &&( A* ) { return &this; } //(*)
};
void OnStart()
{
    A *a = new A;
    if ( a );            //(1) нормально
    if ( (bool)a );      //(2) ошибка
    if ( a && true );    //(3) ошибка
    if ( a && a );       //(4) нормально, вызывается (*)
    if ( true && a );    //(5) ошибка
    if ( true && true ); //(6) простое условие
}