← Zurück

MultiTrader

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (6)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

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

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

Alexander
Alexander Autor

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

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

Alexander
Alexander Autor

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

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

Mikhail Sukhov
Mikhail Sukhov

Конечно.

Mikhail Sukhov
Mikhail Sukhov

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