некорректная работа getDepoEx

Страницы: 1
RSS
некорректная работа getDepoEx, "плавающая ошибка"
 
Добрый день!

Подскажите, в чём может быть причина некорректного срабатывания getDepoEx при запросе числа лотов в портфеле.
Версия 9.7.1.10, Windows 10.

Код:

local result=getDepoEx(firmid, C_CODE , key, Account, 2)

if result~=nil and result~=0
and result.currentbal~=nil
and result.awg_position_price~=nil
then
    lotsnumber=result.currentbal
    pos_price=result.awg_position_price
else lotsnumber=0 pos_price=0
end
if lotsize~=0 then lotsnumber=lotsnumber/lotsize end

d[25][77]=lotsnumber
d[25][89]=pos_price

 set_cell(t_id, k, 12, tostr(d25][77]))

Цена позиции считывается всегда корректно, а объем позиции в половине случаев корректно передаётся, но часто (в половине случаев) возвращается 1/10 или 1/100 объема.

Например вот результаты последовательных запусков скрипта в течение одной минуты (корректная позиция у PHOR = 3 лота):

3 ..  3 ... 0.3 ... 0.03 ... 3 ...  0.3

на прошлой версии квика всё также было. Через getDepo такая же история. Ситуация наблюдается и во время торговой сессии и в выходные.

Можно ли понять, в чём причина ошибка или каким-то другим способом получить портфель и быть уверенным в корректном значении?

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

И ещё, подскажите пожалуйста, чтобы не создавать вторую тему, есть ли поле у какой-нибудь таблицы, с помощью которой можно определить остаток денег, свободных для торговли:
например,
депозит 1000 рублей, в лонге в бумагах 500, в шорте -200; по какому запросу можно получить 300 (средства, доступные для открытия новых позиций без залезания в плечи).

Спасибо большое!
 
Дополнение: описанная ситуация, если она возникла, то наблюдается сразу для всех бумаг в портфеле, то есть для всего портфеля показывается 1/10 от позиции в течение всей сессии: если при запуске  скрипта квик решил показывать 1/10 позиции, то он возвращает результат в 10 раз меньше реального для всех бумаг в портфеле до конца работы скрипта (у меня обновляется информация по позициям раз в несколько секунд).
 
Всё, разобрался в причине. Извините пожалуйста, проблема заключалась в том, что я случайно неделю назад закомментил сверху строчку с изменением переменной lotsize в зависимости от инструмента и в результате получилось, что lotsize стал глобальной переменной для всех позиций и естественно в него записывалось одинаковое для всех бумаг случайное значение с размером лота какого-нибудь инструмента. Глупая ошибка. :oops:


Буду очень благодарен, если кто-нибудь подскажет ответ по второму вопросу, про поле у какой-нибудь таблицы, с помощью которого можно определить остаток денег, свободных для торговли без залезания в плечи, если есть и длинная и короткая позиция в портфеле:
например,
депозит 1000 рублей, в лонге в бумагах 500, в шорте -200; по какому запросу можно получить 300 (средства, доступные для открытия новых позиций без залезания в плечи).

Спасибо!
 
Dim, добрый день.

В таблице "Позиции по деньгам" есть поле "Доступно" - в нем отображается сумма средств, доступных для совершения операций. При расчете этой суммы учитываются также доступные заемные средства; рассчитать аналогичное значение только с использованием собственных средств можно, если вычесть из "Доступно" значение поля "Текущий лимит".

С подробным описанием таблицы "Позиции по деньгам" и ее полей Вы можете ознакомиться в Руководстве пользователя QUIK (Раздел 3. Просмотр информации / Позиции по деньгам).
Страницы: 1
Читают тему
Наверх