воскресенье, 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. Такой проект трейдерам пройти мимо нельзя.

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

  1. Привет!
    А что работает быстрее? Чистый С# с твоим DDE сервером или excelевский DDE с Excel4Net?
    Очень интересно.

    ОтветитьУдалить
  2. Leonandr,

    Хороший вопрос. С одной стороны ДДЕ сервер экселя более продвинут (шутка ли, столько десятилетий писать). С другой стороны, лаги наверное незначительны... Может быть есть возможность это проверить? Я бы посмотрел бы на результаты, уж больно интересны такие решения.

    ОтветитьУдалить
  3. Здравствуйте, Михаил!

    Работа проделана впечатляющая. Помимо большого функционала, сам код сделан очень качественно (комментарии, стиль, именование).

    Прочитал все ваши посты. В одном из них вы описываете преимущества и недостатки 4х подходов к реализации торговых систем. Как недостаток реализации на C# вы приводите отсутствие индикаторов и т.п. На самом деле можно пользоваться dll-ками от WealthLab v5. У них есть триал-версия, она ставится, умирает, но их .NET сборки (dll) можно подключить к своему проекту и использовать массу готовых индикаторов. Тем более, что на странице www2.wealth-lab.com/WL5WIKI/ есть open source библиотека с кучей юзерских индикаторов. В своей программе я использую именно такое решение, получая гибкость C# и возможности Wealth-Lab. Возможно, вам понравится такая идея, тем более, что интеграция очень проста - ваши Candle можно сконвертить в их Bar-ы и вот уже весь функционал на тарелочке. Что думаете?

    Еще хотел бы спросить - будете ли вы добавлять функционал по получению данных с графиков Quik (например те же дневные свечи)?

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

    Пришли, пожалуйста, ссылку на данную библиотеку. Идея замечательная. Но, как обычно, упирается во время. Если Вы уже занимались подобным, могли бы Вы сделать пример и описание, как с этим работать. Я опубликую его в блоге (или ссылку на Ваш блог).

    А Квик имеет хранить историю? Проблема еще в том, что Квик не поддерживает экспорт по графикам (только по таблицам).

    ОтветитьУдалить
  5. Михаил,

    на самом деле Wealth-Lab – это не библиотека, а среда разарботки, создания, а также тестирования стратегий (похожа на Metastock). Ее новая версия 5 написана под .NET и позволяет писать стратегии на C#. Система позволяет торговать на рынке. Для этого там создан огромный фреймворк с массой полезных вещей: управление позициями, отрисовка графиков и т.д. и т.п. Но самое главное – расчет всех индикаторов, причем с кэшированием результатов, что позволяет добиться высокой скорости. Есть комьюнити разработчиков стратегий.

    С его использованием написал свой движок (C#, MSSQL, QPile, Quik API). Ваша разработка заинтересовала меня большей гибкостью и скоростью работы (все же обходы циклом никогда не заменят события).

    Quik не умеет хранить историю, но из него можно выгружать бары свечек заданного периода с заданной частотой. Я написал соответствующий код на QPile, он генерит таблицу с данными свечей. Сейчас эта таблица выгружается по ODBC, но было бы лучше использовать DDE.

    Любопытно, что пока писал этот код, нашел баг в QPile, который разработчики подтвердили еще полгода назад и до сих пор не пофиксили.

    У меня нет своего блога, но я бы с радостью с вами пообщался (есть масса идей как по трейдингу, так и по разработке ПО (программирование на C# - мой основной хлеб)). Будет время, напишите мне на pal[подчеркивание][ok][на]mail[точка]ru, буду ждать.

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