пятница, 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.

четверг, 28 января 2010 г.

Stock#

Все, теперь точно устаканился с названием проекта - оно будет Stock# или кратко, S# (и пусть длинное Ecng.Trading уйдет в небытие). Как раз в манере .NET, где любят называть как язык C# (F#, R# и т.д.). Теперь вот есть и S# (читать как эс шарп, а полное название Stock# как сток шарп). Как вам, язык .NET под биржу? Отхватил себе название, глаз радует. "Как корабль назовешь, так он и поплывет" (с) Врунгель.

Под это дело сразу же зарегистрировал сайт - stocksharp.com. Пока он недоступен для просмотра, но титульную страничку создам ASAP. С линками на документацию, последнюю версию, новостями (это будет данный блог) и форумом. Ах да, завел и форум. Вот его адрес - http://groups.google.ru/group/stocksharp. Теперь вопросы лучше задавать там. Хотелось бы, чтобы и другие проявляли активность. Вопросы, как правило, повторяются.

Вспоминаю сейчас тот период, когда создавал проект (первое название QuikWrapper). Естественно, я выбрал в качестве начинания программу Quik, потому она как была самая удобная для пользователей, так и остается. На днях пробовал SmartTrade. Жуть! Честное слово, я даже подумать не мог, как мы программеры не любим вас трейдеров. Убогий интерфейс, неинтуитивное управление. Единственное превосходство перед Quik - это наличие хорошего API. Для Quik его, как правило, и нет. Поэтому и существует (чуть не написал Ecng.Trading! пора привыкать) S#.

Затем, в процессе выпуска следующей версии QuikWrapper, библиотека так расширилась, что начали появляться наработки по алгоритмам (не зависящих от трейдерского ПО) и мне стало ясно направление - на Квике останавливаться нельзя. Да, Квик лучший, что есть на российском рынке. И да, не все это понимаю. Значит, будет расширяться. В .NET принято создавать иерархию из проекта. Название формируется как ИмяКомпании.Проект. И я решил переименовать QuikWrapper в Ecng.Trading. Но мне это название не понравилось изначально, спустя каких-то пару дней. Слишком сложно языком ворочать, произнося его. И вот, новое, надеюсь последнее, супер лаконичное, приятное слуху и языку; дамы и господа - S#.

среда, 20 января 2010 г.

O Stock# (Ecng.Trading)

Программная библиотека Stock# (старое название Ecng.Trading) предназначена для создания торговых роботов на платформе .NET с использованием программ Quik и SmartCOM. Скачать дистрибутив. Обсуждение ведется по адресу http://groups.google.ru/group/stocksharp.

Преимущества библиотеки:
  • Используется современная платформа .NET с мощным набором функциональности. Нет ограничения в кодировании, которые присутствуют в скриптовых языках.
  • Быстрое обработка алгоритма стратегий. Программа компилируется в машинные инструкции (что дает большой прирост в производительности). Нет синтетических секундных задержек при выполнении алгоритма. Основное ограничение практически всех встроенных языков в таких программах как WealthLab, AmiBroker и т.д.
  • Нет необходимости использовать дополнительное программное обеспечение. Библиотека полностью автономна от сторонних программ.
  • Возможность запуска нескольких сотен одновременно работающих алгоритмов по различным инструментам и тайм-фреймам (скорость зависит только от мощности компьютера, а не от ограничения внешней программы).
  • Возможность реализации скальперских стратегий, с тайм-фреймом менее секунды.

воскресенье, 17 января 2010 г.

Ecng.Trading 1.5

Обновление! Выложил обновленный архив Ecng.Trading_1.5.zip (18.01.2010 22.46 MSK)

Быстро пролетели новогодние выходные. Заметил за собой особенность – чем больше отдыхаешь, тем труднее потом начинать работать. Видимо, хорошего понемногу.

Выкладываю на всеобщее порицание очередную версию - Ecng.Trading 1.5. Качать традиционно отсюда.
Что нового:

  • Пожалуй, самое больше изменение (+нововведение) это появление полноценной документации, а не описание API, как было до этого. Документация включает абсолютно все, что умеет Ecng.Trading - как использовать, и как использовать лучше. Файл в архиве называется Ecng.Trading.chm. Плюс, к документации для наглядного изучения я сделал дополнительно два примера (к уже двум существующим). Первый – это реализация до боли знакомого алгоритма пересечения скользящих средних. Я показал, как можно создавать подобные алгоритмы с помощью Ecng.Trading. Второй пример более графический. Визуально показано, какие свечки поддерживает Ecng.Trading, и чем они отличаются.
  • В QuikTrader добавил поддержку экспорта дополнительных колонок для стандартных таблиц (Инструменты, Заявки и т.д.). Подробнее, в документации и в примере Sample.
  • Переделал структуру работы с механизмом торговых заданий – Task. Как использовать – опять же в документации.
  • Описал свое видение того, куда буду развивать проект.
  • И, конечно же, исправил ошибки.


Вот скриншоты из новых примеров:

Скользящие средние

Расширенный стакан

Свечки


Приятного роботописания!

воскресенье, 10 января 2010 г.

Excel4Net.Com - программирование на C# .NET под Excel

В поисках необычного в процессе серфинга по инету наткнулся на интересный проект: Excel4Net. Я уже писал ранее, как ведущие роботоводы разрабатывают свои прораммы в нынешнее время. И программирование под Excel меня не привело в восторг. После ознакомления с данным проектом, я решил пересмотреть свое мнение на Excel, причем в значительно лучшую сторону.

Excel - очень распространенная среда, и конкурентам (по крайней мере из российского сектора) до массовости Excel как пешком до Поднебеной. Тем не менее, повторю основные минусы Excel:
К этому стоит добавить еще то, что на Excel не так уж тривиально интегрироваться с торговой программой, что для предыдущего пункта делать вообще не нужно. Отдельно можно выделить стабильность - всего один поток, и если он зависнет, зависнут как другие скрипты, так и не будет возможности перезапустить алгоритм (а Excel еще не научился вытаскивать себя из болота за волосы как Мюнхаузен), или даже перезапустить соединение с торгующей программой.

Excel4Net позволяет как раз решить главный недостаток - интеграция. С использованием .NET у Excel появляется просто огромный потенциал в работе с другими программами. Например, библиотеку Ecng.Trading можно на раз-два-три начать использовать как раз из Excel. Это отчетливый сигнал тем, у кого торговые алгоритмы написаны на VBA, и их не устраивает стабильность и скорость. Excel4Net позволяет переписать ряд алгоритмов со скриптов на C# (или VB.NET, кому что нравится), что увеличит скорость в разы. Я переписал один свой макрос на C#, и у него прирост в производительности был равен 1600%. В 16 раз!. Вот здесь показано, как реализовать формулу Блэка-Шоулза.

После выпуска версии Ecng.Trading 1.5 (в текущий момент заканчиваю документацию, которой теперь будет много), обязательно сделаю что-нибудь торговое под Excel4Net. Такой проект трейдерам пройти мимо нельзя.