← Zurück

Снова стакан

Иногда в стакане BestBid.Price или BestAsk.Price равны нулю. Стаканы яполчаю в конструкторе и для рассчета текущих сигналов использую только их вот код

public BasketSignalCalculator(TradedBasket basket, TikerController tikerController, bool isSigmaCalculated) { this.isSigmaCalculated = isSigmaCalculated; this.trader = tikerController.Trader; this.basket = basket; this.tikerController = tikerController; leftSideMD = trader.GetMarketDepth(trader.Securities.First(sec => sec.Code == basket.Basket.LeftSide[0].Asset.Name)); rightSideMDs = trader.GetMarketDepth(trader.Securities.First(sec => sec.Code == basket.Basket.RightSide[0].Asset.Name)); }

вот код одного из методов

public decimal CalcSumCurrentBids() { decimal delta = 0; foreach (TradedBasketItem tradedBasketItem in basket.CurrentPart.RightSide) { decimal koef = GetTikerKoef(tradedBasketItem.Tiker); double bid = rightSideMDs.BestBid.Price; delta = delta + bid * tradedBasketItem.Weight * koef; if (delta <= 0) {

TradeBasketHelperLogger.Logger.Debug(String.Format("Delta = 0, koef = {0}, BB = {1}, TotalVol = {2}, TotalPrice {3}", koef, bid, rightSideMDs.TotalVolume, rightSideMDs.TotalPrice)); } } return delta; }

и вот лог

14:06:57,421 - Delta = 0, koef = 1, BB = 0, TotalVol = 667149, TotalPrice 1487,4 14:09:05,515 - Delta = 0, koef = 1, BB = 0, TotalVol = 659359, TotalPrice 1486,44 14:10:23,468 - Delta = 0, koef = 1, BB = 0, TotalVol = 522221, TotalPrice 1486,02

что это за глюк и как с ним бороться?

War dieses Thema hilfreich?

Thema teilen

Kommentare (17)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

Может быть банально еще не пришел экспорт? Или это в середине работы случается?

Tauler
Tauler Autor

и вот еще

14:27:57,078 - Delta = 0, koef = 1, BB = 0, TotalVol = 0, TotalPrice 0 14:28:15,953 - Delta = 0, koef = 1, BB = 0, TotalVol = 0, TotalPrice 0 14:28:18,078 - Delta = 0, koef = 1, BB = 0, TotalVol = 520064, TotalPrice 1489,09

в середине, в том то и беда. метод CalcSumCurrentBids() вызываеся в цикле весьма часто (как видно по тайм стампам), десять раз в секунду точно

Tauler
Tauler Autor

вот секция из info.ini

[excel] timeout=90 price-timeout=0 start-timeout=100 use-multithread=1 num-attempts=0 language_id=0

может price-timeout = 0 не надо делать?

Tauler
Tauler Autor

Я кстати правильно делаю, что создаю переменную сткана в конструкторе , кладу ее в поле и потом пользую? не надо какжый рах trader.GetMarketDepth() использовать?

Tauler
Tauler Autor

И вот вопрос - щас покурил мануал и что лучге использовать - MarketDepth.BestAsk или MarketDepth GetBestQuote(OrderDirections.Sell)?

Mikhail Sukhov
Mikhail Sukhov

Минутку, а как данные в эти стаканы попадают?

Mikhail Sukhov
Mikhail Sukhov

Отбой, я понял о чем идет речь.

Mikhail Sukhov
Mikhail Sukhov

Второе вызывает первое.

Mikhail Sukhov
Mikhail Sukhov

Частота не зависит... А можете сократить код до простого примера в 10 строчек?

Tauler
Tauler Autor

Да грубо говоря так

MarketDepth md = trader.GetMarketDepth(security);

while(true) { Console.WriteLine(md.BestAsk.Price); Thread.Sleep(10);

Mikhail Sukhov
Mikhail Sukhov

Ок, посмотрю чуть по-позже. Надо еще глянуть на частоту обновления инструментов... Главное, чтобы этот код точно приводил к баге.

Tauler
Tauler Autor

Иожно вообще слип убрать и отлавливать моменты когда бестбид или бестаск равны 0. еще вот я заметил тоталволюм парур раз 0 проскакивал.

вероятно если подписаться на событие QoutesChanged таког не будет, н оу Workflow со событиями как то не айс работа, на то он и flow.

Tauler
Tauler Autor

а MarketDepth потокобезопасный? может я в него лезу как раз в тот момент , ктога он обновляет эти свойства?

Mikhail Sukhov
Mikhail Sukhov

Потокобезопасный.

Mikhail Sukhov
Mikhail Sukhov

Две новости. Хорошая - у меня работает. Плохая (но не для меня) - у меня версия 2.1. Вот так =)

Действительно, посмотрел старый код. Такое поведение могло быть. Обновление котировок было не атомарно.

Tauler
Tauler Autor

а долго ожидать релиза 2.1?

Mikhail Sukhov
Mikhail Sukhov

Я в процессе документирования. Думал на этой неделе сделаю, а у вас все проблемы да проблемы... Думаю 2-3 дня.