MultiTrader
Atom
02.07.2010
Alexander


Решил всё же создать отдельную тему для 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 у меня очень смазано).


Теги:


Спасибо:


Mikhail Sukhov

Фотография
Дата: 02.07.2010
Ответить


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

Mikhail Sukhov

Фотография
Дата: 02.07.2010
Ответить


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

Спасибо:

Alexander

Фотография
Дата: 02.07.2010
Ответить


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

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

Спасибо:

Alexander

Фотография
Дата: 02.07.2010
Ответить


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

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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 02.07.2010
Ответить


Конечно.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 02.07.2010
Ответить


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

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy