lesser
|
Дата: 21.10.2011
Видно слишком сложный вопрос я задал  . Ладно буду думать сам. Тогда следующий вопрос: Чтоб создать свою стратегию я должен создавать клас стратегии , или могу просто создать переменную и добавить в нее правила ? если да тогда как ? Такое вот я догадался : Strategy trade = new Strategy(); trade.Rules.Add(trade.Security.MarketDepthChanged()); а вот как описать что делать когда правило сработает ?
|
Автор топика
|
|
|
lesser
|
Дата: 21.10.2011
Кжись нашел сам :
Strategy trade = new Strategy();
trade.Rules.Add(trade.Security.MarketDepthChanged().Do(trade_action));
Так будет правильно ?
|
Автор топика
|
|
|
lesser
|
Дата: 21.10.2011
И еще два вопросы :
1. Можно ли с основной стратегии запустить дочерную стратегию на несколько инструментов ? 2. можно ли запустить их так что - бы не дожыдатся их завершения . то есть я например передал инстумент дочерней стратегии на котирование но в тоже время реагирую на события основной стратегии.
|
Автор топика
|
|
|
Ortn
|
Дата: 22.10.2011
|
|
|
|
lesser  Хочу реализовать такую стратегию:
1. в зависимости от значания индекса сделать выборку по инструментам для торговли и сформировать несколько списков инструментов
2. по каждому списку инструментов запустить отдельную стратегию
3. проверять значение индекса и если нужно переформировать списки инструментов
4. проверять списки на счет того правильная ли стратегия работает на инструментах в них
Причем позиции , ордера и P/L по всему этому нужно считать как для одной стратегии.
И еще маленький вопрос знатокам C# , как по простому записать в код такое:
есть Collection1 = ThreadSafeObservableCollection<Security> Collection2 = ThreadSafeObservableCollection<Position> Collection3 = ThreadSafeObservableCollection<Security>
если в Collection2 есть позиция с полем Security и в тоже время такой Security нет в Collection1 , то внести эту Security в Collection3 .
Спасибо.
Не знаток C# но как на счет foreach (var missing_security in Collection2.Where(p => !Collection1.Contains(p.Security))) Collection3.add(missing_security) Код взял из головы за компилируимость не отвечаю
|
|
|
|
lesser
|
Дата: 22.10.2011
Спасибо, добрый человек , а то уже начал думать что я тут сам с собой разговариваю  .
|
Автор топика
|
|
|
lesser
|
Дата: 22.10.2011
Итак сформировали мы список секурити , идем дальше: есть описана стратегия , теперь надо запустить ее на всех секурити из списка Если вот так сделать ? foreach (Security sec in security_list) { var strategy = new MyStrategy(sec) strategy.Start(); } Будет работать ?
|
Автор топика
|
|
|
Alexander
|
Дата: 22.10.2011
lesser  Итак сформировали мы список секурити , идем дальше: есть описана стратегия , теперь надо запустить ее на всех секурити из списка Если вот так сделать ? foreach (Security sec in security_list) { var strategy = new MyStrategy(sec) strategy.Start(); } Будет работать ? А если попробовать? :)
|
|
|
|
lesser
|
Дата: 23.10.2011
Alexander Mukhanchikov 
А если попробовать? :)
Обязательно попробую :), но нужно ждать до понедельника пока торги стартанут , жалко времени , если так не работает до понедельника еще можна думать как по другому замутить.
|
Автор топика
|
|
|
Alexander
|
Дата: 23.10.2011
lesser  Alexander Mukhanchikov 
А если попробовать? :)
Обязательно попробую :), но нужно ждать до понедельника пока торги стартанут , жалко времени , если так не работает до понедельника еще можна думать как по другому замутить. Стратегии стартуют в независимости от наличия или отсутствия торгов на бирже
|
|
|
|
lesser
|
Дата: 23.10.2011
Alexander Mukhanchikov  [quote=lesser;12615] Стратегии стартуют в независимости от наличия или отсутствия торгов на бирже Моя система не стартует так как список формирует налету, неужто вам так трудно сказать будет такое работать или нет ?
|
Автор топика
|
|
|
Alexander
|
Дата: 23.10.2011
lesser  Alexander Mukhanchikov  [quote=lesser;12615] Стратегии стартуют в независимости от наличия или отсутствия торгов на бирже Моя система не стартует так как список формирует налету, неужто вам так трудно сказать будет такое работать или нет ? инструменты получаются как из квика, так из плазы и смарткома даже когда биржа не работает. т.е. этот ваш список сформирован будет. да, это работать должно
|
|
|
|
lesser
|
Дата: 23.10.2011
Спасибо ,
Подскажите , основная стратегия должна ждать пока отработает дочерная ?
Если да, то как сделать чтоб не ждала , видел гдето тему на форуме где писали что должна ждать, но теперь никак не могу найти эту тему.
может нужно запускать дочерние в разных потоках ? или както через GuiAsync ?
|
Автор топика
|
|
|
Alexander
|
Дата: 23.10.2011
lesser  Спасибо ,
Подскажите , основная стратегия должна ждать пока отработает дочерная ?
Если да, то как сделать чтоб не ждала , видел гдето тему на форуме где писали что должна ждать, но теперь никак не могу найти эту тему.
может нужно запускать дочерние в разных потоках ? или както через GuiAsync ?
Цитата из документации Цитата:Родительская и все ее дочерние стратегии исполняются параллельно.
|
|
|
|
lesser
|
Дата: 23.10.2011
Спасибо , успокоили :)
|
Автор топика
|
|
|
lesser
|
Дата: 24.10.2011
Второой день себе голову ломаю, как получить мои активные заявки по инструменту ? может через стакан както можна а то var orderbuy = _trader.Orders.Where(o => o.Security == securi && o.Direction == OrderDirections.Buy && o.State == OrderStates.Active);
получается неактуальная инфа :(
|
Автор топика
|
|
|
lesser
|
Дата: 24.10.2011
Если так сделать :
var quotes_Ask = stakan.GetQuotes(OrderDirections.Buy); var quotes_Ask_w_my = stakan.GetFilteredQuotes(OrderDirections.Buy,null);
То потом как вычислить есть ли там мои заявки ?
quotes_Ask = quotes_Ask_w_my ?
|
Автор топика
|
|
|
lesser
|
Дата: 24.10.2011
Почему у меня не срабатывает такое правило основной стратегии :
MainSystem.Rules.Add(MainSystem.Security.Changed().Do(Strategy1));
Причем все другие правила срабатывают нормально.
Основную стратегию не описывал отдельным классом потому что не могу понять как отуда что-то выводить в окошка программы.
|
Автор топика
|
|
|
Alexander
|
Дата: 24.10.2011
lesser  Второой день себе голову ломаю, как получить мои активные заявки по инструменту ? может через стакан както можна а то var orderbuy = _trader.Orders.Where(o => o.Security == securi && o.Direction == OrderDirections.Buy && o.State == OrderStates.Active);
получается неактуальная инфа :( пример неактуальной инфы приведите
|
|
|
|
lesser
|
Дата: 25.10.2011
Пробовал соорудить скальпера и ордера по инструменту определять с помощью _trader.Orders...
но видно ордера в нем не успевают так быстро обновлятся и мой бот засылал столько заявок подряд что даже после его виключения заявки все еще шли :)
как я понял это все из за запаздывания регистрации ордеров .
Уде придумал новый алгоритм для работы , спасибо.
Посмотрите, плиз, на последний мой вопрос в этой теме.
|
Автор топика
|
|
|
Alexander
|
Дата: 25.10.2011
lesser  Пробовал соорудить скальпера и ордера по инструменту определять с помощью _trader.Orders...
но видно ордера в нем не успевают так быстро обновлятся и мой бот засылал столько заявок подряд что даже после его виключения заявки все еще шли :)
как я понял это все из за запаздывания регистрации ордеров .
Уде придумал новый алгоритм для работы , спасибо.
Посмотрите, плиз, на последний мой вопрос в этой теме. Приведите подробнее данный кусок кода. непонятно что есть что
|
|
|
|
lesser
|
Дата: 25.10.2011
Подскажите, плиз, почему может не срабатывать такое правило :
MainSystem.Rules.Add(MainSystem.Security.Changed().Do(Step1));
|
Автор топика
|
|
|
lesser
|
Дата: 26.10.2011
Непойму , я как то неправильно задал вопрос , или на него так трудно ответить ?
Секурити стратегии изменяется постоянно но событие не срабативает , знаю по том что поставил точку остановки в функции которую вызивает событие и есче ни разу программа не останавливалась .
|
Автор топика
|
|
|
esper
|
Дата: 26.10.2011
Что такое MainSystem? Как создается и инициализируется?
|
|
|
|
lesser
|
Дата: 26.10.2011
Strategy MainSystem = new Strategy(); MainSystem.Security = sec; MainSystem.Trader = _trader; MainSystem.Portfolio = account; MainSystem.RemoveChildStrategies = true;
MainSystem.Rules.Add(MainSystem.Security.Changed().Do(Step1));
MainSystem.Rules.Add(MainSystem.Started().Do(StartTrade)); MainSystem.Rules.Add(MainSystem.Stopping().Do(StopTrade));
MainSystem.Start();
|
Автор топика
|
|
|
esper
|
Дата: 26.10.2011
Цитата:Секурити стратегии изменяется постоянно Как смотрите что оно меняется?
|
|
|