Вообще загадка...
luafixserver public override void SendOutMessage(Message message) получает message без ошибок, далее в ней вызывается base.SendOutMessage(message), который как я понимаю находится в messageadapter.cs и вызывает public virtual void SendOutMessage(Message message) для постановки message в очередь на обработку. А там уже ошибка есть...
Код в messageadapter.cs:
[code=csharp]
public virtual void SendOutMessage(Message message)
{
InitMessageLocalTime(message);
if (message.Type == MessageTypes.QuoteChange)
{
var quoteMsg = (QuoteChangeMessage)message;
if (quoteMsg.SecurityId.SecurityCode == "SRM5")
{
var bask = quoteMsg.GetBestAsk().Price;
var bbid = quoteMsg.GetBestBid().Price;
if (bask <= bbid)
{
SessionHolder.AddErrorLog("(2)Не верные значения лучших цен в messageAdapter! best ask={0} best bid={1} sec={2}", bask, bbid, quoteMsg.SecurityId.SecurityCode);
}
else
{
SessionHolder.AddErrorLog("(3)Значения лучших цен в messageAdapter: best ask={0} best bid={1} sec={2}", bask, bbid, quoteMsg.SecurityId.SecurityCode);
}
}
}
_outMessageProcessor.EnqueueMessage(message, this, false);
....
}
[/code]
Лог луа-сервер:
[quote]
2015/04/29 13:12:13.622|Error |Quik |(1)Значения лучших цен в message: best ask=7635 best bid=7633 sec=SRM5
2015/04/29 13:12:13.625|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7631 sec=SRM5
2015/04/29 13:12:13.628|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7631 sec=SRM5
2015/04/29 13:12:13.896|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:13.898|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:13.908|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:13.978|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:14.260|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7631 sec=SRM5
2015/04/29 13:12:14.265|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:14.745|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:15.025|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:15.305|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:16.110|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:16.509|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:17.670|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:17.767|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:18.045|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:18.050|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:18.325|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:18.606|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7631 sec=SRM5
2015/04/29 13:12:18.665|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7632 sec=SRM5
2015/04/29 13:12:18.947|Error |Quik |(1)Значения лучших цен в message: best ask=7634 best bid=7631 sec=SRM5
2015/04/29 13:12:18.956|Error |Quik |(1)Значения лучших цен в message: best ask=7632 best bid=7630 sec=SRM5
[/quote]
лог messageadapter
[quote]
13:12:13.635|Error |Quik |(3)Значения лучших цен в messageAdapter: best ask=7635 best bid=7634 sec=SRM5
13:12:13.912|Error |Quik |(2)Не верные значения лучших цен в messageAdapter! best ask=7634 best bid=7634 sec=SRM5
13:12:14.278|Error |Quik |(2)Не верные значения лучших цен в messageAdapter! best ask=7634 best bid=7634 sec=SRM5
13:12:14.760|Error |Quik |(2)Не верные значения лучших цен в messageAdapter! best ask=7634 best bid=7634 sec=SRM5
13:12:15.038|Error |Quik |(2)Не верные значения лучших цен в messageAdapter! best ask=7634 best bid=7634 sec=SRM5
13:12:15.318|Error |Quik |(2)Не верные значения лучших цен в messageAdapter! best ask=7634 best bid=7634 sec=SRM5
13:12:16.122|Error |Quik |(2)Не верные значения лучших цен в messageAdapter! best ask=7634 best bid=7634 sec=SRM5
13:12:16.522|Error |Quik |(2)Не верные значения лучших цен в messageAdapter! best ask=7634 best bid=7634 sec=SRM5
13:12:17.686|Error |Quik |(2)Не верные значения лучших цен в messageAdapter! best ask=7634 best bid=7634 sec=SRM5
13:12:18.622|Error |Quik |(2)Не верные значения лучших цен в messageAdapter! best ask=7634 best bid=7634 sec=SRM5
13:12:18.960|Error |Quik |(2)Не верные значения лучших цен в messageAdapter! best ask=7634 best bid=7634 sec=SRM5
[/quote]
И еще похоже на то, что часть message теряется и не проходит в принципе судя по количеству вызовов в луа-сервере и в адаптере...
Этот вариант без IncrementalDepthUpdates=false, позже попробую с ней. Подписка на несколько стаканов, просто чтобы было меньше каши в логах сделал выгрузку только по одному.
P.S. включение флага IncrementalDepthUpdates=false не помогает.
P.P.S. Для luafixserver SessionHolder пишет лог в файл сервера StockSharp.QuikLua.log, а для messageadapter SessionHolder пишет лог в файл трейдера QuikTrader.txt. И как тогда поймать передачу данных от одного к другому?
P.P.P.S. Михаил, может быть для лучшего быстродействия имеет смысл сделать отдельную очередь и отдельные обработчики для сообщений стакана и для прочих сообщений?