Валидатор: Current account state vs. calculated account state

 

Вопрос по сообщениям валидатора маркета.

validator

Почему данные в этих двух строчках отличаются?

Какие значения получает советник через AccountInfoDouble? 

Получаю сообщение о нехватке маржи, хотя по верхней строчке маржи достаточно и все проверки в советнике присутствуют.

 
Andrey Barinov:

Вопрос по сообщениям валидатора маркета.


Почему данные в этих двух строчках отличаются?

Какие значения получает советник через AccountInfoDouble? 

Получаю сообщение о нехватке маржи, хотя по верхней строчке маржи достаточно и все проверки в советнике присутствуют.

Это ведь две разные строки. Первая показывает текущие показатели, а вторая - расчетные.

 
Vladimir Karputov:

Это ведь две разные строки. Первая показывает текущие показатели, а вторая - расчетные.

именно об этом был мой вопрос. Почему текущие показатели не совпадают с расчетными.

 
Andrey Barinov:

именно об этом был мой вопрос. Почему текущие показатели не совпадают с расчетными.

Это ведь совершенно разные показатели - как они могут одинаковыми? Первая строка: текущее положение дел, вторая строка - расчетное.

 
Andrey Barinov:

Вопрос по сообщениям валидатора маркета.


Почему данные в этих двух строчках отличаются?

Какие значения получает советник через AccountInfoDouble? 

Получаю сообщение о нехватке маржи, хотя по верхней строчке маржи достаточно и все проверки в советнике присутствуют.

В переводе на человеческий язык, calculated account state - это будущее предполагаемое состояние счета после проведения запрашиваемой (но еще не выполненной) торговой операции. Разумеется, AccountInfoDouble возвращает только текущее состояние счета. Чтобы узнать, хватит ли маржи для новой операции нужно использовать OrderCheck - там по идее и будет посчитана та самая отрицательная маржа.

Документация по MQL5: Торговые функции / OrderCheck
Документация по MQL5: Торговые функции / OrderCheck
  • www.mql5.com
В случае нехватки средств или ошибочно заполненных параметров функция возвращает false. В случае успешной базовой проверки структур (проверка указателей) возвращается true –
 
Stanislav Korotky:

В переводе на человеческий язык, calculated account state - это будущее предполагаемое состояние счета после проведения запрашиваемой (но еще не выполненной) торговой операции. Разумеется, AccountInfoDouble возвращает только текущее состояние счета. Чтобы узнать, хватит ли маржи для новой операции нужно использовать OrderCheck - там по идее и будет посчитана та самая отрицательная маржа.

Спасибо.

Используется и OrderCheck и проверка маржи.

 
Andrey Barinov:

Спасибо.

Используется и OrderCheck и проверка маржи.

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

 
Stanislav Korotky:

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

Ругается на нехватку средств. Хотя OrderCheck возвращает true, и судя по документации это говорит о том, что маржи достаточно... Есть еще и собственная проверка средств, она тоже проходится норм.

 
Andrey Barinov:

Ругается на нехватку средств. Хотя OrderCheck возвращает true, и судя по документации это говорит о том, что маржи достаточно...

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

В случае успешной базовой проверки структур (проверка указателей) возвращается true – это не является свидетельством того, что запрашиваемая торговая операция непременно выполнится успешно. Для получения подробного описания результата выполнения функции следует анализировать поля структуры result.

Вы так и не показали следующие строки лога.

 
Stanislav Korotky:

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

В случае успешной базовой проверки структур (проверка указателей) возвращается true – это не является свидетельством того, что запрашиваемая торговая операция непременно выполнится успешно. Для получения подробного описания результата выполнения функции следует анализировать поля структуры result.

Вы так и не показали следующие строки лога.

На сайте черным по белому написано

В случае нехватки средств или ошибочно заполненных параметров функция возвращает false.

Если следовать законам логики, то во всех случаях когда функция возвращает true, можно сделать вывод, что маржи достаточно.