Всем доброго времени суток!
Надеюсь, что кто-нибудь откликнется.
Есть следующий код:
Code
...
private static Security sec;
private static Portfolio portf;
private static MarketDepth depth;
...
using (var trader = new QuikTrader(quikPath))
{
...
trader.SupportManualOrders = true;
trader.NewPortfolios += OnNewPortfolios;
trader.NewSecurities += OnNewSecurities;
trader.MarketDepthsChanged += OnDepthChange;
...
Thread.Sleep(500000);
...
}
...
Смысл в том, что мы подключаемся к квику, инициализируем переменные Portfolio, MarketDepth, Security и начинаем ждать в Thread.Sleep.
В обработчике OnDepthChange обращаемся к свойству trader.Orders и выводим его содержимое.
Согласно документации, trader.Orders должен выводить информацию о всех заявках.
Запускаем код.
1) Считаем, что до этого момента никаких заявок не было.
OnDepthChange ничего не выводит.
2) В квике выставляем ордер руками.
OnDepthChange выводит:
Code
{66326669/696923689 Покупка Цена=80.29 Объем=1 Сост=Active Бал=1}
{66326670/696923689 Покупка Цена=80.29 Объем=1 Сост=Active Бал=1}
То есть в списке ордеров, вызываемом через trader.Orders, получаем 2 записи об одном и том же ордере.
3) Снимаем выставленный руками в квике ордер.
OnDepthChange выводит:
Code
{66326669/696923689 Покупка Цена=80.29 Объем=1 Сост=Active Бал=1}
{66326670/696923689 Покупка Цена=80.29 Объем=1 Сост=Active Бал=1}
{66326673/696923689 Покупка Цена=80.29 Объем=1 Сост=Done Бал=1}
То есть теперь в списке ордеров, вызываемом через trader.Orders, получаем уже 3 записи об одном и том же ордере.
4) Перезапускаем код.
OnDepthChange выводит о снятом ордере:
Code
{66465834/696923689 Покупка Цена=80.29 Объем=1 Сост=Done Бал=1}
То есть сейчас в списке ордеров ровно одна запись об одном ордере, как и должно быть по логике вещей.
Вопрос: как сделать так, чтобы в списке trader.Orders без использования перезагрузки программы всегда об одном ордере была одна запись?