MarketQuotingStrategy
Atom Ответить
20.09.2014


Изучаю поведение MarketQuotingStrategy и возник такой вопрос. Если выставлять тип цена Following и отступ от лучшей цены Bid/Ask больше 0, то в итоге получаем, что заявка выставляется в стакан как положено с учетом отступа, но MarketQuotingStrategy получает обновление стакана уже с учетом выставленной своей же заявки и считает, что лучшая цена изменилась и вновь переставляет свою заявку с учетом отступа. И это происходит до тех пор, пока заявка не придет на противоположный край спреда в стакане и не исполнится.
Подскажите, как или что нужно переопределить/указать/изменить в MarketQuotingStrategy, чтобы стакан она мониторила без учета всех моих заявок?
Код использую такой, проверял на низколиквидных инструментах с широким спредом в стакане:
Код

                    var v1 = new Unit(1, UnitTypes.Step, Security);
                    var v2 = new Unit(0, UnitTypes.Step, Security);
                    var strategy = new MarketQuotingStrategy(direction, volume)
                    {
                        PriceType = MarketPriceTypes.Following,//.Opposite,//.Middle,//
                        Volume = volume,
                        PriceOffset = v1,
                        BestPriceOffset = v2,
                    };
                    ChildStrategies.Add(strategy);


Теги:


Спасибо:




7 Ответов
Mikhail Sukhov

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


Спасибо:

Валентин Лебедев

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


Если у тебя будет BestPriceOffset >= PriceOffset, то такого происходить не будет, по крайней мере если судить по старым сорцам из паблика.
Спасибо: Mikhail Sukhov RomSunZ Andrii

RomSunZ

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


Чтобы не плодить тем еще один вопрос над которым я уже всю голову сломал.
Открываем позицию по RIZ (тестовый квик Церих) выше описанных методом и в PnL получаю всякую муру:
Цитата:

