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


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


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

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

Код

...
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 записи об одном и том же ордере.

3) Снимаем выставленный руками в квике ордер.
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 записи об одном и том же ордере.

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

Код

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

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

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

Теги:


Спасибо:




5 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.07.2014
Ответить


Это Lua режим или DDE?
Спасибо:

beast

Фотография
Дата: 20.07.2014
Ответить


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


вывод происходит через DDE
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.07.2014
Ответить


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


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


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

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

beast

Фотография
Дата: 20.07.2014
Ответить


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


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


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

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


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

esper

Фотография
Программист
Дата: 21.07.2014
Ответить


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

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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy