Показаны сообщения с ярлыком МТС. Показать все сообщения
Показаны сообщения с ярлыком МТС. Показать все сообщения

вторник, 21 сентября 2010 г.

Quik2Quant 1.0 beta release!

Полнофункциональный адаптер, обеспечивающий абсолютную интеграцию ИТС QUIK и последней версии передовой программы квантового анализа OpenQuant 2.9.7. Такая связка позволяет обеспечить полный комплекс решений на фондовом рынке, включая, но не ограничиваясь:
  • тестирование торговых стратегий на исторических данных;
  • реализацию любых в том числе самых изощренных торговых стратегий;
  • мгновенное получение любой необходимой информации из ИТС QUIK;
  • накопление и хранение информации о состоянии стаканов, котировок и сделок по множеству инструментов в режиме реального времени;
  • исполнение ваших стратегий в режиме реального времени;
  • отсутствие задержек в выставлении/снятии заявок;
  • контроль текущей позиции, изменения позиции, частичного исполнения, снятия заявки, качества исполнения;
  • … 
Интеграция OpenQuant и QUIK основана на событийной модели рынка и обеспечивает возможности быстрого создания и изменения торговых роботов, работу на любом таймфрейме и инструменте.
Решение, в настоящее время, не имеет аналогов на российском рынке и предоставляет неоспоримые преимущества создателям механических торговых систем высокого уровня.

Главное окно программы выглядит следующим образом:

В этом окне мы можем получить любую необходимую рыночую информацию из терминала QUIK. Однако самую большую ценность представляют иные возможности OpenQuant, которые делают его практически универсальным продуктом для создания роботов. Итак
1. График сделок по SRZ0 (1min) - встроенная стратегия SMA Crossover:

2. Ордера по стратегии и результаты их исполнения:

3. Контроль состояния счета в режиме он-лайн:

И это еще малая толика всех возможностей OpenQuant и QUIK. Более подробно с программой и предлагаемыми решениями можно ознакомиться тут & там
Посмотреть обучающее видео, чтобы узнать еще больше можно тут
Поинтересоваться как начать использовать продукт можно здесь.

понедельник, 12 июля 2010 г.

Язык программирования для роботов

Прислали мне ссылки - http://www.quik.ru/forum/expert/57093/57093/ и http://quik.ru/forum/expert/57323/57323/. Прочитал, местами было интересно.

Я уже писал до этого о целесообразности в роботах вообще.
Теперь напишу, какой язык бы я выбрал вообще.

Понятно, что для себя я этот вопрос решил давно. Но для тех, кто только начинает разработку роботов, могу дать совет:

  1. Если давно используете какую-то систему Тех Анализа, то продолжайте писать на том языке, что там присутствует.
  2. Если решили написать робота в виде отдельной программы, выбирайте тот, что популярнее для алго трейдинга. А понять, какой именно язык самый-самый на российском рынке очень просто - по поддержке от вендоров. Возьмем китов: Quik, ИТ Инвест, Алор, Альфа Директ и NetInvestor:

    • Quik - для TRANS2QUIK.dll имеет два примера: один на C#, другой на C++.
    • ИТ Инвест - для SmartCOM имеет один пример на C#, документация так же написана с применением этого языка.
    • Алор - для Алор Трейд с COM объектами имеет один пример на C++, другой на C#.
    • Альфа Директ - для API имеет один пример на C#, один на Dephi, один на C++. Документация на C++, C#, VB, Delphi.
    • NetInvestor - для NIAPI имеет два примера: один на C#, другой на C++. Руководство пользователя - на C#.

    Итого (один бал за документацию, один за пример):

    • C# - 8 = 1 + 2 + 1 + 2 + 2
    • C++ - 5 = 1 + 1 + 2 + 1
    • Dephi - 2 = 2
    • VB - 1


Теперь о быстроте C++, которая была упомянута в тех ссылках. Как правильно заметили в той переписке, быстрота необходима для High Frequency Trading. Ни один из выше приведенных вендоров не дает такую пропускную способность, которые бы удовлетворяла подобному типу роботостроения. Дополнительно, это масштаб крупных игроков, которые могут позволить не только прямой доступ к бирже, но так же хостинг своих серверов на биржевых площадках. Для частников, в скорости С++ не даст никаких преимуществ. Минусов, особенной не для программистов (а трейдеры не занимаются программирование углубленно), очень много. И сложность языка, и чувствительность к ошибкам, и сложность в отладке и поиске ошибок... Море. Я писал на этом языке. Ничуть не огорчен, что ушел от разработки на С++. А как показывает тенденция софтверных гигантов, от C++ отказываются все больше и больше компаний.