19:35:40.618| |PS_RIZ4@FORTS_SPBFUT00756|Начинаем котирование по RIZ4@FORTS направление покупка объем 1 реверс=False
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Переход из состояния Stopped в Started.
19:35:40.618| |MQS_RIZ4@FORTS_SPBFUT00756|Стратегия запущена. [0,1]. Позиция 0.
19:35:40.618| |MQS_RIZ4@FORTS_SPBFUT00756|Котирование на Buy объема 1.
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Приостановка правил. _rulesSuspendCount 1.
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Возобновление правил. _rulesSuspendCount 0.
19:35:40.618| |MQS_RIZ4@FORTS_SPBFUT00756|Цена текущей NULL и лучшей 114780.
19:35:40.618| |MQS_RIZ4@FORTS_SPBFUT00756|Лучший бид 114770 и лучший аск 114800.
19:35:40.618| |MQS_RIZ4@FORTS_SPBFUT00756|Регистрация новой Limit (0x471E6) заявки на Buy с ценой 114780 и объемом 1.
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Регистрация заявки 70469690/ (0xBD1D52)'. Подписалось на события.
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки 70469690/ (0x120EB7B)'. Подписалось на события.
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Полное исполнение 70469690/ (0x15BCA51)'. Подписалось на события.
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Полное исполнение 70469690/ (0x4E5EA8)'. Подписалось на события.
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Все сделки заявки 70469690/ (0x3E608C0)'. Подписалось на события.
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Отмена заявки 70469690/ (0x256457E)'. Подписалось на события.
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки 70469690/ (0x36725F)'. Подписалось на события.
19:35:40.618|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Ошибка снятия заявки 70469690/ (0x3766F33)'. Подписалось на события.
19:35:40.981|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:40.981|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Заявка 70469690 (0x471E6) в процессе регистрации.
19:35:41.066| |PS_RIZ4@FORTS_SPBFUT00756|PnL=0 Realised PnL=0 Unrealized PnL=0 Ask=114800 Bid=114780 Sec=RIZ4@FORTS
19:35:41.066| |PS_RIZ4@FORTS_SPBFUT00756|PnL=0 Realised PnL=0 Unrealized PnL=0 Ask=114800 Bid=114780 Sec=RIZ4@FORTS
19:35:41.066|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Регистрация заявки 70469690/2450692238 (0xBD1D52)'. Активация.
19:35:41.066| |MQS_RIZ4@FORTS_SPBFUT00756|Заявка 70469690 (0x471E6) принята биржей.
19:35:41.066| |MQS_RIZ4@FORTS_SPBFUT00756|Сброс счетчика ошибок регистрации с 0 до нуля.
19:35:41.066|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Регистрация заявки 70469690/2450692238 (0xBD1D52)'. Удаляется.
19:35:41.066|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Регистрация заявки 70469690/2450692238 (0xBD1D52)'. Освободило ресурсы.
19:35:41.066|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки 70469690/2450692238 (0x120EB7B)'. Удаляется.
19:35:41.066|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки 70469690/2450692238 (0x120EB7B)'. Освободило ресурсы.
19:35:41.066|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки 70469690/2450692238 (0x120EB7B)'. Удалено.
19:35:41.066|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Регистрация заявки 70469690/2450692238 (0xBD1D52)'. Удаление.
19:35:41.066|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки 70469690/2450692238 (0x120EB7B)'. Удаление.
19:35:41.066| |PS_RIZ4@FORTS_SPBFUT00756|PnL=0 Realised PnL=0 Unrealized PnL=0 Ask=114800 Bid=114780 Sec=RIZ4@FORTS
19:35:41.097|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:41.342|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:41.596|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:42.113|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:42.360|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:42.621|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:42.886|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:43.145|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:43.390|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:43.652|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:43.908|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:44.180|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:44.248|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:44.511|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:45.031|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:45.297|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:45.776|Debug |MQS_RIZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента RIZ4@FORTS (0x2831D96)'. Активация.
19:35:46.023| |PS_RIZ4@FORTS_SPBFUT00756|Новая Buy сделка 116513939 по цене 114780 на 1 заявки 70469690.
19:35:46.023| |PS_RIZ4@FORTS_SPBFUT00756|PnL=-114780 Realised PnL=0 Unrealized PnL=-114780 Ask=114800 Bid=114770 Sec=RIZ4@FORTS
19:35:46.023| |PS_RIZ4@FORTS_SPBFUT00756|PnL=-114780 Realised PnL=0 Unrealized PnL=-114780 Ask=114800 Bid=114770 Sec=RIZ4@FORTS
19:35:46.023| |PS_RIZ4@FORTS_SPBFUT00756|Новая позиция: SPBFUT00756-RIZ4@FORTS=1.
19:35:46.023| |PS_RIZ4@FORTS_SPBFUT00756|PnL=-114780 Realised PnL=0 Unrealized PnL=-114780 Ask=114800 Bid=114770 Sec=RIZ4@FORTS
19:35:46.023| |PS_RIZ4@FORTS_SPBFUT00756|По заявке котирования новая сделка средняя цена=114780 объем=1 время первой сделки=23.09.2014 16:35:47 время последней=23.09.2014 16:35:47 проскальзывание= задержка=
19:35:46.023| |PS_RIZ4@FORTS_SPBFUT00756|Кол-во стратегий в порцессе работы осталось: 0
19:36:35.535| |PS_RIZ4@FORTS_SPBFUT00756|PnL=-231.37260 Realised PnL=0 Unrealized PnL=-231.37260 Ask=114750 Bid=114740 Sec=RIZ4@FORTS
19:36:35.535| |PS_RIZ4@FORTS_SPBFUT00756|PnL=-231.37260 Realised PnL=0 Unrealized PnL=-231.37260 Ask=114750 Bid=114740 Sec=RIZ4@FORTS


Стоимость шага цены из таблицы инструментов 7,71242, лот=1, шаг цены=10.
Почему сразу после открытия позиции PnL=-114780 вместо нуля и почему он дальше считает непонятную цифру без учета шага цены (в 10 раз больше, чем нужно)?

Открыл пример quik sample, там в таблице инструментов у всех инструментов шаг стоит как по умолчанию 0,01
Автор топика
Спасибо:

RomSunZ

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


А в ответ тишина...

Еще такая проблема с котированием, стратегия не может переставить заявку:

Цитата:

