Проблемы со сделками, позициями
Atom Ответить
11.08.2011


Судя по всему у некоторых участников на 3.2.xxx появился сабж. Давайте сделаем следующее для поиска причины:

1. Подпишемся на QuikTrader.ProcessDataError, QuikTrader.PreProcessDdeData, QuikTrader.NewOrders, QuikTrader.OrdersChanged, QuikTrader.OrdersFailed, QuikTrader.NewMyTrades, Strategy.NewOrder, Strategy.OrderChanged, Strategy.NewMyTrades.
2. Из этих событий сделайте логирование.
3. У стратегии сделайте логирование. В 3.2.6 стало больше логов, особенно в плане заявок и сделок.

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

Теги:


Спасибо:




60 Ответов
< 1 2 3  >
freelancer

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


Alexander Перейти
freelancer Перейти
Версия 3.2.11

Сработал стоп.

Лог:
23:17:10.869 | | SPM: OrderId 5098943951 Volume 2 Balance 0 Pos 2
23:17:10.885 | | SPM: OrderId 5098943951 Volume 2 Balance 0 Pos 2

Правило PositionChanged() не выполнилось


5098943951 - это стоп заявка или порождённая заявка (Derived order)?

Порождённая
Спасибо:

Alexander

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


freelancer Перейти
Alexander Перейти
freelancer Перейти
Версия 3.2.11

Сработал стоп.

Лог:
23:17:10.869 | | SPM: OrderId 5098943951 Volume 2 Balance 0 Pos 2
23:17:10.885 | | SPM: OrderId 5098943951 Volume 2 Balance 0 Pos 2

Правило PositionChanged() не выполнилось


5098943951 - это стоп заявка или порождённая заявка (Derived order)?

Порождённая


Квик или другой ITrader? С фиксом с codeplex, что 1м постом выше Миша выкладывал, или без оного?
Спасибо:

freelancer

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


Alexander Перейти
freelancer Перейти
Alexander Перейти
freelancer Перейти
Версия 3.2.11

Сработал стоп.

Лог:
23:17:10.869 | | SPM: OrderId 5098943951 Volume 2 Balance 0 Pos 2
23:17:10.885 | | SPM: OrderId 5098943951 Volume 2 Balance 0 Pos 2

Правило PositionChanged() не выполнилось


5098943951 - это стоп заявка или порождённая заявка (Derived order)?

Порождённая


Квик или другой ITrader? С фиксом с codeplex, что 1м постом выше Миша выкладывал, или без оного?

Квик.
Без фикса.
Как его там найти ?
Спасибо:

Alexander

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


freelancer Перейти
Alexander Перейти
freelancer Перейти
Alexander Перейти
freelancer Перейти
Версия 3.2.11

Сработал стоп.

Лог:
23:17:10.869 | | SPM: OrderId 5098943951 Volume 2 Balance 0 Pos 2
23:17:10.885 | | SPM: OrderId 5098943951 Volume 2 Balance 0 Pos 2

Правило PositionChanged() не выполнилось


5098943951 - это стоп заявка или порождённая заявка (Derived order)?

Порождённая


Квик или другой ITrader? С фиксом с codeplex, что 1м постом выше Миша выкладывал, или без оного?

Квик.
Без фикса.
Как его там найти ?


Скачать из папки References
Спасибо:

Самунджян Артем

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


