Непонятки с MarketQuotingStrategy
Atom
31.01.2012


Может кто подсказать как разобраться с проблемой? Вчера обнаружил что MQS в каких-то случаях выполняет задачу в двойном размере. Я завел топик и выложил там более полное описание, возможно, что название не совсем корректное. Сегодня на другом инструменте столкнулся опять с той же самой проблемой. Судя по журналу MQS пытается переставить заявку в данном случае 42133045, а она к этому моменту уже выполнена. Причем получив ошибку "Вы не можете снять данную заявку" выставляет новую заявку.


13:13:01.880 | | MQS | Перекотирование зарегистрировано для заявки 42133045 на Buy с ценой 30295 объемом 1.
13:13:02.145 | Error | MQS | Заявка 42133045 не была принята по причине System.InvalidOperationException: Сервер для транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=42133045; CLASSCODE=SPBFUT; SECCODE=SiH2; MODE=0; FIRST_ORDER_NUMBER=0; FIRST_ORDER_NEW_PRICE=30295; FIRST_ORDER_NEW_QUANTITY=1;' вернул неправильное сообщение 'Вы не можете снять данную заявку' по передвинутым заявкам..
13:13:02.176 | Error | MQS | Заявка 42133045 не принята биржей по причине 'Сервер для транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=42133045; CLASSCODE=SPBFUT; SECCODE=SiH2; MODE=0; FIRST_ORDER_NUMBER=0; FIRST_ORDER_NEW_PRICE=30295; FIRST_ORDER_NEW_QUANTITY=1;' вернул неправильное сообщение 'Вы не можете снять данную заявку' по передвинутым заявкам.'.
13:13:02.239 | | MQS | Цена текущей NULL и лучшей 30295.
13:13:02.301 | | MQS | Лучший бид 30295 и лучший аск 30297.
13:13:02.411 | | MQS | Регистрация новой заявки на Buy с ценой 30295 и объемом 1.

ps: если можно взглянуть на фрагмент MarketQuotingStrategy, который выполняет действия в приложенном логе, попытаюсь сам найти ответ

Теги:


Спасибо:


< 1 2 3 
Moadip

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


Т.е когда стратегия завершается с ошибкой это нормальная ситуация?

Допустим выставил quotingVolume = 5, Volume = 1.
Запускается MQS. После того как скотировано 2 лота, стратегия останавливается.

Т.е. в основной стратегии надо выставить
Код
RemoveChildStrategies = false;

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

У MQS подписаться на событие Stopped и в нем смотреть LeftVolume, если больше нуля, то повторно запускать с quotingVolume = LeftVolume?
Спасибо:

Mikhail Sukhov

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


Moadip Перейти
Т.е когда стратегия завершается с ошибкой это нормальная ситуация?

Допустим выставил quotingVolume = 5, Volume = 1.
Запускается MQS. После того как скотировано 2 лота, стратегия останавливается.


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

Moadip

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


Вот еще один скрин, скотировалось 2 лота из 5, после чего MQS остановилась.


Код, проще некуда, для того чтобы проверить работу MQS.
В чем проблема я понять не могу.

Выкладываю полностью весь код.

MainWindow.xaml.cs

myStrategy.cs

MainWindow.xaml


Михаил, посмотрите пожалуйста что я не так делаю?
Спасибо:

Mikhail Sukhov

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


Moadip Перейти
Михаил, посмотрите пожалуйста что я не так делаю?


Асинхронный режим включите.
Спасибо: Moadip

Moadip

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


Мда. Решение как всегда лежит на поверхности, но почему то его не видишь.

Я думал что чтобы наверняка заявки выставлялись/снимались лучше делать это в синхронном режиме. Оказалось нет.

Михаил, спасибо за ответ. А то я уже какой день мучаюсь с MQS.
Спасибо:
< 1 2 3 

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

loading
clippy