Разбор данных в стакане (например запись в файл) можно осуществить по разному.
вот пару решений.
Вариант 1.
Совсем просто.
private void OnMarketDepthsChanged(IEnumerable<MarketDepth> depths)
{
depths.ForEach(d =>
{
if (((d.Security.Id == "RIH3@RTS")))
{
string rstr = "";
rstr = d.ToString()
string filename = @"c:\1.txt"; // имя файла задаем
using (var sw = new StreamWriter(filename))
{
sw.WriteLine(rstr);
}
}
});
}
Можно написать отдельно процедуру разбора строки d.ToString(), если кому надо :)
в файл записывется
...
Бид 150120 3445
Бид 150130 283
Бид 150140 1328
Бид 150150 614
Оффер 150160 307
Оффер 150170 406
Оффер 150180 3021
...
Вариант 2.
более сложный, но в нам можно весь стакан сохранить в том виде в каком нужно
тут получается достаточно компактно.
private void OnMarketDepthsChanged(IEnumerable<MarketDepth> depths)
{
depths.ForEach(d =>
{
if (((d.Security.Id == "RIH3@RTS")))
{
decimal Bask = 0;
decimal Bbid = 0;
DateTime dtCur = DateTime.Now;
string rstrn = string.Format("{0}:{1}:{2}.{3};", dtCur.Hour, dtCur.Minute, dtCur.Second, dtCur.Millisecond);
string rstr = rstrn;
foreach (var qoute in Trder.GetMarketDepth(d.Security))
{
if (qoute.OrderDirection == OrderDirections.Sell)
{
if (Bask == 0)
{
Bask = qoute.Price;
rstr = rstr + "\r\n" + rstrn;
}
rstr = rstr + string.Format("{0}/{1};", qoute.Price, qoute.Volume);
}
else
{
Bbid = qoute.Price;
rstr = rstr + string.Format("{0}/{1};", qoute.Price, qoute.Volume);
}
}
string filename = @"c:\1.txt"; // имя файла задаем
using (var sw = new StreamWriter(filename))
{
sw.WriteLine(rstr);
}
}
}
});
}
в файл записывется (1-я строчка Биды, 2-я оффера)
...
19:40:49.705;143530/139;143540/131;143550/85;143560/70;143570/25;143580/43;143590/18;143600/55;143610/38;143620/17;
19:40:49.705;143640/35;143650/62;143660/39;143670/37;143680/152;143690/139;143700/197;143710/99;143720/125;143730/568;
19:40:50.125;143530/139;143540/131;143550/85;143560/70;143570/25;143580/43;143590/18;143600/50;143610/40;143620/20;
19:40:50.125;143640/35;143650/62;143660/39;143670/34;143680/152;143690/142;143700/197;143710/99;143720/125;143730/568;
...