Сайт проекта располагается по адресу StockSharp.Com
Вот она - долгожданная версия 2.0. Сразу оговорка, пока это beta версия. Релиз будет после фидбеков о стабильности и корректности работы.
Прежде чем сказать, что появилось новое, хочу процитировать словами Нейла Армстронга новый релиз "Это один маленький шаг для человека и гигантский прыжок для человечества". В самом релизе появилось только одно важное, но бесспорно очень полезное нововведение - поддержка Smart. Это сделало Stock# тем, чем он разрабатывался с самого начала - платформо независимой библиотекой для разработки торговых программ (роботы, МТС, помощники - всего). Зачем все это нужно:
- Увеличивает комьюнити. Я думаю, не секрет, что пользователей на Quik в разы больше, чем на Smart. Тем не менее, Smart технически продвинутый. Итого, обмен знаниями привнесет плюсы обеим сторонам.
- Миграция. Ни Quik, ни Smart не идеален (идеала нет вообще). Жизнь - она ведь не стоит на месте. Поэтому и возникают потребности переходить с одной платформы на другую. Если это делать на Stock#, то переход будет менее затратным. Фактически, если все сделано правильно, то заменить в нескольких местах код робота. Если делать не на Stock#, то все будет, конечно же, значительно затруднительнее.
- Для тех, кто разрабатывает (и продает) роботов такая платформа расширяет клиентуру.
- Smart - это не последнее. Впереди планы и на другие платформы, что еще сильнее расширит предыдущие пункты.
- Добавил свойство ITrader.Portfolios. Данное свойство пока не поддерживается QuikTrader и сделано в первую очередь для SmartTrader.
- Теперь нет такого события как QuikTrader.DdeError. Вместо него есть ITrader.ProcessDataError. Я вынес в базовый интерфейс данное событие для унификации - в любом шлюзе есть ошибки.
- Опять же, для унификации добавил в ITrader методы StartExport и StopExport. Для QuikTrader оно вызывает запуск экспорта DDE. Для SmartTrader - подписка на COM события.
- Появилось событие ITrader.NewDataExported. Оно позволяет узнать, продолжает ли работать экспорт (если это Quik - то DDE экспорт, если Smart - то COM события). Кстати, Smart довольно часто любит тихо умирать, не говоря об этом никому. Данное событие позволяет реагировать программе (или человеку) на такую особенную ситуацию.
- Чтобы проще управлять событием ITrader.NewDataExported, ReConnectionManager может самостоятельно отслеживать ситуацию подвисания экспорта. Для этого у него есть метод SetExportTimeOut, где задается максимально допустимое время простоя. Если в течении него программе не придут новые значения, то ReConnectionManager расценивает такую ситуацию однозначно как зависания экспорта, и перезапускает экспорт через ITrader.ReStartExport.
- Добавил событие ITrader.Connected. Именно после данного события можно начинать работать с шлюзом (запускать экспорт, выставлять заявки и т.д.).
- Добавил событие ITrader.Disconnected. Оно нужно для ReConnectionManager, чтобы сигнализировать о корректном разрыве подключения, и предотвратить ненужное переподключение.
- Добавил событие ReConnectionManager.AttemptError. Оно позволяет узнать ошибку, которая произошла при неуспешной попытке восстановить соединение.
- Добавил метод ITrager.GetOrders(string account) для получения списка заявок по конкретному торговому счету.
- Добавил в QuikTrader поддержку одновременной работы с несколькими Quik. Я показал это в примере SampleFewQuik и в документации.
- Реализовывая предыдущий пункт, я сделал возможность задавать путь к библиотеке TRANS2QUIK.dll (полезно, когда есть несколько роботов). Если при создании QuikTrader по указанному пути не была найдена данная DLL, то она создается автоматически.
- Разрабатывая SmartTrader, я добавил свойство Security.Id. Для SmartTrader оно присылается SmartCOM, для QuikTrader оно генерируется из кода инструмента и его класса.
- Делая предыдущий релиз 1.8, я ввел понятие генерация идентификаторов транзакций. Я чуть модернизировал данный механизм. Теперь есть базовый класс TransactionIdGenerator. По умолчанию используется его реализация MillisecondTransactionIdGenerator, которое позволяет генерировать уникальные идентификаторы, особенно когда идет работа с несколькими Quik.
- С появлением SmartTrader и возможностью работать с несколькими Quik, появился класс MultiTrader. Мега удобная вещь. Позволяет работать с несколькими шлюзами как с одним единым подключением. Это позволяет реализовать в роботе концепцию, когда ему не нужно определять, в какую систему он отсылает заявку. Я показался в примере SampleQuikSmart и в документации как работать с данным классом.
- Добавил свойство Strategy.Name. Для удобства.
- Order.TransactionId теперь long, что устраняет ошибку с переполнением номера транзакции в Quik.
- Добавил свойство QuikTrader.MarketDepthDelimiter для изменения символа разделителя в заголовке окна стакана. По умолчанию, используется '-', но оно не всегда подходит.
- Реорганизовал конструкторы QuikTrader. Теперь часть параметров задается через соответствующие свойства.
- Ввел сущность Exchange. Показывает информацию по бирже (название + время работы).
- Расширил класс Security свойствами Trader и Exchange. Первое позволяет узнать, из какой торговой системы была получена информация по инструменту, второе - к какой бирже принадлежит инструмент.
- Добавил использование amCharts в примере работа с историческими данными SampleSmartCandles. До этого использовался Visifire. Разница на лицо (первая картинка - Visifire, вторая amCharts):
На сегодня все.
Огромное спасибо!
ОтветитьУдалитьПодсел на wealth lab, думал как его к кваику прикручивать - и тут такой подарок
Пятерка?
ОтветитьУдалитьСпасибо! Тоже присматриваюсь к Смарту.
ОтветитьУдалитьОтличная новость.
ОтветитьУдалитьОтличная новость
ОтветитьУдалить