К чему ведет популярность? Популярность ведет к тому, что данный язык становиться основным для разработки, под него увеличивается комьюнити, появляются решения сторонних разработчиков... Вообщем, бенефитов много.

А теперь вопрос, как же на западе? А на западе все давно решено: WealthLab, QuantDevelop, OpenQuant, RightEdge - все они поддерживают C#.

Остались вопросы с тем, какой язык необходимо выбирать?

понедельник, 29 марта 2010 г.

Для чего же нужен робот

Прочитав (и отписав, куда ж я без своего мнения) топики http://www.stockportal.ru/forum/index.php?showtopic=12851 и http://quoteforum.ru/index.php?showtopic=4190 (последний выглядит как жуткий стеб, так что воспринимайте данный топик с некой щепоткой скептицизма), я пришел в выводу, что роботы в торговле на российском рынке еще долгое время не смогут конкурировать с людьми.

И так, основные доводы и причины, почему трейдер хочет перевести или уже перевел свою торговлю на автоматизированную:

  1. Отсутствие эмоционального напряжения.
  2. Возможность освободить себя от торговли, отдав всю работу роботу.
  3. Увеличить доход путем увеличения количества сделок.
  4. Об этом говорят многие, уже есть и компании предлагающие свою услуги по автоматизации. Значит это популярно, а популярность не растет на пустом месте.

Видите уже себя? Ага, а теперь вот мое мнение на эти четыре пункта - ПОЛНАЯ БРЕХНЯ:

  1. Тоесть, себе вы доверить не можете торговлю, а роботу да? С учетом того, что робот торгует или с ошибками (если самописный), или с непонятной порой логикой (если купленный, особенно когда он разработан не профессиональными командами, а форумными завсегдатаями). Робот, чем у него сложнее логика и чем он быстродейственней (а в другом случае и создавать нет причин программу), требует все больше и больше внимания. И я сильно сомневаюсь, что видя, как робот начинает медленно сливать, вы не потянитесь в заветной кнопке Стоп.

  2. Прочитали первый пункт? Ну и как, готовы освободить себя, уйдя, допустим в магазин за покупками, вместо сидения за монитором? Это в лучшем случае, если при случившемся изменении на рынке робот просто выкинет ошибку и прекратит свою работу. В худшем - продолжит торговать дальше. И такое он вам наторгует...

  3. Делая 10 сделок за день, я получаю X денег. Делая 10 * 100 сделок в день я буду получать в 1000 раз больше. Логично с математической точки зрения. А вот в реальности или заплатите еще и за комиссию, или получите те же X денег.

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

    Допустим, вы успешно пройдете путь создания своего робота, и в итоге получите ожидаемое. ВНИМАНИЕ, это еще не значит, что данный продукт принесет автоматически профит. Людям из компаний-разработчиков не интересны ваши гениальные стратегии, не приносящие ничего, кроме убытков. Им интересны ваш деньги, которыми вы будете оплачивать их жизнь.

    Очень, очень сложно грамотно поставить процесс, и получить действительно полезную вещь. Вот вам ссылка на мое обсуждение - http://forex.kbpauk.ru/showflat.php/Cat/0/Number/289931/an/0/page/0#Post289931 (читать с поста Bell-а, к слову. "нанять программеров" забавная тема).

    Если Вы захотели купить готового робота, то вот вам простое замечание. Стоящую стратегию никто вам продавать не будет (возможно, есть и исключения, но я их не встречал). Это если действительно ноу-хау, которое приносит деньги. А если и будут продавать, то это или ненужная разработка с сомнительным профитом, или обычная вспомогательная утилита, например, как привод. Кстати, последний может быть и полезен, но только это нисколько не робот, а лишь удобное расширение вашего терминала.

