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


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

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

Теги:


Спасибо:




7 Ответов
freelancer

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


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 22.12.2011
Ответить


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

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


https://stocksharp.ru/do...egy_ProcessNewOrders.htm
Спасибо:

pehas

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


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);
                }

т.е. фактически перерегистрировать заявки
Автор топика
Спасибо:

pehas

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




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

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

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

freelancer

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


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

Alexander

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


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

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

pehas

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


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

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

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

То что надо, спасибо!
Автор топика
Спасибо:


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

loading
clippy