Тема: использование функции CalcBuySell

Очень долгая по исполнению функция CalcBuySell, использую для получения максимально возможного кол-ва лотов по заданной цене.
Для расчета максимально доступного кол-ва лотов без использования CalcBuySell надо знать коэфф. дисконта, который периодически меняется внутри сессии и не доступен программно из таблицы купить/продать (жадная Арка, данные из нее клещами надо вытягивать).

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

Есть какие-то решения? Заранее благодарен.

2

Re: использование функции CalcBuySell

Есть ведь getBuySellInfoEx, где можно получить дисконты

3 (2015-07-15 17:47:23 отредактировано kalikazandr)

Re: использование функции CalcBuySell

swerg пишет:

Есть ведь getBuySellInfoEx, где можно получить дисконты

да, получил, давно интересно поправили?

4

Re: использование функции CalcBuySell

Исходя из написанного выше, никак не могу понять. Если такие проблемы с функцией CalcBuySell, то не проще ли использовать функцию getBuySellInfo для получения максимально возможного кол-ва лотов по заданной цене?
Ведь она ничего не вычисляет, а просто прочитывает значения из таблицы "Купить/Продать". Т.е. долгой не может быть в принципе.
Что-то вроде такого:
BuySell = getBuySellInfo(FirmID,ClientCode,ClassCode,SecCode,0)
BuyQty = BuySell.can_buy; SellQty = BuySell.can_sell

Непонятно, зачем брать из таблицы "Купить/Продать" дисконты и потом делать самому расчёт максимального количества, если эта величина уже посчитана (где-то внутри квика) и присутствует в той же таблице?..