MultiTrader
Atom
7/2/2010


Решил всё же создать отдельную тему для MultiTrader.
У меня логика в роботе такая - есть несколько стратегий-роботов,
которые запускаются на одном квике, но на разных субсчетах (каждый
робот-стратегия - на отдельном субсчёте).

Соответственно, я создаю MultiTrader и добавляю в AggregatedTraders
счёт \ созданный QuikTrader (через конструктор, в который передаётся
один лишь путь до папки). Естественно, второй QuikTrader с таким же
путём мне добавить не дают - возникает исключение. Обхожу я это с
помощью мэпа-словаря: <pathToQuik.ToLower(), QuikTrader>. И не создаю
таким образом повторно QuikTrader. Но на мой взгляд, такая логика
должна быть внутри MultiTrader. Если я не прав - можно оставить как
есть, но стоит как-то пометить в документации для будущих поколений, я
потратил на то, чтоб это обнаружить какое-то время.

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

Следующий момент, который не особо нравится - при такой же структуре
MultiTrader и при вызове метода StartExport для MultiTrader вначале
запустится StartExport для первого из AggregatedTraders. Затем, для
второго из списка экспорт вначале остановится (т.к. он уже был запущен
- опять же, QuikTraders ведь одинаковые, различаются только счета), и
потом опять запустится. И так для каждого.
Мне это мешало, потому я стал хранить список из различных QuikTraders
и для каждого элемента из списка вызывать StartExport.
Но, опять же, на мой взгляд, было бы здорово это всё запрятать внутрь
архитектуры MultiTrader.

Пока расписывал возник такой вопрос - если поставить обработчик
события ProcessUnknownDdeData для элемента класса MultiTrader - он
установится для каждого из элементов AggregatedTraders? Если да, тут,
опять же, как мне кажется, стоит устанавливать лишь на различные
элементы QuikTraders (сейчас я это делаю храня список различных квиков
и устанавливая событие для каждого из них - получается, само понятие
MultiTrader у меня очень смазано).

Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 7/2/2010
Reply


1. А смысл из одной программы делать два подключение к одному и тому
же Квик?
2. Насчет делать проверки. Я их специально и вставил, чтобы не
создавали одинаковые QuikTrader (один и тот же путь к Квику и ДДЕ
сервер).
3. Конечно же. Квик не умеет экспортировать сразу в несколько программ
одновременно одну и ту же таблицу. Так что тут неважно, как работает
MultiTrader. Просто данные буду поступать только в один из QuikTrader.
4. У MultiTrader нет события ProcessUnknownDdeData .

Thanks:

Mikhail Sukhov

Avatar
Date: 7/2/2010
Reply


В догонку. MultiTrader - для работы с разными платформами. Разные
Квики, Квик и Смарт, Смарт и еще что. Но не одно и то же. Весь смысл
просто теряется.

Thanks:

Alexander

Avatar
Date: 7/2/2010
Reply


А как тогда должен выглядеть робот, если хочется получить доступ к
разным субсчетам?
Просто использовать один QuikTrader, передавая в каждую стратегию
отдельный субсчёт?

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

Thanks:

Alexander

Avatar
Date: 7/2/2010
Reply


У меня первоначальная задумка была такая:
в моей программе можно иметь возможность работать как с разными
папками квиков, так и с разными субсчетами. поэтому в настройках мы
задаём счёт + путь до квика, добавляем всё это в multitrader и удобно
работаем.

сейчас, видимо, придётся это сузить до:
для каждого пути берём первый попавшийся счёт, добавляем в
multitrader. А отдельно храним мэп <счёт, стратегия на которой
запускать данный счёт>. И при создании стратегии просто передаём туда
целиком MultiTrader и устанавливаем счёт в нужный. Как-то так, верно?

Thanks:

Mikhail Sukhov

Avatar
Date: 7/2/2010
Reply


Конечно.

Thanks:

Mikhail Sukhov

Avatar
Date: 7/2/2010
Reply


Да, так будет правильнее и изящнее.

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy