Максимальное число ордеров возвращается NULL, хотя реально ограничение есть (25 ордеров). Как получить реальное число ордеров ?

 

Всех приветствую.

Столкнулся с тем, что функция:

 AccountInfoInteger(ACCOUNT_LIMIT_ORDERS); 

возвращает NULL, хотя реальное ограничение на центовом счету 25 ордеров (МТ4-cent счет).

При этом - если запускаю эту функцию на разных счетах - я на половине получаю верное значение (500), а на половине - нулевое, хотя реально ограничение существует.

Вопрос: как получить реальное максимальное число ордеров ?

Неужели надо ждать ошибки "слишком много открытых ордеров" ???  Есть ли еще какая-то возможность получить максимальное число ордеров ?

 
Georgiy Merts:

Всех приветствую.

Столкнулся с тем, что функция:

 AccountInfoInteger(ACCOUNT_LIMIT_ORDERS); 

возвращает NULL, хотя реальное ограничение на центовом счету 25 ордеров (МТ4-cent счет).

При этом - если запускаю эту функцию на разных счетах - я на половине получаю верное значение (500), а на половине - нулевое, хотя реально ограничение существует.

Вопрос: как получить реальное максимальное число ордеров ?

Неужели надо ждать ошибки "слишком много открытых ордеров" ???  Есть ли еще какая-то возможность получить максимальное число ордеров ?

Думаю, что никак. Та же самая фишка, что и со стоплевел: по запросу - 0, а реально он есть. Поэтому выход тот, который Вы сами и озвучили - ждать ошибки и запоминать это значение. Раньше, до появления константы ACCOUNT_LIMIT_ORDERS, так и делал.

Кстати, такой же подход используется для операций встречного закрытия. Программных средств узнать, разрешено ли встречное закрытие, не существует. Только запрос OrderCloseBy и по коду ошибки определять, что встречное закрытие запрещено.

 

Понятно...

Ну что ж, благодарю за информацию...

Я поставил "костыль" - при запросе проверяю, если вернулся нуль, и счет в специальном, заранее сформированном списке - то беру значение максимума ордеров из этого специального списка... Странно, что такой важный параметр - не возвращается верно.

Причина обращения: