Общайтесь с разработчиками через Сервисдеск! - страница 65

 
Vitaly Muzichenko:

Ясно. Тогда как проще сгенерировать событие: "произошло переподключение к торговому серверу" ?

Сделал так, но может есть другое решение?

string acc;
int OnInit()
 {
  acc=IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN));
  ...
 }

int OnCalculate (const int rates_total,      // размер массива price[]
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const int begin,            // откуда начинаются значимые данные
                 const double& price[])      // массив для расчета
 {
  if(acc!=IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN))) OnInit();
  ...
 }
 
Комментарии, не относящиеся к этой теме, были перенесены в "Не удаляется папка, если в ней есть незакрытые файлы".
 
Комментарии, не относящиеся к этой теме, были перенесены в "Не удаляется папка, если в ней есть незакрытые файлы".
 

Глюк на сайте. В маркете продукт со статусом опубликован, в то же время его нет в разделе сайта "новые".

Также его нет в списке  https://www.mql5.com/ru/market/my . 

Заявка #1837337.

 

В МТ4 не работают AccountInfoInteger(ACCOUNT_TRADE_EXPERT), AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)

Код:

int init()
{
   Print(" -> IsExpertEnabled/IsTradeAllowed=", IsExpertEnabled(), IsTradeAllowed());
   Print(" -> IsAccountExpert/Allowed/IsMQLAllowed=", AccountInfoInteger(ACCOUNT_TRADE_EXPERT), AccountInfoInteger(ACCOUNT_TRADE_ALLOWED), MQLInfoInteger(MQL_TRADE_ALLOWED));

   return(0);
}


int start()
{
   return(0);
}

Тест:


 
Andrey F. Zelinsky:

В МТ4 не работают AccountInfoInteger(ACCOUNT_TRADE_EXPERT), AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)

По логам не увидел противоречий. Есть разрешения для терминала, а есть - для счета. Ну и есть еще для конкретной программы.

 
fxsaber:

По логам не увидел противоречий. Есть разрешения для терминала, а есть - для счета. Ну и есть еще для конкретной программы.


Смотрите внимательно на приведенные скрины -- специально показал, что разрешение на торговлю для терминала отключено -- а опция показывает включено.

Для сравнения привёл работу старой функции IsExpertEnabled() -- она отрабатывает.

 
Andrey F. Zelinsky:

Смотрите внимательно на приведенные скрины -- специально показал, что разрешение на торговлю для терминала отключено -- а опция показывает включено.

Для сравнения привёл работу старой функции IsExpertEnabled() -- она отрабатывает.

Очень внимательно посмотрел, поэтому и написал, как есть. Разрешение на торговлю в терминале и разрешение на торговлю на счете - разные сути.

 
fxsaber:

Очень внимательно посмотрел, поэтому и написал, как есть. Разрешение на торговлю в терминале и разрешение на торговлю на счете - разные сути.


Доки по вариантам разрешения: https://docs.mql4.com/ru/runtime/tradepermission

-- AccountInfoInteger(ACCOUNT_TRADE_EXPERT) -- разрешение со стороны сервера, это работает

-- AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) -- разрешение со стороны терминала, это НЕ работает

 
Andrey F. Zelinsky:

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) -- разрешение со стороны терминала

Это не так хотябы из-за двойного присутствия слова Account. Из документации

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) может возвращать false в следующих случаях:

  • нет соединения с торговым сервером. Можно проверить с помощью TerminalInfoInteger(TERMINAL_CONNECTED));
  • торговый счет переведен в режим read-only (отправлен в архив);
  • торговля на счете запрещена на стороне торгового сервера;
  • подключение к торговому счете произведено в режиме инвестора.