А теперь мое имхо, для чего нужно переводить торговлю на автоматизацию:

  1. Торговую стратегию невозможно реализовать ручным трейдингом. Например, высокочастотный трейдинг, сложный аналитический процесс и т.д.

  2. Минимизировать человеческий фактор. Например, когда идет с высокой частотой рутинная работа с копированием и вставкой параметров из одной программы в другую программу (например, одна вычисляет по формулам значения, другая по этим значениям и рынку анализирует, что сейчас необходимо делать).

Как видно из моих причин, все они исходят от одного слова - «Надо». В отличие от тех самых первых причин, ведущих свое происхождение от слова «Хочу». Уже видна разница: «Хочу» и «Надо».

Итог. Когда вы почувствовали, что вот оно, желание автоматизировать, в первую очередь задайте себе вопрос, а действительно ли оно «Необходимо», или же вам просто «Хочется» попробовать, не зная четко преимуществ в результате, как и за счет чего они будут достигнуты.

суббота, 12 декабря 2009 г.

Ecng.Trading 1.4

Обновление! Выложил новую версию 1.4.1

В новой версии (скачивать отсюда) появились стоп-заявки. Вернее, они были и до этого, но не существовала их полная поддержка: отсутствовал функционал по экспорту через DDE, не было возможности отменять и снимать стоп-заявки. Теперь все это есть:

1. Стоп-заявки регистрируются, изменяются и снимаются через те же методы (здесь и далее будет идти речь об интерфейсе ITrader), что и обычные: RegisterOrder, ReRegisterOrder и CancelOrder.
2. Чтобы получить все стоп-заявки, можно вызвать свойство StopOrders. В принципе, можно это сделать и через свойство Orders, где хранятся как обычные, так и стоп-заявки. Но в этом случае придется отфильтровывать самостоятельно.
3. События NewStopOrders и ChangedStopOrders вызываются при появлении новых стоп-заявок, или когда они изменяются (активизируются, снимаются).
4. Метод GetDerivedOrder позволяет получить заявку, которая была создана стоп-заявкой (вызывать можно только для тех стоп-заявок, для которых Order.DerivedOrderId не равен null). Производная заявка появляется в системе тогда, когда активизируется стоп. Метод полезен тогда, когда необходимо узнать, какие из сделок были созданы в рамках стоп-заявки. Напрямую это узнать невозможно, так как стоп-заявки не существуют физически на биржах, и есть только связь между обычной заявкой и сделкой.

Традиционно, скриншоты с изменениями DDE (коснулось не только таблицы стоп-заявок, но и обычных):



Обновленный info.wnd файл лежит в архиве.

Как создавать и работать со стоп-заявками, я показал с своем примере, который расширил функционально:



Изменения коснулись и алгоритма котирования, который появился в версии 1.3 под названием MarketOrderRegistry. Идея мне понравилась, а вот реализация нет. Да так, что хотелось вырвать из блога пост и бросить его в печку. Что не понравилось и что переделал:

1. Название MarketOrderRegistry не отражает саму идею котирование. Поэтому теперь класс называется QuotingAlgo.
2. Котирование происходило только в одном режиме - рыночная цена. Теперь их четыре: по рыночной цене (причем эта опция так же разбивается на три под-опции), по последней сделке, по лучше цене, по лучшему объему. За подробностями в документацию по QuotingTypes.
3. Не была сделана парадигма торговых заданий, которую я придерживаюсь с самого начала. Теперь все задания котирования выделены отдельным классом QuotingTask. И этих самых тасков (=заданий) можно создавать неограниченное количество.

понедельник, 30 ноября 2009 г.

Ecng.Trading 1.3

Выложил новую версию Ecng.Trading v1.3. Скачивать отсюда. Теперь по этой ссылке я буду выкладывать все новые релизы.

В новой версии я добавил два, на мой взгляд, главных изменения.

Первое касается того, как экспортировать произвольные таблицы из Квика. В QuikTrader появилось событие ProcessDdeData. Данное событие вызывается тогда, когда Квик послал DDE данные, которые QuikTrader не умеет обрабатывать. В качестве демонстрации я добавил в свое приложением-пример отображение данных по портфелю. Сначала я настроил Квик, добавив в него соответствующую таблицу:



Обновленные info.wld файл идет вместе с архивом.

Затем, добавил в него код обработки и отображения данных:

