← Voltar

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

Всем доброго времени суток! Надеюсь, что кто-нибудь откликнется.

Есть следующий код:


...
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 выводит:


{66326669/696923689 Покупка Цена=80.29 Объем=1 Сост=Active Бал=1}
{66326670/696923689 Покупка Цена=80.29 Объем=1 Сост=Active Бал=1}

То есть в списке ордеров, вызываемом через trader.Orders, получаем 2 записи об одном и том же ордере.

  1. Снимаем выставленный руками в квике ордер. OnDepthChange выводит:

{66326669/696923689 Покупка Цена=80.29 Объем=1 Сост=Active Бал=1}
{66326670/696923689 Покупка Цена=80.29 Объем=1 Сост=Active Бал=1}
{66326673/696923689 Покупка Цена=80.29 Объем=1 Сост=Done Бал=1}

То есть теперь в списке ордеров, вызываемом через trader.Orders, получаем уже 3 записи об одном и том же ордере.

  1. Перезапускаем код. OnDepthChange выводит о снятом ордере:

{66465834/696923689 Покупка Цена=80.29 Объем=1 Сост=Done Бал=1}

То есть сейчас в списке ордеров ровно одна запись об одном ордере, как и должно быть по логике вещей.

Вопрос: как сделать так, чтобы в списке trader.Orders без использования перезагрузки программы всегда об одном ордере была одна запись?

Este tópico foi útil?

Compartilhar tópico

Comentários (5)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

Mikhail Sukhov
Mikhail Sukhov

Это Lua режим или DDE?

beast
beast Autor

Михаил Сухов: Это Lua режим или DDE?

вывод происходит через DDE

Mikhail Sukhov
Mikhail Sukhov

beast:

Михаил Сухов: Это Lua режим или DDE?

вывод происходит через DDE

Скорее всего неправильные настройки. Что-то подобное уже было на форуме.

ДДЕ мы поддерживать перестанем скоро. Как скоро - когда доведем ЛУА до конца. Поэтому лучше начинайте уже тестить новый коннектор. Тем более вы тут новичек и далеко, судя по сообщения, еще не продвинулись.

beast
beast Autor

Михаил Сухов:

beast:

Михаил Сухов: Это Lua режим или DDE?

вывод происходит через DDE

Скорее всего неправильные настройки. Что-то подобное уже было на форуме.

ДДЕ мы поддерживать перестанем скоро. Как скоро - когда доведем ЛУА до конца. Поэтому лучше начинайте уже тестить новый коннектор. Тем более вы тут новичек и далеко, судя по сообщения, еще не продвинулись.

А где написано про новый коннектор? В мануале по адресу S#.API -> Коннекторы (российские) -> Quik про Lua ничего нет.

esper
esper

Описанный баг имеет место быть, но только для ручных заявок, для заявок выставленных через робота такой ошибки нет.

Настройка коннектора QuikLua описана здесь.

beast