Почему AccountInfoDouble (ACCOUNT_EQUITY) иногда возвращает 0?

 

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

Поэтому посоветуйте мне, почему это происходит. Пожалуйста, не говорите, что эквити было нулевым, потому что это не так.

 
jaffer wilson:

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

Поэтому посоветуйте мне, почему это происходит. Пожалуйста, не говорите, что эквити было нулевым, потому что это не так.

Происходит, если еще не получены данные с сервера. Нужно дождаться получения данных с сервера. Обычно делают так:

bool IsServerDataReceived()
{
   return AccountInfoInteger(ACCOUNT_LEVERAGE) > 0;
}

if (!IsServerDataReceived())
   return;

double fEquity = AccountInfoDouble(ACCOUNT_EQUITY);

 
Ihor Herasko :

Происходит, если еще не получены данные с сервера. Нужно дождаться получения данных с сервера. Обычно делают так:

Хорошо Спасибо за ответ.

Я пробовал это, и я думаю, это сработает для меня. Применим и ваше решение.

double equity = AccountInfoDouble(ACCOUNT_EQUITY);
   int count_fetch_equity = 0;
   while(equity ==0 && count_fetch_equity<5 && !IsStopped())
     {
      Sleep(10);
      Print("Не удалось получить средства: ", GetLastError(), " Найденная стоимость капитала: ", equity, " . Пытаюсь получить снова.");
      equity = AccountInfoDouble(ACCOUNT_EQUITY);
      count_fetch_equity++;
     }
   if(equity==0)
     {
      Print("------------ Собственный капитал не может быть нулевым. Следовательно, установив значение 1.");
      //equity = 1;
      return;
     }
 
jaffer wilson:

Я пробовал это

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

 
Ihor Herasko:

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

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

 
jaffer wilson:

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

Поэтому посоветуйте мне, почему это происходит. Пожалуйста, не говорите, что эквити было нулевым, потому что это не так.

Терминал глючный, так же как и выньдос (

Исправят терминал - будет глючить выньдос. Исправят выньдос - будет глючить терминал.

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

Бизнес, ничего личного ))
 
Sergey Chalyshev :

Терминал глючный, так же как и выньдос (

Исправят терминал - будет глючить выньдос. Исправят выньдос - будет глючить терминал.

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

Бизнес, ничего личного ))

Меня немного смущает то, что вы говорите.

 
jaffer wilson:

Меня немного смущает то, что вы говорите.

Это такой русский юмор - бессмысленный и беспощадный ))

 
Ihor Herasko:

Это такой русский юмор - бессмысленный и беспощадный ))

ага, опасный к тому же ...