Как сделать заявки шлюза заявками стратегии?


Как сделать заявки шлюза заявками стратегии?
Atom Reply
12/22/2011


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

Как сделать все заявки шлюза (обычные и стоп) заявками стратегии?

Tags:


Thanks:




7 Answers
freelancer

Avatar
Date: 12/22/2011
Reply


Я у себя в такой ситуации ищу потом через шлюз. заявками стратегии не пользуюсь. ведь потом уже не понять, к чему относится этот стоп
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 12/22/2011
Reply


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

Как сделать все заявки шлюза (обычные и стоп) заявками стратегии?


https://stocksharp.ru/do...egy_ProcessNewOrders.htm
Thanks:

pehas

Avatar
Date: 12/22/2011
Reply


freelancer Перейти
Я у себя в такой ситуации ищу потом через шлюз. заявками стратегии не пользуюсь. ведь потом уже не понять, к чему относится этот стоп

Да я в принципе сейчас тоже делаю что-то подобное, но хотелось сделать красиво. Чтобы считались параметры доходности правильно, параметры самой стратегии и т.д.
Пока нашел только вот такой способ
Код

                foreach (var oldStop in this.Trader.StopOrders.Where(s => s.State == OrderStates.Active))
                {
                    var newStop = oldStop.Clone();
                    newStop.Price = Security.GetWorsePrice(oldStop.Direction);
                    this.ReRegisterOrder(oldStop, newStop);
                }

т.е. фактически перерегистрировать заявки
Topic starter
Thanks:

pehas

Avatar
Date: 12/22/2011
Reply




Я пробовал это раньше, но у меня почему-то не работает. Версия библиотеки 4.0.10
Код

            var stops = this.ProcessNewOrders(this.Trader.StopOrders, true);
            Thread.Sleep(5000);
            CancelActiveOrders();

Итог - Переменная stops содержит 0 элементов, CancelActiveOrders() не снимает стопы, которые висели в квике на момент включения робота (т.е. стопы шлюза не назначились стратегии)
Или я неверно понял назначение метода?
Topic starter
Thanks:

freelancer

Avatar
Date: 12/22/2011
Reply


Запускаем стратегию. Висит какой-то стоп. И как же стратегия узнает, что это её стоп ?
Thanks:

Alexander

Avatar
Date: 12/22/2011
Reply


переопределите ProcessNewOrders (возвращая свой массив объединённый с массивом из base.ProcessNewOrders)

и не вызывайте его сами, он вызывается из OnStarting для стопов и обычных заявок
Thanks: pehas

pehas

Avatar
Date: 12/22/2011
Reply


freelancer Перейти
Запускаем стратегию. Висит какой-то стоп. И как же стратегия узнает, что это её стоп ?

У меня работает только одна стратегия на весь портфель. Соответственно, все что в терминале я могу смело отнести к стратегии

Alexander Mukhanchikov Перейти
переопределите ProcessNewOrders (возвращая свой массив объединённый с массивом из base.ProcessNewOrders)
и не вызывайте его сами, он вызывается из OnStarting для стопов и обычных заявок

То что надо, спасибо!
Topic starter
Thanks:


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

loading
clippy