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

 

При запуске терминала индикаторы не всегда возвращают ACCOUNT_LOGIN

0 11:00:01.880 Custom indicator tester EURUSD,H1: loaded successfully
0 11:00:01.887 tester EURUSD,H1: OnInit 0            < ----  AccountInfoInteger(ACCOUNT_LOGIN)  вернула 0
0 11:00:01.887 tester EURUSD,H1: initialized
0 11:00:01.887 tester EURUSD,H1: OnCalculate 0  < ----  AccountInfoInteger(ACCOUNT_LOGIN)  вернула 0
0 11:00:05.980 tester EURUSD,H1: OnCalculate 0  < ----  AccountInfoInteger(ACCOUNT_LOGIN)  вернула 0
0 11:00:06.654 tester EURUSD,H1: OnCalculate 0  < ----  AccountInfoInteger(ACCOUNT_LOGIN)  вернула 0
0 11:00:07.030 tester EURUSD,H1: OnCalculate 442394  < ----  AccountInfoInteger(ACCOUNT_LOGIN)  вернула номер счета
0 11:00:07.040 tester EURUSD,H1: OnCalculate 442394  < ----  AccountInfoInteger(ACCOUNT_LOGIN)  вернула номер счета

Исходный код

//+------------------------------------------------------------------+
//|                                                       tester.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   string text=IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN));
   Print("OnInit "+text);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   string text=IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN));
   Print("OnCalculate "+text);
   return(rates_total);
  }
//+------------------------------------------------------------------+

Может я и ошибаюсь, но на мой взгляд ни одна программа не может работать если не известен номер счета.....

 
Vladimir Pastushak:

Может я и ошибаюсь, но на мой взгляд ни одна программа не может работать если не известен номер счета.....

Номер счета никогда не использую в советниках и индикаторах, за исключение Report-дел.

Но согласен, что даже в оффлайне номер счета (последнего коннекта до выключения терминала) должен быть всегда доступен.

 
fxsaber:

Номер счета никогда не использую в советниках и индикаторах, за исключение Report-дел.

Но согласен, что даже в оффлайне номер счета (последнего коннекта до выключения терминала) должен быть всегда доступен.

В онлайне то же. Нужно всегда знать и понимать под каким аккаунтом что произошло и в какой момент.

Как может выполняться программа, если не определено для какого счета что то делается. 

Это не "шараш монташ", тут у людей миллионы на счетах могут быть....

 
Vladimir Pastushak:

В онлайне то же. Нужно всегда знать и понимать под каким аккаунтом что произошло и в какой момент.

Как может выполняться программа, если не определено для какого счета что то делается. 

Это не "шараш монташ", тут у людей миллионы на счетах могут быть....

99% советников не анализируют номер счета.

 
fxsaber:

99% советников не анализируют номер счета.

потому что 99,99% советников "шараш монташ" ....

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

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

 
Vladimir Pastushak:

потому что 99,99% советников "шараш монташ" ....

Пишу именно такие советники.

 
fxsaber:

Пишу именно такие советники.

Я видел Ваши коды, Вы очень хороший и грамотный программист... 


Ситуацию даже не спасает 

   if(!TerminalInfoInteger(TERMINAL_CONNECTED))
     {
      Print(m_lan?"Нет подключения к сети интернет! ":"No connection to the Internet! ");
      return false;
     }
 
Vladimir Pastushak:

Ситуацию даже не спасает 

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

 
fxsaber:

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

Дело в том что даже подключившись номер счета некоторое время 0.

 

В справке написано 

Вызов PlaySound() с параметром NULL останавливает воспроизведение звука.

Но по факту звучание функции Alert  PlaySound(NULL) не останавливает, а должно.