Выложил новую версию, теперь уже под новым названием. Большое количество изменений и нововведений, что сделало это релиз самым долгим. Скачать дистрибутив. И так:
1. QuikTrader теперь поддерживает TRANS2QUIK 1.1. Для тех, кто в не в курсе - это такая версия, которая умеет мониторить состояние заявки и сделок по ней. Включить включил, а вот доступа из вне не дал. Причина в том, что тесты показали точно такую же скорость отклика, что и DDE (подозреваю, что схожий механизм). Соответственно, чтобы не поддерживать две режима, оставил включенным пока только старый. Багов меньше, возможностей больше.
2. Переименовал класс Task в Strategy как четко определяющее свое предназначение. Так же сделал его более умным. Сам набирает сделки, сам определяет позицию, проскальзывание (подробнее, пункт 6), прибыль-убыток (пункт 7). Разве что не кушает сам.
3. В документацию добавил топик, описывающий как из робота отслеживать состояние соединения и производить переподключение в случае потери соединения с Квиком. А также, добавил класс ReConnectionManager, который умеет автоматизировать работу с соединением. Пример использования в документации и примере Sample.
4. Вынес всю логику работы со свечками в отдельный класс CandleManager.
5. Добавил класс SyncTrader (и аналог для свечек - SyncCandleManager). Класс нужен для предотвращения ошибок меж потокового взаимодействия с визуальными контролами WPF (графическая библиотека в .NET). Рекомендуется при отсутствии большого опыта в создании графических программ на .NET. Подробнее, в документации.
6. Добавил класс BaseSlippageManager (это абстрактный класс, а его реализации - TraderSlippageManager, StrategySlippageManager, SecuritySlippageManager, AccountSlippageManager). Это, как нетрудно догадаться из названия, механизм для подсчета проскальзывания. Пример использования в документации и примере SampleSMA.
7. Так же, как и для проскальзывания из пункта 6, добавил менеджеров P&L (прибыли-убытка): TraderPnLManager, StrategyPnLManager, SecurityPnLManager, AccountPnLManager.
8. Добавил событие ITrader.SecuritiesChanged, сигнализирующее об изменении параметров инструментов.
9. Добавил событие ITrader.QuotesChanged, сигнализирующее об изменении стакана. Нужен для мониторинга низко ликвидных инструментов.
10. В самый последний момент добавил класс MarketDepth - стакан по русски. Прислали по почте, я его отрефакторил и вот он в составе библиотеки.
11. А также ряд других важных архитектурных изменений для следующего релиза, который обещает превратить Stock# в версию 2.0.
Подписаться на:
Комментарии к сообщению (Atom)
Здравствуйте Михаил,
ОтветитьУдалитьЗанялся изучением Си шарп специально для написания торгового робота. Скажите сколько времени ушло на написание у вас? Ваша МТС занимается высокочастотным скальпингом?
С уважение,
Кирилл
Добрый день, Cyril!
ОтветитьУдалитьЯ не разрабатываю публично МТС. Я предоставляю бесплатную библиотеку, упрощающую разработку МТС.
Добрый день, версия 1.6 при подключени к Qiuk пишет сообщение:
ОтветитьУдалитьКод ошибки Failed Сообщение Connection failed at step 3, error message was \"Current version of library is not supported by QUIK.\
Что это может быть ? в 1.5 не ошибок не наблюдается.
Ed,
ОтветитьУдалитьЛучше это на форуме обсудить... Как вариант - обновить терминал. Какая у Вас версия терминала?
Версия терминала 5.14.0.93.
ОтветитьУдалитьВопрос, а исходники библиотек Ecng я так понимаю вы не предоставляете ? Хотелось бы на них взглянуть.
Ed,
ОтветитьУдалитьПоследняя версия 5.16. Насчет исходников - смотря для каких целей.
Для своих личных(не коммерческих) потребностей, ведение статистической и аналитической зависимости, подключение хранилища для внешней системы.
ОтветитьУдалитьEd,
ОтветитьУдалитьМожно это обсудить. В данном случае, что мешает реализовать Вам данную зависимость? Или подключить хранилище для внешней системы?
Сообственно, одна из причин это черный ящик, хотелось бы видеть четкое понимание работы функционала библиотеки. Второе это расширение библиотеки для своих методов, наследуя уже существующие.
ОтветитьУдалить1. Черный ящик. И квик черный ящик, и биржа черный ящик. Скрывает реализацию, сосредотачивает только на том, что действительно нужно. В этом есть что-то плохое? Если Вы думаете, что мне интересно встраивать вредоносный код (если это вообще возможно с такими библиотеками) в сомнительные по доходности стратегии пользователей, подрывая тем самым свой авторитет и сводя на нет многомесячный результат работы, то Вы ошибаетесь.
ОтветитьУдалить2. Расширяйте на здоровье. Очень много что в библиотеке имеет виртуальные методы - специально для таких случаем. Если будут вопросы, как сделать то или другое, милости прошу на форум.
По 1 пункту,я не акцентировал, что каким либо образом вы могли внедрить что то вредоносное. Обычная практика, все открытие библиотеки лежат на codeplex, как собранные dll, так и исходники. Здесь был акцентирован лишь этот момент. Конечно, это право каждого выкладывать свой труд или нет, решать автору.
ОтветитьУдалитьПо 2 пункту, собранные dll весьма ограничивают разработку собственных методов:
а) т.к в готовые методы нельзя сделать свою доработку.
б) нет ясности в реализации в тех или иных случаях, нельзя проанализировать код.
Вообщем это основные причины.
S# - это бесплатная, но не открытая библиотека.
ОтветитьУдалитьа. Вот это отчасти и тормозит в принятии решения об открытом коде. Каждый начнет модернизировать код и в итоге полезные мысли просто не дойдут до S#.
b. Я удивлен. Обычно бывает наоборот, есть код, нет документации и автора. И приходится разбираться самому. Тут и автор, и документация. Неужели мало?
Михаил, думаю, дискуссию по этому поводу продолжать не стоит, т.к в этом случае прав всегда автор, и все права принадлежат только автору. У меня был простой вопрос, можно или нельзя.
ОтветитьУдалитьEd, надеюсь я на него ответил. Будут вопросы по библиотеке - пишите в форум.
ОтветитьУдалитьЗдравствуйте. К сожалению на форуме задаю вопрос, но ветка не создается, поэтому задам его тут.
ОтветитьУдалитьСделал робота. На одном квике он корректно работает без ошибок и нареканий, ставлю к другому брокеру-при попытке открыть ордер выдает ошибку, что невозможно открыть сделку, т.к. не правильно указан код клиента(XXX)
Каким образом можно самому задать код клиента, который будет передаваться квику?
Я разблокировал Ваше сообщение и ответил... Что-то не нравиться Гуглу сообщения с Вашего почтового ящика. Ругается постоянно о спаме.
ОтветитьУдалитьДоброго Вам, Михаил!
ОтветитьУдалитьИсходники я так понимаю, под семью замками? :)