14:40:16.593|Debug |MQS_GAZP@TQBR_10756|Заявка 52450048 (0x3822C8B) в процессе перерегистрации на заявку 52450051 (0xA221EB).
14:40:16.692| |PS_GAZP@TQBR_10756|PnL=-86.49 Realised PnL=-0.49 Unrealized PnL=-86.00 Ask=137.42 Bid=137.37 Sec=GAZP@TQBR
14:40:16.692|Error |MQS_GAZP@TQBR_10756|Заявка 52450048 (0x3822C8B) не была отменена по причине System.InvalidOperationException: Сервер для транзакции 'ACTION=MOVE_ORDERS; CLASSCODE=TQBR; SECCODE=GAZP; MODE=0; FIRST_ORDER_NUMBER=1468216; FIRST_ORDER_NEW_PRICE=137.41; FIRST_ORDER_NEW_QUANTITY=0; TRANS_ID=52450051;' вернул неправильное сообщение ' Указанная транзакция по указанному классу не найдена: "TQBR".' по передвинутым заявкам..
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Ошибка снятия заявки 52450048/1468216 (0x227AAE5)'. Активация.
14:40:16.692|Error |PS_GAZP@TQBR_10756|Заявка 52450051 (0xA221EB) не была принята по причине System.InvalidOperationException: Сервер для транзакции 'ACTION=MOVE_ORDERS; CLASSCODE=TQBR; SECCODE=GAZP; MODE=0; FIRST_ORDER_NUMBER=1468216; FIRST_ORDER_NEW_PRICE=137.41; FIRST_ORDER_NEW_QUANTITY=0; TRANS_ID=52450051;' вернул неправильное сообщение ' Указанная транзакция по указанному классу не найдена: "TQBR".' по передвинутым заявкам..
14:40:16.692|Error |MQS_GAZP@TQBR_10756|Заявка 52450051 (0xA221EB) не была принята по причине System.InvalidOperationException: Сервер для транзакции 'ACTION=MOVE_ORDERS; CLASSCODE=TQBR; SECCODE=GAZP; MODE=0; FIRST_ORDER_NUMBER=1468216; FIRST_ORDER_NEW_PRICE=137.41; FIRST_ORDER_NEW_QUANTITY=0; TRANS_ID=52450051;' вернул неправильное сообщение ' Указанная транзакция по указанному классу не найдена: "TQBR".' по передвинутым заявкам..
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Ошибка регистрации заявки 52450051/ (0x27FE98A)'. Активация.
14:40:16.692|Error |MQS_GAZP@TQBR_10756|Заявка 52450051 (0xA221EB) не была принята по причине 'Сервер для транзакции 'ACTION=MOVE_ORDERS; CLASSCODE=TQBR; SECCODE=GAZP; MODE=0; FIRST_ORDER_NUMBER=1468216; FIRST_ORDER_NEW_PRICE=137.41; FIRST_ORDER_NEW_QUANTITY=0; TRANS_ID=52450051;' вернул неправильное сообщение ' Указанная транзакция по указанному классу не найдена: "TQBR".' по передвинутым заявкам.'.
14:40:16.692| |MQS_GAZP@TQBR_10756|Текущее кол-во ошибок 1. Максимальное 100.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Ошибка регистрации заявки 52450051/ (0x27FE98A)'. Удаляется.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Ошибка регистрации заявки 52450051/ (0x27FE98A)'. Освободило ресурсы.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Регистрация заявки 52450051/ (0x19B24E4)'. Удаляется.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Регистрация заявки 52450051/ (0x19B24E4)'. Освободило ресурсы.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Регистрация заявки 52450051/ (0x19B24E4)'. Удалено.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Полное исполнение 52450051/ (0x276C9C3)'. Удаляется.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Полное исполнение 52450051/ (0x276C9C3)'. Освободило ресурсы.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Полное исполнение 52450051/ (0x276C9C3)'. Удалено.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Ошибка регистрации заявки 52450051/ (0x27FE98A)'. Удаление.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Регистрация заявки 52450051/ (0x19B24E4)'. Удаление.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Полное исполнение 52450051/ (0x276C9C3)'. Удаление.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Отмена заявки 52450051/ (0x34BF142) OR Полное исполнение 52450051/ (0x2B8C0FE) OR Все сделки заявки 52450051/ (0x1C7284D) OR Ошибка регистрации заявки 52450051/ (0x3A41CA9)'. Активация.
14:40:16.692| |MQS_GAZP@TQBR_10756|Заявка 52450051 (0xA221EB) больше не активна.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Отмена заявки 52450051/ (0x34BF142) OR Полное исполнение 52450051/ (0x2B8C0FE) OR Все сделки заявки 52450051/ (0x1C7284D) OR Ошибка регистрации заявки 52450051/ (0x3A41CA9)'. Удаляется.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Отмена заявки 52450051/ (0x34BF142)'. Освободило ресурсы.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Полное исполнение 52450051/ (0x2B8C0FE)'. Освободило ресурсы.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Все сделки заявки 52450051/ (0x1C7284D)'. Освободило ресурсы.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Полное исполнение 52450051/ (0x2B8C0FE) OR Все сделки заявки 52450051/ (0x1C7284D)'. Освободило ресурсы.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Ошибка регистрации заявки 52450051/ (0x3A41CA9)'. Освободило ресурсы.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Отмена заявки 52450051/ (0x34BF142) OR Полное исполнение 52450051/ (0x2B8C0FE) OR Все сделки заявки 52450051/ (0x1C7284D) OR Ошибка регистрации заявки 52450051/ (0x3A41CA9)'. Освободило ресурсы.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Ошибка снятия заявки 52450051/ (0x1FEA431)'. Удаляется.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Ошибка снятия заявки 52450051/ (0x1FEA431)'. Освободило ресурсы.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Ошибка снятия заявки 52450051/ (0x1FEA431)'. Удалено.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Отмена заявки 52450051/ (0x34BF142) OR Полное исполнение 52450051/ (0x2B8C0FE) OR Все сделки заявки 52450051/ (0x1C7284D) OR Ошибка регистрации заявки 52450051/ (0x3A41CA9)'. Удаление.
14:40:16.692|Debug |MQS_GAZP@TQBR_10756|Правило 'Ошибка снятия заявки 52450051/ (0x1FEA431)'. Удаление.
14:40:16.811|Debug |MQS_GAZP@TQBR_10756|Правило 'Изменение стакана инструмента GAZP@TQBR (0x237DDC0)'. Активация.
14:40:16.811|Debug |MQS_GAZP@TQBR_10756|Перерегистрация не была выполнена. Ожидание исполнения заявки 52450048 (0x3822C8B).
14:40:16.906|Debug |MQS_GAZP@TQBR_10756|Правило 'Изменение стакана инструмента GAZP@TQBR (0x237DDC0)'. Активация.
14:40:16.906|Debug |MQS_GAZP@TQBR_10756|Перерегистрация не была выполнена. Ожидание исполнения заявки 52450048 (0x3822C8B).
14:40:17.022|Debug |MQS_GAZP@TQBR_10756|Правило 'Изменение стакана инструмента GAZP@TQBR (0x237DDC0)'. Активация.


С чем может быть связано?
Автор топика
Спасибо:

RomSunZ

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


И еще вопрос, как в marketquotingstrategy бороться с ошибкой "Идет пром. клиринг, нельзя совершать торговые операции"?
Возникает в случае, когда котирование началось перед клирингом, но заявки не успели исполниться.
Автор топика
Спасибо:

Andrii

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


viosee Перейти
Если у тебя будет BestPriceOffset >= PriceOffset, то такого происходить не будет, по крайней мере если судить по старым сорцам из паблика.

А в чем разница между BestPriceOffset и PriceOffset ? что это параметры означают?
Спасибо:

Andrii

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


Andrii Перейти
viosee Перейти
Если у тебя будет BestPriceOffset >= PriceOffset, то такого происходить не будет, по крайней мере если судить по старым сорцам из паблика.

А в чем разница между BestPriceOffset и PriceOffset ? что это параметры означают?


что будет если BestPriceOffset и PriceOffset будут равны?

Код
BestPriceOffset = PriceOffset = new Unit(1, UnitTypes.Step, Security);


  • заявка будет дублировать лучшею цену?
  • что будет в случае, при покупке, если лучшая цена изменница в меньшую сторону, цена заявки останется или тоже уменьшится? как сделать, чтобы уменьшилась и как чтобы продолжала висеть?
Спасибо:


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

loading
clippy