Убить упрямую тварь!
Atom
06.09.2012
Oppositus


Здравствуйте.

Я использую MQS для открытия позиции, как дочернюю стратегию. В процессе работы котирования произошла ошибка, и котирование осталось висеть дочерней стратегией. Но при этом, перед ошибкой, позиция по инструменту была открыта. Мне надо сделать так, чтобы дочерняя MQS закончилась и самоудалилась из базовой стратегии, даже при ошибке. В данном же случае MQS переходит в ProcessState == Stopping и висит в родительской стратегии. Мне же нужно удалять дочерние стратегии после совершения сделок, или после ошибок. То есть - если стратегия отработала или ошиблась, то она должна удалиться.

Как это сделать самым лучшим способом? Под "лучшим способом" я понимаю в порядке убывания лучшести:

  1. При создании стратегии выставить какое-нибудь свойство, которое указывает стратегии убиться в любом нештатном случае
  2. Написать обработчик Error, в котором прибивать стратегию самостоятельно. (И что там примерно писать?).
  3. Следить за дочерней стратегией из базовой, и выпиливать дочернюю, если что не так.

Лог утерян. В общем же, там было следующее:

  1. Стратегия отправила ордер, тот зарегистрировался.
  2. Изменился стакан или что-то еще произошло, и стратегия начала перерегистрацию ордера
  3. В процессе перерегистрации заявка исполнилась.
  4. Новый ордер ушел на биржу
  5. ФОРТС ответил "нехватка по лимитам"
  6. MQS вывалила в лог исключение (сообщение с ФОРТС) и осталась висеть в состоянии Stopping

Код:


        protected void EnterLong()
        {
            // дожидаемся завершения стратегий
            if(base.ChildStrategies.Count != 0)
            {
                this.AddWarningLog("EnterLong - отказ, есть активные стратегии!");
                return;
            }

            // Проверяем время
            if(m_TTM.State(DateTime.Now) != TradeState.Opened)
            {
                this.AddWarningLog("EnterLong - отказ, неторговое время");
                return;
            }

            decimal LongVolume = base.Volume - base.Position;
            this.AddInfoLog("Входим в лонг, макс. объем {0}", LongVolume);

            if(LongVolume < 1)
            {
                this.AddWarningLog("EnterLong - отказ, неправильный объем {0}. Вычислено {1} - {2}", LongVolume, base.Volume, base.Position);
                return;
            }

            m_PositionEnter = base.Security.LastTrade.Price;
            MarketQuotingStrategy buyer = new MarketQuotingStrategy(OrderDirections.Buy, Math.Min(LongVolume, m_Depth.BestAsk.Volume))
            {
                PriceType = MarketPriceTypes.Opposite/*,
                MaxErrorCount = 3,
                MaxReRegisterCount = 10,
                MaxRegisterFailCount = 3*/
            };
            base.ChildStrategies.Add(buyer);
        }


Теги:


Спасибо:


< 1 2 
vk37

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


Тоже сегодня столкнулся с тем, что стратегия дублирует заявки. Работаю на смарте. Делать свою реализацию? Мог бы посмотреть имеющуюся, если бы доступ был. После дублирования стратегия перестала работать. Как теперь уходить от компа? )

Спасибо:

Alexander

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


Может стоит лог приложить? Или нам догадываться надо в очередной раз?

Спасибо:

vk37

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


Сегодня снова. Лог:

