Блог им. tranquility
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 — структура, содержащая два элемента: две заявки, которые свелись в сделку.
tranquility, дельта вроде полезна в нескольких вариантах:
1) либо очень сильная точечная, размазанная на 1-2 пункта, тогда можно заявку втыкать и стоп за нее
2) либо кумулятивная дельта. Это достаточно сильный сигнал, когда идет дивер по кумулятивной дельте и цене. Цена например растет, а дельта вовсю падает. Например на протяжении пары часов или на протяжении пары дней, в зависимости от тф
Во фьюче большие дельты образуют несколько участников:
1) арбитражеры. Это когда на споте появился не маленький участник и арбитражер под него долбит фуч
2) опционные хеджеры, когда крупному продавцу опциона нужно срочно перекрыть какие то ноги.
больше особо крупных учасьников, которые работают во фуче нет у нас. Вот они и образовывают такие дельты. Если вычислить кто это, то сразу понятно чего происходит
Вроде направление сделки определяется типом заявки инициатора сделки.
А инициатор сделки будет тот, у кого выше(больше) номер заявки. Если в структуре qsds уже есть две заявки, что свелись в сделку, то зачем такой сложный код городить?
Вот кусок из полного ордерлога :
21244387422 (Sell) и 21244387056 (Buy) — это номера заявок попавших в сделку 1482842997. Номер заявки 21244387422 выше чем 21244387056, следовательно сделка будет иметь направление Sell.
tranquility, код, возможно, ошибочен, либо «замусорен». В последней паре if/else код ветки if совпадает с кодом ветки else (найдите ту пару, которую я имею ввиду). Обычно это бывает после copy&paste'ы, которую затем забыли отредактировать «до готовности».
Либо, если всё правильно, то if тогда здесь просто лишний.
Код, фактически, на C, из C++ здесь только throw, string и операция :: .
Код вставлен криво, — перемежается HTML-tag'ами.
Если _одна котировочная другая встречная_:
Блок1
Если _обе котировочные_:
Блок2
Остальное:
Блок2
Там ещё отдельно надо было обрабатывать случаи внесистемных заявок. В истории от Мосбиржи их нет, но для того, чтобы получить такой же файл на выходе что и qsh2txt даёт, с внесистемных и надо отдельно работать по другим немного правилам. Вероятно, поэтому немного неоптимальности код получился с точки зрения его чтения. Мне здесь больше важна отладка, чтобы ничего не сломалось случайно)