пятница, 29 января 2010 г.

Stock# 1.6

Выложил новую версию, теперь уже под новым названием. Большое количество изменений и нововведений, что сделало это релиз самым долгим. Скачать дистрибутив. И так:

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.

17 комментариев:

  1. Здравствуйте Михаил,
    Занялся изучением Си шарп специально для написания торгового робота. Скажите сколько времени ушло на написание у вас? Ваша МТС занимается высокочастотным скальпингом?
    С уважение,
    Кирилл

    ОтветитьУдалить
  2. Добрый день, Cyril!

    Я не разрабатываю публично МТС. Я предоставляю бесплатную библиотеку, упрощающую разработку МТС.

    ОтветитьУдалить
  3. Добрый день, версия 1.6 при подключени к Qiuk пишет сообщение:
    Код ошибки Failed Сообщение Connection failed at step 3, error message was \"Current version of library is not supported by QUIK.\
    Что это может быть ? в 1.5 не ошибок не наблюдается.

    ОтветитьУдалить
  4. Ed,

    Лучше это на форуме обсудить... Как вариант - обновить терминал. Какая у Вас версия терминала?

    ОтветитьУдалить
  5. Версия терминала 5.14.0.93.
    Вопрос, а исходники библиотек Ecng я так понимаю вы не предоставляете ? Хотелось бы на них взглянуть.

    ОтветитьУдалить
  6. Ed,

    Последняя версия 5.16. Насчет исходников - смотря для каких целей.

    ОтветитьУдалить
  7. Для своих личных(не коммерческих) потребностей, ведение статистической и аналитической зависимости, подключение хранилища для внешней системы.

    ОтветитьУдалить
  8. Ed,

    Можно это обсудить. В данном случае, что мешает реализовать Вам данную зависимость? Или подключить хранилище для внешней системы?

    ОтветитьУдалить
  9. Сообственно, одна из причин это черный ящик, хотелось бы видеть четкое понимание работы функционала библиотеки. Второе это расширение библиотеки для своих методов, наследуя уже существующие.

    ОтветитьУдалить
  10. 1. Черный ящик. И квик черный ящик, и биржа черный ящик. Скрывает реализацию, сосредотачивает только на том, что действительно нужно. В этом есть что-то плохое? Если Вы думаете, что мне интересно встраивать вредоносный код (если это вообще возможно с такими библиотеками) в сомнительные по доходности стратегии пользователей, подрывая тем самым свой авторитет и сводя на нет многомесячный результат работы, то Вы ошибаетесь.

    2. Расширяйте на здоровье. Очень много что в библиотеке имеет виртуальные методы - специально для таких случаем. Если будут вопросы, как сделать то или другое, милости прошу на форум.

    ОтветитьУдалить
  11. По 1 пункту,я не акцентировал, что каким либо образом вы могли внедрить что то вредоносное. Обычная практика, все открытие библиотеки лежат на codeplex, как собранные dll, так и исходники. Здесь был акцентирован лишь этот момент. Конечно, это право каждого выкладывать свой труд или нет, решать автору.
    По 2 пункту, собранные dll весьма ограничивают разработку собственных методов:
    а) т.к в готовые методы нельзя сделать свою доработку.
    б) нет ясности в реализации в тех или иных случаях, нельзя проанализировать код.
    Вообщем это основные причины.

    ОтветитьУдалить
  12. S# - это бесплатная, но не открытая библиотека.

    а. Вот это отчасти и тормозит в принятии решения об открытом коде. Каждый начнет модернизировать код и в итоге полезные мысли просто не дойдут до S#.

    b. Я удивлен. Обычно бывает наоборот, есть код, нет документации и автора. И приходится разбираться самому. Тут и автор, и документация. Неужели мало?

    ОтветитьУдалить
  13. Михаил, думаю, дискуссию по этому поводу продолжать не стоит, т.к в этом случае прав всегда автор, и все права принадлежат только автору. У меня был простой вопрос, можно или нельзя.

    ОтветитьУдалить
  14. Ed, надеюсь я на него ответил. Будут вопросы по библиотеке - пишите в форум.

    ОтветитьУдалить
  15. Здравствуйте. К сожалению на форуме задаю вопрос, но ветка не создается, поэтому задам его тут.

    Сделал робота. На одном квике он корректно работает без ошибок и нареканий, ставлю к другому брокеру-при попытке открыть ордер выдает ошибку, что невозможно открыть сделку, т.к. не правильно указан код клиента(XXX)
    Каким образом можно самому задать код клиента, который будет передаваться квику?

    ОтветитьУдалить
  16. Я разблокировал Ваше сообщение и ответил... Что-то не нравиться Гуглу сообщения с Вашего почтового ящика. Ругается постоянно о спаме.

    ОтветитьУдалить
  17. Доброго Вам, Михаил!
    Исходники я так понимаю, под семью замками? :)

    ОтветитьУдалить