Trading algorítmico para .NET e Python✦86+ conectores · bolsas · corretoras · cripto✦S#.Designer · backtest · otimizar · ao vivo✦Uma comunidade de 31,455+ traders e desenvolvedores✦Trading algorítmico para .NET e Python✦86+ conectores · bolsas · corretoras · cripto✦S#.Designer · backtest · otimizar · ao vivo✦Uma comunidade de 31,455+ traders e desenvolvedores✦
Событие NewPositions приходит очень долго - от 5 сек до минуты. Текст
такой:
trader.NewPositions+=positions=>{Positions.AddRange(positions)};
Positions - ObservableCollection.
В сампле кстати позиции приходят сразу.
В каком смысле все сделки ? Экспорт стартуется не по всем таблицам
методом trader.StartDde, а только по нужным методом
trader.StartDde(string caption).
Насчет позиций - когда позиция меняется сначала приходит
PositionsChanged, а потом NewPositions ?
Поза экспортируется по ДДЕ. Самая тяжелая часть экспорта - все сделки.
Если у Вас эта таблица не экспортируется, то проблема в чем то другом.
Расскажите по подробнее, в чем заключается медленность? Лучше в
числах. Скажем, Вы запустили экспорт по деривативам (кстати, прокажите
код, как Вы экспорт запускаете). Далее, как замеряете, когда пришли
данные? Эти данные уже были ранее добавлены (тоесть, уже поза была
ранее отображена в таблице квике) или нет?
this.Trader.NewPositions+=positions=>{Positions.AddRange(positions) };
При запуске программы стартуется экспорт по таблицам Инструменты
Позиции по деривативам и нескольким стаканам.
Приходят позиции всё время по-разному - иногда сразу, иногда через
минуту-две...
Это может быть связано с тем что перед этим запускается экспорт 2-3
стаканов ?
Может быть от всего что угодно. Но обычно на среднем компьютере все
таблицы (включая тики) стартуют примерно за минуту. Почему у Вас такие
задержки - не могу сказать.
Прошу прощения, еще есть такой код:
trader.StartDde(Инструменты);
trader.NewSecurities+=securities=>{
foreach(Security sec in securities){
trader.RegisterQuotes(sec);
}
И так и так - позиции приходят иногда по одному инструменту сразу, а
по другому - через полминуты.
При перезапуске по-разному всегда приходят.
И еще, я так до конца и не понял, NewPositions приходит при любых
изменениях позиций или только при появлении новых ? при изменении уже
существующих позиций он будет приходить ?
На изменение позы необходимо мониторить два события - NewPositions и
PositionsChanged. Это связанно с тем, что первоначально до торговли
позы по инструменту не существует. Само по себе событие NewPositions
как написано в документации сигнализирует о "Событие появления новых
позиций. "
Такой еще вопрос:
Если текущая чистая позиция по и инструменту на момент запуска равна 0, то он никогда не придет по событию NewPosition? Инструмент есть в таблице позиции по деривативам.
MCTuTeJ|19951995:
Такой еще вопрос:
Если текущая чистая позиция по и инструменту на момент запуска равна 0, то он никогда не придет по событию NewPosition? Инструмент есть в таблице позиции по деривативам.
Смотрите, все просто. Если позиция по инструменту есть в таблице Квика - то событие приходит. Если позиции по инструменту нет в таблице - то оно не приходит. Тоесть тут надо обрабатывать двойную ситуацию, 1 - когда позиция реально равна нулю по таблице Квика, 2 - когда по инструменту вообще не было торгов ранее (и в Квике в таблице позиции она отсутствует).
Ваши вопросы меня сподвигли на следующее - надо посылать принудительно позиции по инструментам, по которым не было сделок. Посмотрю, возможно ли.
Я тоже так думал, но опыт показал что если позиция есть в квике, но она равна 0, то она не приходит. Чтобы приходила приходится всё время делать одну сделку перед запуском программы.
MCTuTeJ|19951995:
Я тоже так думал, но опыт показал что если позиция есть в квике, но она равна 0, то она не приходит. Чтобы приходила приходится всё время делать одну сделку перед запуском программы.
Точно не так. Потому что экспорт ДДЕ работает по принципу что видно в таблице, то и выводим. В нем нет торговой логики.
Utilizamos cookies para garantir a melhor experiência em nosso site. Ao continuar a usar nosso site, você concorda com o uso de cookies.
Comentários (26)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
В процессе работы или в момент запуска робота?
Событие NewPositions приходит очень долго - от 5 сек до минуты. Текст такой: trader.NewPositions+=positions=>{Positions.AddRange(positions)}; Positions - ObservableCollection. В сампле кстати позиции приходят сразу.
В процессе работы робота (робот уже запущен примерно с час) или в момент запуска робота (робот только запускается)?
В момент запуска
Еще такой вопрос: когда позиция по какому-нибудь инструменту меняется, новая позиция приходит в событии PositionsChanged или NewPositions ?
В момент старта грузятся все сделки. Не запускайте их, и получение позы будет быстрее.
Нужно смотреть и NewPositions и PositionsChanged. Потому что поза в начале "не существует", и "появляется" только при ее изменении.
В каком смысле все сделки ? Экспорт стартуется не по всем таблицам методом trader.StartDde, а только по нужным методом trader.StartDde(string caption). Насчет позиций - когда позиция меняется сначала приходит PositionsChanged, а потом NewPositions ?
Сначала NewPositions затем PositionsChanged
Не могли бы Вы по подробнее объяснить что Вы имели ввиду под "В момент старта грузятся все сделки. Не запускайте их, и получение позы будет быстрее. "
Поза экспортируется по ДДЕ. Самая тяжелая часть экспорта - все сделки. Если у Вас эта таблица не экспортируется, то проблема в чем то другом. Расскажите по подробнее, в чем заключается медленность? Лучше в числах. Скажем, Вы запустили экспорт по деривативам (кстати, прокажите код, как Вы экспорт запускаете). Далее, как замеряете, когда пришли данные? Эти данные уже были ранее добавлены (тоесть, уже поза была ранее отображена в таблице квике) или нет?
this.Trader.NewPositions+=positions=>{Positions.AddRange(positions) }; При запуске программы стартуется экспорт по таблицам Инструменты Позиции по деривативам и нескольким стаканам.
Экспорт запускается так: Trader.StartDde("позиции по деривативам");
Приходят позиции всё время по-разному - иногда сразу, иногда через минуту-две... Это может быть связано с тем что перед этим запускается экспорт 2-3 стаканов ?
Может быть от всего что угодно. Но обычно на среднем компьютере все таблицы (включая тики) стартуют примерно за минуту. Почему у Вас такие задержки - не могу сказать.
Только что пробовал просто такой код:
trader.Connect(); trader.Connected+=()=>{ trader.StartDde("позиции по деривативам");
trader.newPositions+=positions=>{ MessageBox.Show("позиции пришли !");
Приходят они в среднем через минуту
Прошу прощения, еще есть такой код: trader.StartDde(Инструменты); trader.NewSecurities+=securities=>{ foreach(Security sec in securities){ trader.RegisterQuotes(sec); }
И так и так - позиции приходят иногда по одному инструменту сразу, а по другому - через полминуты. При перезапуске по-разному всегда приходят.
Михаил, а правда что для того чтобы МоиСделки приходили нужно еще по Заявкам экспорт начать ?
И еще, я так до конца и не понял, NewPositions приходит при любых изменениях позиций или только при появлении новых ? при изменении уже существующих позиций он будет приходить ?
Ну вот и расгадка. Вы же еще и экспорт стаканов запускаете.
А что у Вас за робот, что ему так критично время запуска (минута или 2 минуты)? Обычно в начале сессии запускают, и выключают уже вечером.
Да.
На изменение позы необходимо мониторить два события - NewPositions и PositionsChanged. Это связанно с тем, что первоначально до торговли позы по инструменту не существует. Само по себе событие NewPositions как написано в документации сигнализирует о "Событие появления новых позиций. "
Такой еще вопрос: Если текущая чистая позиция по и инструменту на момент запуска равна 0, то он никогда не придет по событию NewPosition? Инструмент есть в таблице позиции по деривативам.
Смотрите, все просто. Если позиция по инструменту есть в таблице Квика - то событие приходит. Если позиции по инструменту нет в таблице - то оно не приходит. Тоесть тут надо обрабатывать двойную ситуацию, 1 - когда позиция реально равна нулю по таблице Квика, 2 - когда по инструменту вообще не было торгов ранее (и в Квике в таблице позиции она отсутствует).
Ваши вопросы меня сподвигли на следующее - надо посылать принудительно позиции по инструментам, по которым не было сделок. Посмотрю, возможно ли.
Я тоже так думал, но опыт показал что если позиция есть в квике, но она равна 0, то она не приходит. Чтобы приходила приходится всё время делать одну сделку перед запуском программы.
Точно не так. Потому что экспорт ДДЕ работает по принципу что видно в таблице, то и выводим. В нем нет торговой логики.