использовал 3.2.11 и были иногда какие то глюки c PositionManager
скачал 3.2.12 ,но так же остались проблемы(
К сожелениею логи от стокшарпа не использую,но просто хочу сказать ,что помоему проблемы с positionmanager не решили(

С уважением!Спасибо за S#)
Спасибо:

Alexander

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


samujan Перейти
использовал 3.2.11 и были иногда какие то глюки c PositionManager
скачал 3.2.12 ,но так же остались проблемы(
К сожелениею логи от стокшарпа не использую,но просто хочу сказать ,что помоему проблемы с positionmanager не решили(

С уважением!Спасибо за S#)


Проблемы при работе с квиком?
какую сборку 3.2.12 использовали?
Спасибо:

Самунджян Артем

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


Alexander Перейти
samujan Перейти
использовал 3.2.11 и были иногда какие то глюки c PositionManager
скачал 3.2.12 ,но так же остались проблемы(
К сожелениею логи от стокшарпа не использую,но просто хочу сказать ,что помоему проблемы с positionmanager не решили(

С уважением!Спасибо за S#)


Проблемы при работе с квиком?
какую сборку 3.2.12 использовали?


Использовал сборку 3.2.12 ,никаких проблем с квиком не было всё отлично работало.Раньше просто один робот работал на одном инструменте,затем решили использовать несколько роботов на одном инструменте и тут понадобился S# методы,чтобы использовать именно колиечство позиций со стратегии ,а не с одного инструмента.Запускал для теста всё нормально работало,пока местами начали проскальзывать глюки там допустим на счету 2 позиции,а он пишет 3.
Затем поставил новую сборку и вот она тоже дала глюк.

Все заявки через стратегию реалицию через
this.CreateOrder(......);
this.RegisterOrder(order);
this.ChildStrategies.Add(mqs);
Спасибо:

Alexander

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


samujan Перейти
Alexander Перейти
samujan Перейти
использовал 3.2.11 и были иногда какие то глюки c PositionManager
скачал 3.2.12 ,но так же остались проблемы(
К сожелениею логи от стокшарпа не использую,но просто хочу сказать ,что помоему проблемы с positionmanager не решили(

С уважением!Спасибо за S#)


Проблемы при работе с квиком?
какую сборку 3.2.12 использовали?


Использовал сборку 3.2.12 ,никаких проблем с квиком не было всё отлично работало.Раньше просто один робот работал на одном инструменте,затем решили использовать несколько роботов на одном инструменте и тут понадобился S# методы,чтобы использовать именно колиечство позиций со стратегии ,а не с одного инструмента.Запускал для теста всё нормально работало,пока местами начали проскальзывать глюки там допустим на счету 2 позиции,а он пишет 3.
Затем поставил новую сборку и вот она тоже дала глюк.

Все заявки через стратегию реалицию через
this.CreateOrder(......);
this.RegisterOrder(order);
this.ChildStrategies.Add(mqs);


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

Mikhail Sukhov

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


samujan Перейти
Все заявки через стратегию реалицию через
this.CreateOrder(......);
this.RegisterOrder(order);
this.ChildStrategies.Add(mqs);


Дочерние стратегии имеют свойство заканчивать свою работу раньше, чем по ним придут сделки. Лечится через Strategy.RemoveChildsStrategy
Автор топика
Спасибо:

Самунджян Артем

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


Mikhail Sukhov Перейти
samujan Перейти
Все заявки через стратегию реалицию через
this.CreateOrder(......);
this.RegisterOrder(order);
this.ChildStrategies.Add(mqs);


Дочерние стратегии имеют свойство заканчивать свою работу раньше, чем по ним придут сделки. Лечится через Strategy.RemoveChildsStrategy


Даже если я захожу обычной лимитной заявкой он всё равно не всегда правильно распознаёт кол-во позиций.Причём если бы я что-то неправильно делал,то он скорее всего,всегда бы писал ноль количество позиций.Confused

Спасибо:

hobo

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


Alexander Mukhanchikov Перейти
esper Перейти
Цитата:
Проблемы со сделками, позициями.
Потестировать изменение позиции с помощью указанного PositionManager.


Тестирование с указанным PositionManager-ом уже выполняется, о результатах отпишусь позднее.


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

Интересно, какие результаты Вы, esper, получили.
По моим наблюдениям ошибки в подсчете позиции бывают когда в стратегию не приходит столько же OnOrderChanged, сколько их появляется через QuikTrader.
Спасибо:

esper

Фотография
Программист
Дата: 13.10.2011
Ответить


hobo Перейти
Интересно, какие результаты Вы, esper, получили.
По моим наблюдениям ошибки в подсчете позиции бывают когда в стратегию не приходит столько же OnOrderChanged, сколько их появляется через QuikTrader.


Все верно, в некоторых случаях, OrderChanged для стратегии не вызывается и PositionManager стратегии не пересчитывает свою позицию. Происходит это, скорее всего, из-за того, что:
  1. в шлюз приходит информация о новой заявке
  2. в шлюз приходит информация о сделке
  3. в шлюз приходит информация что заявка из п.1 изменена
  4. заявка добавляется в стратегию

получается, что заявка не успевает добавиться в стратегию до п.3, когда приходит событие изменения заявки, а после того как заявка добавится в стратегию она больше не меняется => не меняется и позиция.

Примерный лог работы:
Цитата:
14:37:54:8445 | Debug | Trader | Новая заявка id: 966412305 (49537765) state:Done Buy code:RIZ1 price:135280 volume:1
14:37:54:8635 | Debug | Trader | Новая сделка id: 37415401 order id: 966412305 Buy code:RIZ1 price:135255 volume:1
14:37:54:8695 | Debug | Trader | Заявка изменена id: 966412305 (49537765) state:Done Buy code:RIZ1 price:135280 volume:1
14:37:54:8755 | Debug | Trader | Заявка изменена id: 966412305 (49537765) state:Done Buy code:RIZ1 price:135280 volume:1
14:37:54:8775 | Info | RIZ | Новая заявка id: 966412305 (49537765) state:Done Buy code:RIZ1 price:135280 volume:1
14:37:54:9185 | Info | RIZ | Новая сделка id: 37415401 order id: 966412305 Buy code:RIZ1 price:135255 volume:1
14:37:54:9755 | Info | PS | Новая заявка id: 966412305 (49537765) state:Done Buy code:RIZ1 price:135280 volume:1
14:37:55:0305 | Info | PS | Новая сделка id: 37415401 order id: 966412305 Buy code:RIZ1 price:135255 volume:1


P.s. перенесите последние два сообщения в эту тему
Спасибо:

sergun

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


Мда, грустно все как-то со S#.

4.03. Пользую QuikTrader

Эвент Strategy.OrderChanged действительно не появляется.
От греха по-дальше перешел на ITrader.NewOrders и ITrader.OrdersChanged было уже спокойно выдохнул.

Ан нет, порой исполненные либо снятые заявки так и остаются в стейте Active, хоть ты тресни.
Спасибо:

Mikhail Sukhov

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


sergun Перейти
Мда, грустно все как-то со S#.

4.03. Пользую QuikTrader

Эвент Strategy.OrderChanged действительно не появляется.
От греха по-дальше перешел на ITrader.NewOrders и ITrader.OrdersChanged было уже спокойно выдохнул.

Ан нет, порой исполненные либо снятые заявки так и остаются в стейте Active, хоть ты тресни.


А с чего решили, что это S#? Ошибку с позами уже почти локализовали, проверим на этих выхах. Но она явно не связана с вашей ситуацией (вообще из другой оперы). С учетом того, что больше никто о проблеме с Active не писал, вывод напрашивается сам собой.Cool
Автор топика
Спасибо:

sergun

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


Mikhail Sukhov Перейти
sergun Перейти
Мда, грустно все как-то со S#.

4.03. Пользую QuikTrader

Эвент Strategy.OrderChanged действительно не появляется.
От греха по-дальше перешел на ITrader.NewOrders и ITrader.OrdersChanged было уже спокойно выдохнул.

Ан нет, порой исполненные либо снятые заявки так и остаются в стейте Active, хоть ты тресни.


А с чего решили, что это S#? Ошибку с позами уже почти локализовали, проверим на этих выхах. Но она явно не связана с вашей ситуацией (вообще из другой оперы). С учетом того, что больше никто о проблеме с Active не писал, вывод напрашивается сам собой.Cool


Насчет "оперы" не буду судить. Увидел сообщение тов. esper.

Но вот заявочки остаются в Active. Смотрите, вот даже после всего вызываю CancelActiveOrders и в логе возникают сообщения "Вы не можете снять данную заявку". Предположу, что QuikTrader, как и мои обработчики изменения состояния заявок видят их как Active и соответственно CancelActiveOrders пытается их снять. Хотя в квике заявы давно исполнены либо сняты.
Спасибо:

Mikhail Sukhov

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


sergun Перейти
и в логе возникают сообщения "Вы не можете снять данную заявку". Предположу, что QuikTrader, как и мои обработчики изменения состояния заявок видят их как Active и соответственно CancelActiveOrders пытается их снять.


Не факт. Заявка может быть исполнена на бирже но еще не обновила свой статус у вас на компьютере.

Насчет постоянно висит Active. Запускали пример Sample? Выставляли заявки? Снимали? Статус менялся?
Автор топика
Спасибо:

Supervisor

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


sergun Перейти
[quote=Mikhail Sukhov;12853]Но вот заявочки остаются в Active. Смотрите, вот даже после всего вызываю CancelActiveOrders и в логе возникают сообщения "Вы не можете снять данную заявку". Предположу, что QuikTrader, как и мои обработчики изменения состояния заявок видят их как Active и соответственно CancelActiveOrders пытается их снять. Хотя в квике заявы давно исполнены либо сняты.

Подтвержу, у меня так же. За сессию исполненные active заявочки накапливаются, и при вызове CancelOrders на каждую такую выводится ошибка. Сегодня будет время - попробую sample и с фильтром Balance = 0 снимать что получится.
Спасибо:

Mikhail Sukhov

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


Supervisor Перейти
Подтвержу, у меня так же.


Запускали пример Sample? Выставляли заявки? Снимали? Статус менялся?
Автор топика
Спасибо:

Supervisor

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


Mikhail Sukhov Перейти
Supervisor Перейти
Подтвержу, у меня так же.

Запускали пример Sample? Выставляли заявки? Снимали? Статус менялся?

Там все нормально, локализовал проблему:
Код

foreach (var order in Trader.Orders)
{
	if (order.Portfolio == Portfolio && order.State == OrderStates.Active)
	{
		DebugMessage("ORDER ID " + order.Id + " STATE " + order.State + " BALANCE " + order.Balance);
		Trader.CancelOrder(order);
	}
}

Данный код помимо активных заявок выводит и сработавшие заявки со статусом Active. Why?
Спасибо:

Mikhail Sukhov

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


Supervisor Перейти
Данный код помимо активных заявок выводит и сработавшие заявки со статусом Active. Why?


Потому что у вас почему то заявки не меняют свой статус на Done. В Sample раз все работает, значит ошибка у вас.
Автор топика
Спасибо:

Supervisor

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


Долго ковырялся, нашел причину - не был запущен DDE экспорт по таблице заявок.
Спасибо:

Mikhail Sukhov

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


На КодеПлексе лежит залеченная версия Algo. Она решает проблему с позициями. Просьба проверить ее.
Автор топика
Спасибо:

sergun

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


Mikhail Sukhov Перейти
На КодеПлексе лежит залеченная версия Algo. Она решает проблему с позициями. Просьба проверить ее.


Отвлеку, а симптом типа: заявка из None сразу становится Done (без Active) и в такой ситуации заявка на появляется в Strategy.Orders случаем не "про этот фикс"? :-)
Спасибо:

VirKato

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


Mikhail Sukhov Перейти
Supervisor Перейти
Данный код помимо активных заявок выводит и сработавшие заявки со статусом Active. Why?


Потому что у вас почему то заявки не меняют свой статус на Done. В Sample раз все работает, значит ошибка у вас.


Михаил. Sample запускал, работает. Мой код тоже работает и статусы меняются. Но, не всегда: заявки обновляются каждую секунду (reregister) и периодически некоторые заявки, которые по факту уже сняты (например сравнивая с таблицей в квике), так и остаются висеть активными. Процент этих заявок не большой (на вскидку <4%).
Есть ли возможность принудительно поставить статус done для определенной заявки в Trader.Orders?
Спасибо:

Alexander

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


Версия 4.1.1?
Покажите список таких заявок и скриншот квика, где видна описанная вами проблема.
Спасибо:
< 1 2 3  >

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

loading
clippy