← Voltar

Получение таблицы "позиции по деривативам"

Почему очень очень медленно приходят позиции по деривативам??? И как- нибудь можно ли ускорить этот процесс???

Comentários (26)

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

Mikhail Sukhov
Mikhail Sukhov

В процессе работы или в момент запуска робота?

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

Событие NewPositions приходит очень долго - от 5 сек до минуты. Текст такой: trader.NewPositions+=positions=>{Positions.AddRange(positions)}; Positions - ObservableCollection. В сампле кстати позиции приходят сразу.

Mikhail Sukhov
Mikhail Sukhov

В процессе работы робота (робот уже запущен примерно с час) или в момент запуска робота (робот только запускается)?

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

В момент запуска

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

Еще такой вопрос: когда позиция по какому-нибудь инструменту меняется, новая позиция приходит в событии PositionsChanged или NewPositions ?

Mikhail Sukhov
Mikhail Sukhov

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

Нужно смотреть и NewPositions и PositionsChanged. Потому что поза в начале "не существует", и "появляется" только при ее изменении.

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

В каком смысле все сделки ? Экспорт стартуется не по всем таблицам методом trader.StartDde, а только по нужным методом trader.StartDde(string caption). Насчет позиций - когда позиция меняется сначала приходит PositionsChanged, а потом NewPositions ?

Mikhail Sukhov
Mikhail Sukhov

Сначала NewPositions затем PositionsChanged

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

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

Mikhail Sukhov
Mikhail Sukhov

Поза экспортируется по ДДЕ. Самая тяжелая часть экспорта - все сделки. Если у Вас эта таблица не экспортируется, то проблема в чем то другом. Расскажите по подробнее, в чем заключается медленность? Лучше в числах. Скажем, Вы запустили экспорт по деривативам (кстати, прокажите код, как Вы экспорт запускаете). Далее, как замеряете, когда пришли данные? Эти данные уже были ранее добавлены (тоесть, уже поза была ранее отображена в таблице квике) или нет?

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

this.Trader.NewPositions+=positions=>{Positions.AddRange(positions) }; При запуске программы стартуется экспорт по таблицам Инструменты Позиции по деривативам и нескольким стаканам.

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

Экспорт запускается так: Trader.StartDde("позиции по деривативам");

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

Приходят позиции всё время по-разному - иногда сразу, иногда через минуту-две... Это может быть связано с тем что перед этим запускается экспорт 2-3 стаканов ?

Mikhail Sukhov
Mikhail Sukhov

Может быть от всего что угодно. Но обычно на среднем компьютере все таблицы (включая тики) стартуют примерно за минуту. Почему у Вас такие задержки - не могу сказать.

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

Только что пробовал просто такой код:

trader.Connect(); trader.Connected+=()=>{ trader.StartDde("позиции по деривативам");

trader.newPositions+=positions=>{ MessageBox.Show("позиции пришли !");

Приходят они в среднем через минуту

Mikhail Sukhov
Mikhail Sukhov
  1. Без экспорта инструментов позии приходить не будут. Так что код как минимум не такой.
  2. В среднем - это как расчитали? Перезапускали приложение? Или позиции приходили несколько раз через событие newPositions
MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

Прошу прощения, еще есть такой код: trader.StartDde(Инструменты); trader.NewSecurities+=securities=>{ foreach(Security sec in securities){ trader.RegisterQuotes(sec); }

И так и так - позиции приходят иногда по одному инструменту сразу, а по другому - через полминуты. При перезапуске по-разному всегда приходят.

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

Михаил, а правда что для того чтобы МоиСделки приходили нужно еще по Заявкам экспорт начать ?

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

И еще, я так до конца и не понял, NewPositions приходит при любых изменениях позиций или только при появлении новых ? при изменении уже существующих позиций он будет приходить ?

Mikhail Sukhov
Mikhail Sukhov

Ну вот и расгадка. Вы же еще и экспорт стаканов запускаете.

А что у Вас за робот, что ему так критично время запуска (минута или 2 минуты)? Обычно в начале сессии запускают, и выключают уже вечером.

Mikhail Sukhov
Mikhail Sukhov

Да.

Mikhail Sukhov
Mikhail Sukhov

На изменение позы необходимо мониторить два события - NewPositions и PositionsChanged. Это связанно с тем, что первоначально до торговли позы по инструменту не существует. Само по себе событие NewPositions как написано в документации сигнализирует о "Событие появления новых позиций. "

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

Такой еще вопрос: Если текущая чистая позиция по и инструменту на момент запуска равна 0, то он никогда не придет по событию NewPosition? Инструмент есть в таблице позиции по деривативам.

Mikhail Sukhov
Mikhail Sukhov

MCTuTeJ|19951995: Такой еще вопрос: Если текущая чистая позиция по и инструменту на момент запуска равна 0, то он никогда не придет по событию NewPosition? Инструмент есть в таблице позиции по деривативам.

Смотрите, все просто. Если позиция по инструменту есть в таблице Квика - то событие приходит. Если позиции по инструменту нет в таблице - то оно не приходит. Тоесть тут надо обрабатывать двойную ситуацию, 1 - когда позиция реально равна нулю по таблице Квика, 2 - когда по инструменту вообще не было торгов ранее (и в Квике в таблице позиции она отсутствует).

Ваши вопросы меня сподвигли на следующее - надо посылать принудительно позиции по инструментам, по которым не было сделок. Посмотрю, возможно ли.

MCTuTeJ|19951995
MCTuTeJ|19951995 Autor

Я тоже так думал, но опыт показал что если позиция есть в квике, но она равна 0, то она не приходит. Чтобы приходила приходится всё время делать одну сделку перед запуском программы.

Mikhail Sukhov
Mikhail Sukhov

MCTuTeJ|19951995: Я тоже так думал, но опыт показал что если позиция есть в квике, но она равна 0, то она не приходит. Чтобы приходила приходится всё время делать одну сделку перед запуском программы.

Точно не так. Потому что экспорт ДДЕ работает по принципу что видно в таблице, то и выводим. В нем нет торговой логики.