Как-то я сильно заморочился над тем, чтобы получить из ордерлогов кускальпа данные, которые продаются Мосбиржей. У меня были купленные данные type B (сделки и лучшие котировки) по RI за один месяц и в итоге после всевозможных танцев с бубнами все сошлось (кроме времени сделки/котировки, но это ранее обсуждалось — погрешность +-3 мс возникала из-за органицации хранения исторических данных Мосбиржей, при этом данные кускальпа оказываются более точными). Собственно, больше всего «танцев» было по поводу обратного инжиниринга правил сведения заявок. На языке С++ они выглядят так (комментарии излишни, кому действительно надо — сам разберется):
opDir = L'U';
if( ( qsds[0].plaza2OpWord & QshOrderLogFrame::plazaWordQuote ) != 0 &&
( qsds[1].plaza2OpWord & QshOrderLogFrame::plazaWordCounter ) != 0 ||
( qsds[0].plaza2OpWord & QshOrderLogFrame::plazaWordCounter ) != 0 &&
( qsds[1].plaza2OpWord & QshOrderLogFrame::plazaWordQuote ) != 0 )
{
for( unsigned i = 0; i < qsds.size(); i++ )
{
if( ( qsds[i].plaza2OpWord & QshOrderLogFrame::plazaWordQuote ) != 0 )
{
if( ( qsds[i].plaza2OpWord & QshOrderLogFrame::plazaWordBuy ) != 0 )
{
opDir = L'B';
break;
}
else if( ( qsds[i].plaza2OpWord & QshOrderLogFrame::plazaWordSell ) != 0 )
{
opDir = L'S';
break;
}
else
{ <a name="cut"></a>
<br /> throw( string( "One side of the deal has undefined direction" ) );
break;
}
}
}<br />}
else if( ( qsds[0].plaza2OpWord & QshOrderLogFrame::plazaWordQuote ) != 0 &&
( qsds[1].plaza2OpWord & QshOrderLogFrame::plazaWordQuote ) != 0 )
{
if( qsds[1].plaza2OpWord & QshOrderLogFrame::plazaWordBuy )
opDir = L'B';
else if( qsds[1].plaza2OpWord & QshOrderLogFrame::plazaWordSell )
opDir = L'S';
else
opDir = L'U';
}
else
{
if( qsds[1].plaza2OpWord & QshOrderLogFrame::plazaWordBuy )
opDir = L'B';
else if( qsds[1].plaza2OpWord & QshOrderLogFrame::plazaWordSell )<br /> opDir = L'S';
else
opDir = L'U';
}ну, разве что поясню, что qsds — структура, содержащая два элемента: две заявки, которые свелись в сделку.
Собственно, у меня такой вопрос: чем ценна такая информация о направлении сделки? Из приведенного кода очевидно ведь, что на выходе получается какой-то неинформативный шум...
P.S. Если кому нужны данные type B за день по заданному фьючу — могу продать за немного рубкоинов:)
Вроде направление сделки определяется типом заявки инициатора сделки.
А инициатор сделки будет тот, у кого выше(больше) номер заявки. Если в структуре qsds уже есть две заявки, что свелись в сделку, то зачем такой сложный код городить?