← Zurück

Лучший бид больше или равен лучшему офферу

Вот такая ошибка при сохранении данных. Получается, что смартком может присылать некорректные стаканы? Почему-то перестали приходить оповещения о новых сообщениях в форуме. Адрес в профиле правильный, на оповещения подписан. ```plain 2013-09-13 18:40:17,786 [ 9] ERROR - Ошибка при сохранении маркет данных System.ArgumentException: Лучший бид 142,35 больше или равен лучшему офферу 142 во время 13.09.2013 18:40:15. Parameter name: depths at #=qDQE6UFyxY9ev55BGfq1mkCmubxEixGG2yBIZlqLtpQ9bmJpQ_GquL8XpvvBN9PSq.#=qtWdK3nDdnk6xQfwORvHBNw==(List1 #=q8nuRg9VchYxAVYe7yyrhuQ==, IEnumerable1 #=qsPBBtgh68UJlE5Hw$TkT7A==, #=qYfTpvUh_jC5dOKfp3oA$a$b$FJD2k3o9Jrb8w9CInySnbfsO0HQf4ln5h79dbxa8 #=qFR9phsNymisrVabddAd8OA==) at #=q_jpGTnhSCdiEhHJ6se4J0IFa5Dmw1ez$m$ORCOBZEjTcPUi5PKQNimMyWYwfvNo4x842oQR1_AGB9ugNEekkrw==.#=qIoakeHStFXUa2AHCKtSOdZUvLDrFa4Orpyv$_jkkOJmspCOVdBbkJ_UokHOyfuzmxFGNWIcprDrFx0Kc1H6FB1G_4jZdZZMNSEyjMqTAI_g=(IEnumerable1 #=q5TZ1SjQvukY$5hj_YJh91g==, #=qiWb_GdPXBy57hPO7nT63wW_uh6O$TZiVwWzTtXcvawJAE4P$HFJhh3wqkIqbTt83 #=qiwN6UlyUAOoKQeRJOx_xpQ==) at #=qp3zGpbG2i9SNLszeVqQkh7K4ALyVkGrB7KX$cWHAuCKUvZuPq9EsKdkoQs7huFyk.#=qBd4q2YIIXt6UtEskScJftA==(DateTime #=quT0M19H4t_1w1ds02km1fg==, #=q1_a1b6wY1uBf_KE6EGlYwQ==[] #=qtUGZg56jTQSVda3SXiflQQ==, Boolean #=qvUxXIOqEaak08Vrzl7CggQ==) at #=qp3zGpbG2i9SNLszeVqQkh7K4ALyVkGrB7KX$cWHAuCKUvZuPq9EsKdkoQs7huFyk.Save(IEnumerable1 #=q_JfroTjjq7EKzmSUl2CfHA==) at AlgoTrading.Hydra.Model.SaveManager.SaveMarketDepths() in c:\Users\Vladimir\AppData\Local\Temp\AlgoTrading\Build Process Data\Export\SourceCode\Applications\AlgoTrading.Hydra\Model\SaveManager.cs:line 184 at AlgoTrading.Hydra.Model.SaveManager.<StartSaving>b__3(Object sender, DoWorkEventArgs args) in c:\Users\Vladimir\AppData\Local\Temp\AlgoTrading\Build Process Data\Export\SourceCode\Applications\AlgoTrading.Hydra\Model\SaveManager.cs:line 82 at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

War dieses Thema hilfreich?

Thema teilen

Kommentare (2)

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

vk37
vk37 Autor

Забавно еще что условие на исключение такой ситуации в коде есть:```csharp foreach (var marketDepth in marketDepths) { if (marketDepth.Bids == null || marketDepth.Asks == null || marketDepth.BestAsk == null || marketDepth.BestBid == null) continue;

if (marketDepth.Bids.Length == 0 || marketDepth.Asks.Length == 0)
    continue;

//!!!!! Вот это условие !!!!!
if (marketDepth.BestAsk.Price <= marketDepth.BestBid.Price)
    continue;

_saveManager.MarketDepths.Enqueue(marketDepth);

}

Mikhail Sukhov
Mikhail Sukhov

Потому что объект MarketDepth переиспользуется. Нужно клонировать. И используйте Гидру. Она за долгое время научилась уже фильтровать такие косяки.