Нет информации о главном окне Quik. Возможно, было неуспешное подключение.


Нет информации о главном окне Quik. Возможно, было неуспешное подключение.
Atom
6/8/2010


В чем может быть причина сообщения об ошибке?
Квик запущен, путь к нему прописан.

Tags:


Thanks:


< 1 2 3 4  >
Mikhail Sukhov

Avatar
Date: 6/10/2010
Reply


Из-за того, что стакан еще пуст.

Thanks:

ddd888

Avatar
Date: 6/10/2010
Reply


Но тогда должна работать проверка на null? Еще раз проверил
аналогичную ситуацию на 1.8 - там такая ошибка обычно иногда возникает
при первичном запуске стакана, но раз запустившись потом никогда не
появляется. В 2.0.1 она возникает периодически уже при открытом
стакане. У меня GetMarketDepth изменилась логика?

Thanks:

Mikhail Sukhov

Avatar
Date: 6/10/2010
Reply


Периодически - это как? По таймеру? Или пользователь что-то кликает?
Или в стратегии?

Thanks:

ddd888

Avatar
Date: 6/10/2010
Reply


Обновление стакана у меня происходит по событию
GetMarketDepth(this.Security).Changed
Вот во время периодического обновления иногда и выскакивает эта
ошибка.

+ опять-таки иногда при инициализации стакана выскакивает ошибка
"последовательность не содержит соответствующего элемента". В отладке
при этом this.Security - вроде вполне нормально загруженный.

Thanks:

ddd888

Avatar
Date: 6/10/2010
Reply


Заметил такую особенность - пока все сделки до конца не подгрузились в
S#, при открытии стакана GetMarketDepth может вызывать ошибку
("последовательность не содержит элементов"). А RegisterQuotes -
"последовательность не содержит соответствующего элемента".

Thanks:

Mikhail Sukhov

Avatar
Date: 6/11/2010
Reply


Да, я уже писал о присутствующей ошибке в запуске ДДЕ. Это она. Квик
загружен, а S# - нет. S# нажимает на кнопки и ожидает моментального
появления окон. Квик же думает, и не всегда может реагировать
моментально. Я бы исправил ошибку, если бы она стабильно возникала. Но
дело в том, что на моем компе она не возникает практически никогда
(да, я шустр!).

Thanks:

ddd888

Avatar
Date: 6/11/2010
Reply


Да, Вам больше повезло! Хотя вроде у меня тоже комп не слабый. :)
При первичном запуске стакана такая ошибка некритична. Хуже когда она
возникает уже в процессе от метода GetMarketDepth. В 1.8. такого точно
ни разу не было, а сейчас почему-то есть. При этом никак не могу
понять такое поведение. Вот, например код:

строка 801. this.BestBid = _marketDepth.Where(t => t.Bid != 0).Max(t
=> t.Price);
строка 802. this.BestAsk = _marketDepth.Where(t => t.Ask != 0).Min(t
=> t.Price);
строка 803. this.MinBid = _marketDepth.Where(t => t.Bid != 0).Min(t =>
t.Price);
строка 804. this.MaxAsk = _marketDepth.Where(t => t.Ask != 0).Max(t =>
t.Price);

И когда возникает ошибка ("последовательность не содержит элементов"),
смотрю куда она указывает и вот странность: каждый раз она указывает
на разные строки! Как это может быть? Ведь если коллекция пустая, то
ошибка всегда должна появляться на 1-й же строке, т.е. здесь например
на 801-й?

Thanks:

Mikhail Sukhov

Avatar
Date: 6/11/2010
Reply


Стоп, Вы не разделяете проблемы. Есть ошибка с запуском ДДЕ. Я уже
описал симптомы. А есть по работе со стаканом. Я пока не могу понять,
у меня она или у Вас.

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

Еще рас прочитал, что Вы писал выше. MarketDepth.Changed вызывается
при любом изменении стакана. Пришла новая котировка и т.д. Тоесть,
стакан может быть даже не заполнен, а событие будет выведено. По
вышепреведенному коду могу сказать, что Вам нужно событие
ITrader.QuotesChanged потому что Вам нужно вычислять по всему стакану
(иначе, просто код бессмыслен - вычисление будет показывать ерунду по
неполному стакану). Скорее всего, в этом и ошибка. И это точно не
зависит от версии.

Thanks:

ddd888

Avatar
Date: 6/11/2010
Reply


Да, я понимаю, что это уже другая проблема. Про событие QuotesChanged
и MarketDepth.Changed тоже помню, но как это влияет на метод
GetMarketDepth?

1. Лучший бид и аск я стал так выводить потому, что у Вас BestBid и
BestAsk на самом деле выводят максимальную и минимальные цены стакана
почему-то.
2. Получается, что GetMarketDepth может выводить стакан не полностью
в зависимости от того на какое событие QuotesChanged и
MarketDepth.Changed подписался?

Thanks:

Mikhail Sukhov

Avatar
Date: 6/11/2010
Reply


Что-то не так внутри метода GetMarketDepth? Как я понял, проблема с
наружи - использование результатов этого метода. Что делать, если
программа пытается обратиться к стакану слишком рано?

1. Ни разу такое не встречал. Как это проверили?
2. GetMarketDepth возвращает всегда стакан. И этот стакан параллельно
наполняется QuikTrader.

Thanks:
< 1 2 3 4  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy