Столкнулся со следующей проблемой: иногда правило WhenStopped() для MarketQuotingStrategy срабатывает позже чем правило WhenNewMyTrades(), что нелогично при выставленным флаге WaitAllTrades=true;
q = new MarketQuotingStrategy(OrderDirections.Buy, volume);
q.Volume = q.QuotingVolume;
q.CancelOrdersWhenStopping = false; //to eliminate useless cancelation on stoping
q.PriceOffset = new Unit(1, UnitTypes.Step);
q.BestPriceOffset = new Unit(1, UnitTypes.Step);
q.WaitAllTrades = true;
q.WhenNewMyTrades().Do(()=>this.AddInfoLog("trade...")).Apply(this);
q.DisposeOnStop = true;
q.WhenStopped().Do(() =>
{
this.AddInfoLog("quoting complete");
}).Once().Apply(this);
q.Start()
в чем может быть дело? логов пока нет, т.к. ошибка проявляется не всегда...
Комментарии (7)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Когда срабатывает правило WhenStopped, в стратегию котирования пришли уже все сделки?
нет. как раз проблема в том, что коллекция q.MyTrades пуста
На какой версии проверяете?
4.1.5 которая на сайте в box лежит (от 23 Октября)
Используйте свежую версию - 4.1.6 или 4.1.7
скачал с codeplex trunk. Проблема осталась. Код:
Логи: 2012/11/23 15:05:30.655| |MQS_VTBR-12.12@RTS_SPBFUT00360|Стратегия запущена. [0,2]. Позиция при старте 0. 2012/11/23 15:05:30.655| |MQS_VTBR-12.12@RTS_SPBFUT00360|Котирование на Buy объема 1. 2012/11/23 15:05:30.655| |MQS_VTBR-12.12@RTS_SPBFUT00360|Приостановка правил. _rulesSuspendCount 1. 2012/11/23 15:05:30.655| |MQS_VTBR-12.12@RTS_SPBFUT00360|Возобновление правил. _rulesSuspendCount 0. 2012/11/23 15:05:30.655| |MQS_VTBR-12.12@RTS_SPBFUT00360|Цена текущей NULL и лучшей 5224. 2012/11/23 15:05:30.655| |MQS_VTBR-12.12@RTS_SPBFUT00360|Лучший бид 5223 и лучший аск 5226. 2012/11/23 15:05:30.655| |MQS_VTBR-12.12@RTS_SPBFUT00360|Регистрация новой заявки на Buy с ценой 5224 и объемом 1. 2012/11/23 15:05:30.655| |QuikTrader|RegisterOrder: 53424961/0 Покупка Цена=5224 Объем=1 Сост=None Бал=1 2012/11/23 15:05:30.936| |QuikTrader|New order: 53424961/9496997436 Покупка Цена=5224 Объем=1 Сост=Active Бал=1 2012/11/23 15:05:30.936| |MQS_VTBR-12.12@RTS_SPBFUT00360|Заявка 53424961 принята биржей. 2012/11/23 15:05:30.936| |MQS_VTBR-12.12@RTS_SPBFUT00360|Сброс счетчика ошибок регистрации с 0 до нуля. 2012/11/23 15:05:30.936| |QuikTrader|Order changed: 53424961/9496997436 Покупка Цена=5224 Объем=1 Сост=Active Бал=1 2012/11/23 15:06:26.342| |MQS_VTBR-12.12@RTS_SPBFUT00360|Цена текущей 5224 и лучшей 5226. 2012/11/23 15:06:26.342| |MQS_VTBR-12.12@RTS_SPBFUT00360|Лучший бид 5225 и лучший аск 5226. 2012/11/23 15:06:26.342| |MQS_VTBR-12.12@RTS_SPBFUT00360|Котирование заявки 53424961 на Buy с ценой 5224 объемом 1. 2012/11/23 15:06:26.342| |MQS_VTBR-12.12@RTS_SPBFUT00360|Отмена заявки 53424961. 2012/11/23 15:06:26.342| |MQS_VTBR-12.12@RTS_SPBFUT00360|Отмена заявки 53424961. 2012/11/23 15:06:26.342| |QuikTrader|CancelOrder: 53424961/9496997436 Покупка Цена=5224 Объем=1 Сост=Active Бал=1 2012/11/23 15:06:26.671| |QuikTrader|Order changed: 53424961/9496997436 Покупка Цена=5224 Объем=1 Сост=Done Бал=1 2012/11/23 15:06:26.671| |MQS_VTBR-12.12@RTS_SPBFUT00360|Заявка 53424961 была снята. Время снятия 11/23/2012 15:02:50. 2012/11/23 15:06:26.671| |MQS_VTBR-12.12@RTS_SPBFUT00360|Цена текущей NULL и лучшей 5226. 2012/11/23 15:06:26.671| |MQS_VTBR-12.12@RTS_SPBFUT00360|Лучший бид 5225 и лучший аск 5226. 2012/11/23 15:06:26.671| |MQS_VTBR-12.12@RTS_SPBFUT00360|Регистрация новой заявки на Buy с ценой 5226 и объемом 1. 2012/11/23 15:06:26.671| |QuikTrader|RegisterOrder: 53424964/9497010537 Покупка Цена=5226 Объем=1 Сост=Done Бал=0 2012/11/23 15:06:26.905| |QuikTrader|New order: 53424964/9497010537 Покупка Цена=5226 Объем=1 Сост=Done Бал=0 2012/11/23 15:06:26.905| |MQS_VTBR-12.12@RTS_SPBFUT00360|Новая позиция: SPBFUT00360-VTBR-12.12@RTS=1. 2012/11/23 15:06:26.905| |MQS_VTBR-12.12@RTS_SPBFUT00360|Позиция изменилась на 1. Оставшийся объем 0. 2012/11/23 15:06:26.905| |MQS_VTBR-12.12@RTS_SPBFUT00360|Заканчиваем котирование. 2012/11/23 15:06:26.905| |MQS_VTBR-12.12@RTS_SPBFUT00360|Стратегия останавливается. [0,1]. Позиция при старте 1. 2012/11/23 15:06:26.905| |MQS_VTBR-12.12@RTS_SPBFUT00360|Правило 'Изменение стакана инструмента VTBR-12.12@RTS (0x83A5F8)'. Приостановлено. 2012/11/23 15:06:26.905| |MQS_VTBR-12.12@RTS_SPBFUT00360|Стратегия остановлена. [0,1]. Позиция при старте 1. 2012/11/23 15:06:26.905| VTBR: Computing enter price. Quoter's position is 1, average price of the trades is 0, position in security is -2
q.MyTrades.GetAveragePrice() выдает 0, т.к. в q.MyTrades нет трейдов.
Сейчас сделано таким образом, что для использования WaitAllTrades свойство CancelOrdersWhenStopping должно быть true.