2012.09.14 12:21:33.887|       |S_RIU2@RTS_BP12902-RF-01|Вход в направлении Buy по цене 155195
2012.09.14 12:21:33.888|       |MQS_RIU2@RTS_BP12902-RF-01|Стратегия запущена.
2012.09.14 12:21:33.888|       |MQS_RIU2@RTS_BP12902-RF-01|Котирование на Buy объема 10.
2012.09.14 12:21:33.888|       |MQS_RIU2@RTS_BP12902-RF-01|Приостановка правил. _rulesSuspendCount 1.
2012.09.14 12:21:33.888|       |MQS_RIU2@RTS_BP12902-RF-01|Возобновление правил. _rulesSuspendCount 0.
2012.09.14 12:21:33.888|       |MQS_RIU2@RTS_BP12902-RF-01|Цена текущей NULL и лучшей 155200.
2012.09.14 12:21:33.888|       |MQS_RIU2@RTS_BP12902-RF-01|Лучший бид 155195 и лучший аск 155200.
2012.09.14 12:21:33.888|       |MQS_RIU2@RTS_BP12902-RF-01|Регистрация новой заявки на Buy с ценой 155200 и объемом 10.
2012.09.14 12:21:33.888|       |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654647 на Buy отправлена с ценой 155200 объемом 10.
2012.09.14 12:21:34.018|Warning|MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654647 в процессе регистрации.
2012.09.14 12:21:34.178|Warning|MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654647 в процессе регистрации.
2012.09.14 12:21:34.302|Warning|MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654647 в процессе регистрации.
2012.09.14 12:21:34.357|       |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654647 принята биржей.
2012.09.14 12:21:34.357|       |MQS_RIU2@RTS_BP12902-RF-01|Сброс счетчика ошибок регистрации с 0 до нуля.
2012.09.14 12:21:34.358|       |MQS_RIU2@RTS_BP12902-RF-01|Цена текущей 155200 и лучшей 155225.
2012.09.14 12:21:34.358|       |MQS_RIU2@RTS_BP12902-RF-01|Лучший бид 155220 и лучший аск 155225.
2012.09.14 12:21:34.358|       |MQS_RIU2@RTS_BP12902-RF-01|Котирование заявки 42654647 на Buy с ценой 155200 объемом 10.
2012.09.14 12:21:34.358|       |MQS_RIU2@RTS_BP12902-RF-01|Отмена заявки 42654647.
2012.09.14 12:21:34.362|       |MQS_RIU2@RTS_BP12902-RF-01|Отмена заявки 42654647.
2012.09.14 12:21:34.425|Warning|MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654647 в процессе снятия.
2012.09.14 12:21:34.552|Warning|MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654647 в процессе снятия.
2012.09.14 12:21:34.659|Warning|MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654647 в процессе снятия.
2012.09.14 12:21:34.745|       |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654647 больше не активна.
2012.09.14 12:21:34.747|       |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654647 была снята. Время снятия 14.09.2012 12:21:49.
2012.09.14 12:21:34.748|       |MQS_RIU2@RTS_BP12902-RF-01|Цена текущей NULL и лучшей 155210.
2012.09.14 12:21:34.748|       |MQS_RIU2@RTS_BP12902-RF-01|Лучший бид 155205 и лучший аск 155215.
2012.09.14 12:21:34.750|       |MQS_RIU2@RTS_BP12902-RF-01|Регистрация новой заявки на Buy с ценой 155210 и объемом 10.
2012.09.14 12:21:34.751|       |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654648 на Buy отправлена с ценой 155210 объемом 10.
2012.09.14 12:21:34.770|Warning|MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654648 в процессе регистрации.
2012.09.14 12:21:34.933|Warning|MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654648 в процессе регистрации.
2012.09.14 12:21:35.060|Warning|MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654648 в процессе регистрации.
2012.09.14 12:21:35.095|       |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654648 принята биржей.
2012.09.14 12:21:35.095|       |MQS_RIU2@RTS_BP12902-RF-01|Сброс счетчика ошибок регистрации с 0 до нуля.
2012.09.14 12:21:35.333|       |MQS_RIU2@RTS_BP12902-RF-01|Цена текущей 155210 и лучшей 155220.
2012.09.14 12:21:35.333|       |MQS_RIU2@RTS_BP12902-RF-01|Лучший бид 155215 и лучший аск 155220.
2012.09.14 12:21:35.333|       |MQS_RIU2@RTS_BP12902-RF-01|Котирование заявки 42654648 на Buy с ценой 155210 объемом 10.
2012.09.14 12:21:35.333|       |MQS_RIU2@RTS_BP12902-RF-01|Отмена заявки 42654648.
2012.09.14 12:21:35.333|       |MQS_RIU2@RTS_BP12902-RF-01|Отмена заявки 42654648.
2012.09.14 12:21:35.406|Error  |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654648 не была отменена по причине System.InvalidOperationException: Не удалось снять заявку с номером 8892496400 и транзакцией 42654648..
2012.09.14 12:21:35.407|       |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654648 больше не активна.
2012.09.14 12:21:35.407|       |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654648 была снята. Время снятия 01.01.0001 0:00:00.
2012.09.14 12:21:35.407|       |MQS_RIU2@RTS_BP12902-RF-01|Цена текущей NULL и лучшей 155220.
2012.09.14 12:21:35.407|       |MQS_RIU2@RTS_BP12902-RF-01|Лучший бид 155215 и лучший аск 155220.
2012.09.14 12:21:35.407|       |MQS_RIU2@RTS_BP12902-RF-01|Регистрация новой заявки на Buy с ценой 155220 и объемом 10.
2012.09.14 12:21:35.408|       |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654649 на Buy отправлена с ценой 155220 объемом 10.
2012.09.14 12:21:35.412|       |S_RIU2@RTS_BP12902-RF-01|Новая позиция 10.
2012.09.14 12:21:35.412|       |MQS_RIU2@RTS_BP12902-RF-01|Новая позиция 10.
2012.09.14 12:21:35.412|       |MQS_RIU2@RTS_BP12902-RF-01|Позиция изменилась на 10. Оставшийся объем 0.
2012.09.14 12:21:35.412|       |MQS_RIU2@RTS_BP12902-RF-01|Заканчиваем котирование.
2012.09.14 12:21:35.412|       |MQS_RIU2@RTS_BP12902-RF-01|Стратегия останавливается.
2012.09.14 12:21:35.412|       |MQS_RIU2@RTS_BP12902-RF-01|Ожидание снятия всех активных заявок.
2012.09.14 12:21:35.412|       |S_RIU2@RTS_BP12902-RF-01|Новая Buy сделка 629751895 по цене 155210 на 2 заявки 42654648.
2012.09.14 12:21:35.413|       |MQS_RIU2@RTS_BP12902-RF-01|Новая Buy сделка 629751895 по цене 155210 на 2 заявки 42654648.
2012.09.14 12:21:35.413|       |S_RIU2@RTS_BP12902-RF-01|Новая Buy сделка 629751896 по цене 155210 на 8 заявки 42654648.
2012.09.14 12:21:35.413|       |MQS_RIU2@RTS_BP12902-RF-01|Новая Buy сделка 629751896 по цене 155210 на 8 заявки 42654648.
2012.09.14 12:21:35.708|Error  |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654649 не была принята по причине System.InvalidOperationException: Заявка с транзакцией 42654649 не была принята системой..
2012.09.14 12:21:35.710|       |MQS_RIU2@RTS_BP12902-RF-01|Заявка 42654649 больше не активна.
Спасибо:

Mikhail Sukhov

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


vk37: Сегодня снова. Лог:

А где проблемное место в логе?

Спасибо:
< 1 2 

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

loading
clippy