_trader.ProcessDdeData += (name, rows) =>
{
// узнаем, что пришедшие данные отвечают за портфель
if (string.Compare(name, "portfolio", true) == 0)
{
foreach (var row in rows)
{
var client = (string)row[0];
var portfolio = _portfolioWindow.Portfolios.FirstOrDefault(p => p.Client == client);

if (portfolio == null)
{
portfolio = new Portfolio { Client = client };
_portfolioWindow.Portfolios.Add(portfolio);
}

portfolio.Shorts = (double)row[1];
portfolio.Longs = (double)row[2];
portfolio.Collateral = (double)row[3];
portfolio.Margin = (double)row[4];
portfolio.Money = (double)row[5];
portfolio.PnL = (double)row[6];
}
}
};

Так как QuikTrader уже содержит методы по запуску и остановке DDE экспорта (StartDde и StopDde), то для удобства я перегрузил этим методы, чтобы они могли принимать имя экспортируемой таблицы (имя отображается в заголовке таблицы в Квике). Это позволит не только управлять своим потоком данных, но еще и запускать и останавливать его. Так что, если кто-то еще разрабатывает роботов под Excel, руководствуясь тем, что в него можно передавать данные как угодно, знайте, теперь это можно делать и в Ecng.Trading. Ну, а про преимущества разработки роботов на C# по сравнению с Excel я уже писал здесь.

Второе изменение знаковое. Наконец-то, в Ecng.Trading появился первый торговый алгоритм - котирование заявок. Например, необходимо срочно закрыть позицию, продав или купив по рынку (при минимуме потере профита). При высоколиквидном инструменте посланная из Квика или робота заявка может дойти до рынка уже "неактуальной" (в принципе, можно выставлять и из Квика рыночную заявку, но она работает не на всех биржах). Чтобы решить эту проблему, я написал класс MarketOrderRegistry, в который добавляется заявка. Заявка может быть и как уже ранее зарегистрированная, так и "пустая" (только что созданная и еще не выпущенная на биржу). И уже этот класс двигает эту заявку в стакане так, чтобы продать ее по выгодной рыночной цене. Рыночная цена опирается на текущий BestBid и BestAsk инструмента. Если же задана MarketDelta (передается в метод AddOrder), то цена заявки будет высчитываться как смещение цены последней сделки на эту самую MarketDelta.

Другое применения MarketOrderRegistry - это скальперская стратегия. Класс может сам создавать заявки и контролировать их в стакане.

Сам по себе класс MarketOrderRegistry построен на основе методов из класса TraderHelper:

1. GuarantyCancelOrder - гарантированно отменить заявку. В цикле посылает команду CancelOrder до тех пор, пока заявка не снимется (или не исполниться, если робот не успел снять).
2. ReRegisterOrder - перерегистрировать заявку. Удобен тем, что умеет подстраиваться под особенности биржи. Например, FORTS умеет изменять заявки одной транзакцией. Тогда в метод нужно передавать параметр isForts равный true. Если биржа не поддерживает изменения заявки одной транзакцией, то метод последовательно сначала снимает заявку через GuarantyCancelOrder, а затем регистрирует новую.

В принципе, можно реализовать своего собственного котировщика, вызывая методы TraderHelper. Как я уже упоминал, для той же скальперской стратегии. Сам по себе MarketOrderRegistry не смотрит на то, действительно ли нужно переставлять заявку. Он лишь старается выставить ее на край спреда. Поэтому, низкоуровневый класс TraderHelper для тех, кто реализует скальпинг, будет более полезен, чем сам MarketOrderRegistry. Используя TraderHelper можно написать логику лучше заявки (например, основываясь на ценовом или количественном объеме впереди в стакане).

среда, 18 ноября 2009 г.

Преимущества и недостатки разработки торговых роботов на разных платформах

Меня часто спрашивают, на чем лучше разрабатывать свое собственное МТС, какой язык программирования выбрать или чем моя библиотека Ecng.Trading отличается от других решений. Постараюсь ответить в этом, не побоюсь этого слова, опусе.

