Посоветуйте как правильно организовать стратегии:
Atom Ответить
21.10.2011


Хочу реализовать такую стратегию:

1. в зависимости от значания индекса сделать выборку по инструментам для торговли и сформировать несколько списков инструментов

2. по каждому списку инструментов запустить отдельную стратегию

3. проверять значение индекса и если нужно переформировать списки инструментов

4. проверять списки на счет того правильная ли стратегия работает на инструментах в них

Причем позиции , ордера и P/L по всему этому нужно считать как для одной стратегии.

И еще маленький вопрос знатокам C# , как по простому записать в код такое:

есть
Collection1 = ThreadSafeObservableCollection<Security>
Collection2 = ThreadSafeObservableCollection<Position>
Collection3 = ThreadSafeObservableCollection<Security>

если в Collection2 есть позиция с полем Security и в тоже время такой Security нет в Collection1 , то внести эту Security в Collection3 .

Спасибо.



Теги:


Спасибо:




32 Ответов
1 2  >
lesser

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


Видно слишком сложный вопрос я задал Confused .

Ладно буду думать сам.

Тогда следующий вопрос:

Чтоб создать свою стратегию я должен создавать клас стратегии , или могу просто создать переменную и добавить в нее правила ?

если да тогда как ?

Такое вот я догадался :

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
Ответить


Спасибо, добрый человек , а то уже начал думать что я тут сам с собой разговариваю Crying.

Автор топика
Спасибо:

lesser

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


Итак сформировали мы список секурити , идем дальше:

есть описана стратегия , теперь надо запустить ее на всех секурити из списка Confused

Если вот так сделать ?
foreach (Security sec in security_list)
{
var strategy = new MyStrategy(sec)
strategy.Start();

}
Будет работать ?
Автор топика
Спасибо:

Alexander

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


lesser Перейти
Итак сформировали мы список секурити , идем дальше:

есть описана стратегия , теперь надо запустить ее на всех секурити из списка Confused

Если вот так сделать ?
foreach (Security sec in security_list)
{
var strategy = new MyStrategy(sec)
strategy.Start();

}
Будет работать ?


А если попробовать? :)
Спасибо:

lesser

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


Alexander Mukhanchikov Перейти


А если попробовать? :)


Обязательно попробую :), но нужно ждать до понедельника пока торги стартанут , жалко времени , если так не работает до понедельника еще можна думать как по другому замутить.
Автор топика
Спасибо:

Alexander

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


lesser Перейти
Alexander Mukhanchikov Перейти


А если попробовать? :)


Обязательно попробую :), но нужно ждать до понедельника пока торги стартанут , жалко времени , если так не работает до понедельника еще можна думать как по другому замутить.



Стратегии стартуют в независимости от наличия или отсутствия торгов на бирже
Спасибо:

lesser

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


Alexander Mukhanchikov Перейти
[quote=lesser;12615]
Стратегии стартуют в независимости от наличия или отсутствия торгов на бирже


Моя система не стартует так как список формирует налету, неужто вам так трудно сказать будет такое работать или нет ?
Автор топика
Спасибо:

Alexander

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


lesser Перейти
Alexander Mukhanchikov Перейти
[quote=lesser;12615]
Стратегии стартуют в независимости от наличия или отсутствия торгов на бирже


Моя система не стартует так как список формирует налету, неужто вам так трудно сказать будет такое работать или нет ?


инструменты получаются как из квика, так из плазы и смарткома даже когда биржа не работает. т.е. этот ваш список сформирован будет.

да, это работать должно
Спасибо: lesser

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

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


Пробовал соорудить скальпера и ордера по инструменту определять с помощью _trader.Orders...

но видно ордера в нем не успевают так быстро обновлятся и мой бот засылал столько заявок подряд что даже после его виключения заявки все еще шли :)

как я понял это все из за запаздывания регистрации ордеров .

Уде придумал новый алгоритм для работы , спасибо.

Посмотрите, плиз, на последний мой вопрос в этой теме.
Автор топика
Спасибо:

Alexander

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


lesser Перейти
Пробовал соорудить скальпера и ордера по инструменту определять с помощью _trader.Orders...

но видно ордера в нем не успевают так быстро обновлятся и мой бот засылал столько заявок подряд что даже после его виключения заявки все еще шли :)

как я понял это все из за запаздывания регистрации ордеров .

Уде придумал новый алгоритм для работы , спасибо.

Посмотрите, плиз, на последний мой вопрос в этой теме.



Приведите подробнее данный кусок кода.
непонятно что есть что
Спасибо:

lesser

Фотография
Дата: 24.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
Ответить


Цитата:
Секурити стратегии изменяется постоянно

Как смотрите что оно меняется?
Спасибо:
1 2  >

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

loading
clippy