← 返回

Stock# 2.3

Выложил новую версию. Описание будет чуть позднее. Глобальные изменения отсутствуют, так что можно качать тем, кто писал о своих ошибках. Пофиксил все, если не забыл. Только есть одна особенность. Я перешел на VS 2010 (но пока на .NET 3.5). Так что sln файла теперь два. Один для 2010, другой для 2008.

评论 (24)

登录创建账户, 登录或注册以发表评论

Tauler
Tauler

А проблемы со стаусами пофиксили? когда приходит несколько State=Done, но с разными балансами в OrderChaged?

Mikhail Sukhov
Mikhail Sukhov 作者

Статусами (Status) или состояниями (State)? Пофиксил состояния.

Tauler
Tauler

Ну была ситуация кгода приходили подряд в OrderChaged

State = Done, Status= DOne, Balance = 10 State = Done, Status= DOne, Balance = 5

Tauler
Tauler

Ну и аналогично

State = Active, Status= Done, Balance = 10 State = Done, Status= NotValidated, Balance = 7 State = Done, Status= NotValidated, Balance = 0

NotValidated изза того (наверное) что в квике заявка еще активна, а на бирже выполнена и я в это время делаю CancelOrder.

Mikhail Sukhov
Mikhail Sukhov 作者

Я это пропустил... Так, а какое поведение правильно? Сделки по заявкам появлялись? Именно с объемами 3 и 7?

Tauler
Tauler

Да, сделки шли по очереди. Я то сейчас подбил костыль, чт оесли State = Done и Status = NotValidated - то СКОРЕЕ всего была попытка снятия исполненая целиком заявку и перекрываю ее акциями исходяи из того, что она исполнена целиком. Но - а вдруг? Арбитражер у нас впирается постоянно изз этих несоответвий. Как мо моем у субъективному мнению - после записи в OrderChaged со State =Done ничег оне должно приходить. Умерла так умерла :) Да раньше вроде так и было.

Tauler
Tauler

То есть для верно работы нужно, чтобы после State = Done баланс не менялся. Иначе - как понять что по заявке больше баланс не будет меняться и можно пееркрывать правую часть в арбитраже?

Mikhail Sukhov
Mikhail Sukhov 作者

Полностью согласен с неправильным поведением. Я как-то упустил этот момент. Надо топики разделять по багам. А то все сливается в одно и...

Ок, Ваш ворк эраунд понятен. А как фиксите случай из

http://groups.google.ru/group/stocksharp/msg/17e993e167b85eecкогда статус Done?

Думаю, у Вас обратная ситуация. Когда заявка быстрее изменяется, чем по ней сделки приходят =) Вот ДДЕ то успешно и рапортует о том, что все зер гуд, отмачено. А сделки все идут и идут... Можете трейс повесить на событие NewMyTrades и OrdersChanged. Время появления очень интересует.

Tauler
Tauler

А никак. Арбитражер начинает вопить - "ёпвашуматьсноваэтотроботокосячит" и перекрывает руками. а так планирую сделать что то типа отстойника таких заявок, после первого появления Done/Done туда заявку помещать и еще пару секунд ее наблюдать на предмет свежих поступлений :) Но может Вы как то проще пофиксите? ;) Трейс по сделайм ест ьв сосденм файле, еще раз вопремся

  • посмотрю оба. а разве ДДЕ в топике заявок не выбрасывают инфу как о статусе, так и о балансе?Зачем вообще сделки анализировать?
Tauler
Tauler

А кстати - я же уже замерял эти вещи. Действительно - сделки бывает и потом приходят.

Mikhail Sukhov
Mikhail Sukhov 作者

Сделки анализируются для того, чтобы по-быстрее изменять заявку (баланс и если он равен 0, то и состояние).

Tauler
Tauler

Ну вот видите - получается сперва состояние, потом баланс уже. Чудесный мир паралерелизма :)

Tauler
Tauler

А еще квиковцы говорят что заявки имеют приоритет над сделками

http://quik.ru/forum/qpile/59478/59478/. правда это про QPILE, но наверно и под ДДЕ подходит

Mikhail Sukhov
Mikhail Sukhov 作者

Судя по логу и коду, такое может быть тогда, когда заявка изменила свое состояние, а баланс еще пока не ноль... Если будете трейсить NewMyTrades и OrdersChanges, повесьтесь еще на ProcessWellknownData. чтобы точно смотреть на то, что пришло по ДДЕ.