На данный момент можно выделить следующие группы ПО, где разрабатываются МТС:
1. Средствами внутреннего языка торгующей программы. Например, Quik и его QPILE. Преимущество такого такого подхода в том, что разработчики самой программы стараются максимально расширить свой внутренний язык, добавляя в него новые функции. Написанные скрипты получают данные значительно быстрее, нежели их получать из внешней программы (хотя это довольно спорное преимущество, потому как если написан алгоритм, который критично завязан на скорость исполнения, то такой робот лучше выносить в отдельное приложение, запускать его на сервере, и сервер подключать к торговому протоколу напрямую. Иначе и тормоза в работе, и проскальзование, и лосс). К недостаткам же можно отнести то, что скрипты работают не так быстро. Это и от того, что торговая система отдает преимущественно свои ресурсы своей основой задаче – торговле, и от того, что скриптовый язык разрабатывается под универсальные решения. А универсальность в ИТ мире редко когда идет рядом со скоростью.
2. Excel. Это просто мега система. По моему личному наблюдению, решения на Excel встречается практически во всех отраслях. Тут и бухгалтерия, и учет, и вычисление простых формул. Везде пробрался Excel, так что в инвестиционном бизнесе он не стоит особняком. Преимущество его использования кроется в банальном – на нем легко начать. Сравнительно простое создание формул, масса примеров, простой внутренний язык VBA – и вот уже на компьютере запущено некое решение на Excel. Минусы у данного подхода такие же как и у предыдущего пункта. К этому стоит добавить еще то, что на Excel не так уж тривиально интегрироваться с торговой программой, что для предыдущего пункта делать вообще не нужно. Отдельно можно выделить стабильность - всего один поток, и если он зависнет, зависнут как другие скрипты, так и не будет возможности перезапустить алгоритм (а Excel еще не научился вытаскивать себя из болота за волосы как Мюнхаузен), или даже перезапустить соединение с торгующей программой.
3. Аналитические программы (AmiBroker, WealthLab, MetaStock). Сами торговать не умеют, поэтому необходим некий адаптер подключения к торгующим программам (пункт 1). Преимущества и недостатки такие же как и у пункта 1 (я бы даже сказал, эти два подхода очень близки друг к другу). Дополнительным преимуществом является то, что аналитическая программа предоставляет для своего скрипта более богатый функционал. Плюс есть возможность подключать исторические данные для тестирования стратегий. Минусом является то, что, как и Excel, необходимо подключать к торговым системам, что еще более снижает производительность по сравнению с внутренним языком торгующей программы. И, как правило, нет возможности отследить потерю соединения.
4. Языки программирования (C#, VB, Java, Delphi). Основным плюсом такого подхода является, конечно же, скорость работы системы. Можно оптимизировать как сам алгоритм, использую любой подход, и сами формулы (кстати, формулы в большинстве случаев придется писать с нуля, потому что даже такая распространенная формула как скользящая средняя не будет присутствовать в языке; с другой стороны реализацию формул можно найти в Интернете, где можно найти и более сложные математические формулы, которые вряд ли будут присутствовать в аналитической системе), подстроив их работу под алгоритм, и соединение с торгующей программой. Особо критичные по скорости алгоритмы можно подключать к биржам напрямую, что дает преимущество в скорости отправки заявок и получения необходимой информации. Минусом является то, что из всех вышеперечисленных пунктов данный подход является самым сложным. Для начинающих в программировании я советую его использовать, когда уже есть готовая система, и ее хочется сделать стабильнее и производительнее. Но, еще раз предупреждаю, пройдет немало времени, прежде чем можно будет увидеть хороший результам (есть мнение, что можно этот самый хороший результат и вообще не увидеть – все зависит от знаний в программировании).

На фоне этих четырех пунктов моя библиотека Ecng.Trading относиться к пункту 4. Это именно библиотека для программирования под .NET (платформа содержит в себе языки C#, VB, C++, так что писать можно на любом из них). Преимущество и недостатки у нее точно такие, как и у данного пункта. Поэтому, основной целевой аудиторией при разработке библиотеки я сделал на людей, знакомых с программировании (трейдеров или программистов). Лично я программирую на языке C#, так как это самый перспективный и функциональный язык. Вот ссылки, которые я могу привести, чтобы начать программировать роботов с помощью Ecng.Trading:
1. Visual Studio – средство разработки, где пишется сама программа. Скачивать отсюда.
2. Электронный учебник по языку C# - отсюда.
3. Руководство использования Ecng.Trading - весь мой блог.

воскресенье, 15 ноября 2009 г.

Ecng.Trading v1.2

Обновление! Рекомендую после данного сообщения прочитать это.

Руки окончательно дошли не только до Ecng.Trading, чтобы его расширить, но и выложить в общий доступ. Качайте. Самое главное изменение в этой версии - появились новые свечки. Раньше были свечки, основанные только на тайм-фрейме, причем, жестко определенном: минутка, пяти-, и т.д.. Теперь тайм-фрейм можно задавать любой, через .NET класс TimeSpan (например, TimeSpan.FromMinutes(2) создает двухминутку). И свечки стали вида:

1. TimeFrameCandle - старая добрая тайм-фрейм свечка.
2. TickCandle - свечка, строящаяся на основе количества сделок.
3. VolumeCandle - свечка, строящаяся на основе допустимого объема.
4. RangeCandle - свечка, строящаяся на основе максимального отклонения цены сделки от открытия свечки.

Для свечек я добавил два события в ITrader: NewCandle (вызывается для свечек, которые только что начали формировать), CandlesChanged (вызывается для измененных свечек).

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

1. RegisterTimeFrameCandles - передается инструмент, и нужный тайм-фрейм. После вызова этого метода, робот начнет получать события NewCandle и CandlesChanged с объектами TimeFrameCandle.
2. RegisterTickCandles - то же самое, что и RegisterTimeFrameCandles, только уже для свечек TickCandle.
3. RegisterVolumeCandles - аналогично.
4. RegisterRangeCandles - аналогично.

И последнее, немаловажное изменение, касается времени последней сделки (я уже писал об этом, пункт 2). Теперь, QuikWrapper принимает по DDE сразу два параметра, "Время последней сделки" и "Время изменения". Вот как выглядит теперь таблица инструментов:



Все скриншоты настроек DDE и файл с настройка окон в Квике я выложил в том же архиве.

пятница, 6 ноября 2009 г.

Особенность построения МТС под Quik, использую Ecng.Trading

Довольно много пришло писем на почту (как-то народ не очень любит писать в комменты, вопрос - почему) с разного рода ошибками. Об ошибках, в которых повинен я, писать не буду, потому как я их буду устранять по мере появления. А вот о тех, которые я устранить не могу (например, особенности работы Квика), я напишу.

1. "System.BadImageFormatException was unhandled" (если установлен .NET Framework русской версии то сообщение будет такое "Была сделана попытка загрузить программу, имеющую неверный формат."). Эта ошибка говорит о том, что запускается программа как 64 битовое приложение. Библиотека же Trans2Quik.dll написана только под 32 битовые приложения. А на дворе уже 21 век, и найти не 64 битовые компьютеры все сложнее и сложнее. Поэтому и возникает подобная путаница. Поэтому, преждем чем начать создавать своего робота на .NET под Квик, нужно зайти в свойства проекта, раздел Build и выставить Platform target в x86:


2. При торговле на FORTS у Security всегда нулевое значение свойства LastTrade. Это происходит потому, что в таблице инструментов Квик для FORST не показывает время последней сделки. Но он умеет показывать время последнего изменения. Ecng.Trading не опирается на названия колонок в таблице при экспорте через DDE, но учитывает порядковый номер. Поэтому, чтобы получать значение последней сделки в Security, нужно заменить колонку "Время последней сделки" на "Время последнего изменения".

3. Неправильно настроены таблицы в Квике. Под пример, который идет в архиве вместе с Ecng.Trading, я выкладываю файл с настройками для Квика скачать. В нем есть различные фильтры, наподобие того, что показаны только A1 ММВБ и пара фьючерсов, но я думаю, отменить этот фильтр в Квике не составит труда.

4. Когда запускается экспорт Всех сделок через DDE, компьютер может подтормаживать. Это связанно с количеством сделок, которое грузится в первый раз (актуально, когда робот запускается не в начале торговой сессии). Так вот, в программе лучше прописать алгоритм так, чтобы он ждал пока все сделки не подгрузятся. Например, брать тот же Security.LastTrade и ждать, пока он не придет через событие ITrader.NewTrades. Или же заставить пользователя смотреть за процессором в Task Manager.

5. "Что умеет моя программа?". Ничего! Потому что у меня не программа. У меня библиотека с API для разработки этих самых программ. Скриншоты с мой якобы программой являются скриншотами примера, которого я создал специально продемонстрировать, что умеет моя библиотека.