Mikhail Sukhov
|
Дата: 15.09.2010
В процессе работы или в момент запуска робота?
|
|
|
|
MCTuTeJ|19951995
|
Дата: 16.09.2010
Событие NewPositions приходит очень долго - от 5 сек до минуты. Текст такой: trader.NewPositions+=positions=>{Positions.AddRange(positions)}; Positions - ObservableCollection. В сампле кстати позиции приходят сразу.
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 16.09.2010
В процессе работы робота (робот уже запущен примерно с час) или в момент запуска робота (робот только запускается)?
|
|
|
|
MCTuTeJ|19951995
|
Дата: 17.09.2010
В момент запуска
|
Автор топика
|
|
|
MCTuTeJ|19951995
|
Дата: 17.09.2010
Еще такой вопрос: когда позиция по какому-нибудь инструменту меняется, новая позиция приходит в событии PositionsChanged или NewPositions ?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 17.09.2010
В момент старта грузятся все сделки. Не запускайте их, и получение позы будет быстрее.
Нужно смотреть и NewPositions и PositionsChanged. Потому что поза в начале "не существует", и "появляется" только при ее изменении.
|
|
|
|
MCTuTeJ|19951995
|
Дата: 17.09.2010
В каком смысле все сделки ? Экспорт стартуется не по всем таблицам методом trader.StartDde, а только по нужным методом trader.StartDde(string caption). Насчет позиций - когда позиция меняется сначала приходит PositionsChanged, а потом NewPositions ?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 17.09.2010
Сначала NewPositions затем PositionsChanged
|
|
|
|
MCTuTeJ|19951995
|
Дата: 17.09.2010
Не могли бы Вы по подробнее объяснить что Вы имели ввиду под "В момент старта грузятся все сделки. Не запускайте их, и получение позы будет быстрее. "
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 17.09.2010
Поза экспортируется по ДДЕ. Самая тяжелая часть экспорта - все сделки. Если у Вас эта таблица не экспортируется, то проблема в чем то другом. Расскажите по подробнее, в чем заключается медленность? Лучше в числах. Скажем, Вы запустили экспорт по деривативам (кстати, прокажите код, как Вы экспорт запускаете). Далее, как замеряете, когда пришли данные? Эти данные уже были ранее добавлены (тоесть, уже поза была ранее отображена в таблице квике) или нет?
|
|
|
|
MCTuTeJ|19951995
|
Дата: 20.09.2010
this.Trader.NewPositions+=positions=>{Positions.AddRange(positions) }; При запуске программы стартуется экспорт по таблицам Инструменты Позиции по деривативам и нескольким стаканам.
|
Автор топика
|
|
|
MCTuTeJ|19951995
|
Дата: 20.09.2010
Экспорт запускается так: Trader.StartDde("позиции по деривативам");
|
Автор топика
|
|
|
MCTuTeJ|19951995
|
Дата: 20.09.2010
Приходят позиции всё время по-разному - иногда сразу, иногда через минуту-две... Это может быть связано с тем что перед этим запускается экспорт 2-3 стаканов ?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 20.09.2010
Может быть от всего что угодно. Но обычно на среднем компьютере все таблицы (включая тики) стартуют примерно за минуту. Почему у Вас такие задержки - не могу сказать.
|
|
|
|
MCTuTeJ|19951995
|
Дата: 20.09.2010
Только что пробовал просто такой код:
trader.Connect(); trader.Connected+=()=>{ trader.StartDde("позиции по деривативам");
trader.newPositions+=positions=>{ MessageBox.Show("позиции пришли !");
Приходят они в среднем через минуту
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 20.09.2010
1. Без экспорта инструментов позии приходить не будут. Так что код как минимум не такой. 2. В среднем - это как расчитали? Перезапускали приложение? Или позиции приходили несколько раз через событие newPositions
|
|
|
|
MCTuTeJ|19951995
|
Дата: 21.09.2010
Прошу прощения, еще есть такой код: trader.StartDde(Инструменты); trader.NewSecurities+=securities=>{ foreach(Security sec in securities){ trader.RegisterQuotes(sec); }
И так и так - позиции приходят иногда по одному инструменту сразу, а по другому - через полминуты. При перезапуске по-разному всегда приходят.
|
Автор топика
|
|
|
MCTuTeJ|19951995
|
Дата: 21.09.2010
Михаил, а правда что для того чтобы МоиСделки приходили нужно еще по Заявкам экспорт начать ?
|
Автор топика
|
|
|
MCTuTeJ|19951995
|
Дата: 21.09.2010
И еще, я так до конца и не понял, NewPositions приходит при любых изменениях позиций или только при появлении новых ? при изменении уже существующих позиций он будет приходить ?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 21.09.2010
Ну вот и расгадка. Вы же еще и экспорт стаканов запускаете.
А что у Вас за робот, что ему так критично время запуска (минута или 2 минуты)? Обычно в начале сессии запускают, и выключают уже вечером.
|
|
|
|
Mikhail Sukhov
|
Дата: 21.09.2010
Да.
|
|
|
|
Mikhail Sukhov
|
Дата: 21.09.2010
На изменение позы необходимо мониторить два события - NewPositions и PositionsChanged. Это связанно с тем, что первоначально до торговли позы по инструменту не существует. Само по себе событие NewPositions как написано в документации сигнализирует о "Событие появления новых позиций. "
|
|
|
|
MCTuTeJ|19951995
|
Дата: 30.09.2010
Такой еще вопрос: Если текущая чистая позиция по и инструменту на момент запуска равна 0, то он никогда не придет по событию NewPosition? Инструмент есть в таблице позиции по деривативам.
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 30.09.2010
MCTuTeJ|19951995Такой еще вопрос: Если текущая чистая позиция по и инструменту на момент запуска равна 0, то он никогда не придет по событию NewPosition? Инструмент есть в таблице позиции по деривативам. Смотрите, все просто. Если позиция по инструменту есть в таблице Квика - то событие приходит. Если позиции по инструменту нет в таблице - то оно не приходит. Тоесть тут надо обрабатывать двойную ситуацию, 1 - когда позиция реально равна нулю по таблице Квика, 2 - когда по инструменту вообще не было торгов ранее (и в Квике в таблице позиции она отсутствует). Ваши вопросы меня сподвигли на следующее - надо посылать принудительно позиции по инструментам, по которым не было сделок. Посмотрю, возможно ли.
|
|
|
|
MCTuTeJ|19951995
|
Дата: 01.10.2010
Я тоже так думал, но опыт показал что если позиция есть в квике, но она равна 0, то она не приходит. Чтобы приходила приходится всё время делать одну сделку перед запуском программы.
|
Автор топика
|
|