Всем доброго времени суток! Надеюсь, что кто-нибудь откликнется.
Есть следующий код:
...
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 должен выводить информацию о всех заявках.
Запускаем код.
Считаем, что до этого момента никаких заявок не было. OnDepthChange ничего не выводит.
В квике выставляем ордер руками. OnDepthChange выводит:
{66326669/696923689 Покупка Цена=80.29 Объем=1 Сост=Active Бал=1}
{66326670/696923689 Покупка Цена=80.29 Объем=1 Сост=Active Бал=1}
То есть в списке ордеров, вызываемом через trader.Orders, получаем 2 записи об одном и том же ордере.
- Снимаем выставленный руками в квике ордер. 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 записи об одном и том же ордере.
- Перезапускаем код. OnDepthChange выводит о снятом ордере:
{66465834/696923689 Покупка Цена=80.29 Объем=1 Сост=Done Бал=1}
То есть сейчас в списке ордеров ровно одна запись об одном ордере, как и должно быть по логике вещей.
Вопрос: как сделать так, чтобы в списке trader.Orders без использования перезагрузки программы всегда об одном ордере была одна запись?
Comentários (5)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
Это Lua режим или DDE?
вывод происходит через DDE
Скорее всего неправильные настройки. Что-то подобное уже было на форуме.
ДДЕ мы поддерживать перестанем скоро. Как скоро - когда доведем ЛУА до конца. Поэтому лучше начинайте уже тестить новый коннектор. Тем более вы тут новичек и далеко, судя по сообщения, еще не продвинулись.
А где написано про новый коннектор? В мануале по адресу S#.API -> Коннекторы (российские) -> Quik про Lua ничего нет.
Описанный баг имеет место быть, но только для ручных заявок, для заявок выставленных через робота такой ошибки нет.
Настройка коннектора QuikLua описана здесь.