Столкнулся со следующей проблемой: иногда правило 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()
в чем может быть дело? логов пока нет, т.к. ошибка проявляется не всегда...
Kommentare (7)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Когда срабатывает правило 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.