Mikhail Sukhov
Mikhail Sukhov 作者

Прочитал тред... Согласен с Максимом. Потоки - независимые. Так что и сделка может прийти раньше и заявка. Как фишка ляжет.

Tauler
Tauler

Воооот. из-за этого все мои мытарства с тем .что приходит несколко заявок в OrderChaged со State = Done и балансом разным.

Иванов Андрей
Иванов Андрей

Размер увеличился в два раза. Наверное, из-за двух солюшенов =)

А ещё 10-й солюшен не открывается даблкликом. Если его немного отредактировать, то откроется.

c:>fc d:\StockSharp.sln d:\StockSharp-new.sln Comparing files D:\StockSharp.sln and D:\STOCKSHARP-NEW.SLN ***** D:\StockSharp.sln я╗┐Microsoft Visual Studio Solution File, Format Version 11.00

Visual Studio 2010

***** D:\STOCKSHARP-NEW.SLN я╗┐ Microsoft Visual Studio Solution File, Format Version 11.00

Visual Studio 2010


Mikhail Sukhov
Mikhail Sukhov 作者

Увеличиваются скомпилированные примеры. А исходники слабо изменяются в размере.

Ок, поправлю sln. Я правильно понял, что под 10-ым Вы подразумевали 2010? Потому как в 2010 студии формат sln 11 версии =)

Иванов Андрей
Иванов Андрей

Думаю, что размер увеличился из-за Enterprise library. Бестолковая штука, годится только для лабораторных работ.

"10-я студия" это версия студии, просто версия совпала с годом.

http://ru.wikipedia.org/wiki/Visual_Studio

Да и в абауте написано =)

Mikhail Sukhov
Mikhail Sukhov 作者

EntLib мне помог в нескольких: у него есть высокоуровневая обертка на Cryptography services. У него есть мега классный ObjectBuilder. И механизм кэширование. Аналоги?

Иванов Андрей
Иванов Андрей

Не знаю аналогов =)

Про криптографию не представляю, чего там оборачивать -- мы подписываем Sha1, шифруем Rijndael. Всё это и так высокоуровнево, особенно, когда MS переписал Rijndael на .Net без тормозного оборачивания native-кода.

ObjectBuilder озадачит, когда вернётесь в какой-нибудь код через год.

Про механизм кэширования сильно зависит от задачи. Я ж не знаю, что вы кэшируете =) В .Net 4.0 естьhttp://msdn.microsoft.com/en-us/library/dd287191.aspx, этого обычно хватает с головой для памяти, особенно учитывая ограничения, накладываемые Quik из-за 32 битов. Этот неймспейс я ждал больше всего в четвёрке.

В целом EL библиотека очень сложная, тяжёлая и тормозная. Прелесть фреймворка, в частности .Net, в простоте. Ваш код и после обфускации простой и понятный, а с активным пользованием EL станет монстроидальным даже с исходниками на руках. Но попробовать это не мешает, конечно =)

Mikhail Sukhov
Mikhail Sukhov 作者

Разница есть. Вот например с помощью EntLib (+Ecng.Cryptography) процесс шифрования выглядит следующим образом (пишу по памяти):

var publicKey = "публичный ключ".ToKey(); var privateKey = "закрытый ключ".ToKey();

var algo = CryptographyAlgorithm.Create(AlgorithmTypes.Asymmetric, publicKey, privateKey); algo.Decrupt(algo.Encrypt(data));

Если использовать голый .NET то будет код много больше.

Да, как раз вернулся через 2 года к одному классу. Забыл все сложности конфига с ObjectBuilder.

На .NET 4 перейти не могу. Причина - не все аналитические программы переведены на это FW. Если я перейду, то уже будет невозможно писать адаптеры под те прогаммы на S#.

Tauler
Tauler

А будет документация то? а то эвристика со состоянием заявки так и глючит :)

Mikhail Sukhov
Mikhail Sukhov 作者

На это неделе будет 2.4. Это отдельная версия со своими изменениями. Но фиксов - море. Причем некоторые кардинальные. Например, событийная модель. Вот сейчас все это дело тестирую. Как закончу тест, то в паблик и новость. Под 2.3 не захотел давать новость, потому что не все дофиксил.