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


Может кто подсказать как разобраться с проблемой? Вчера обнаружил что MQS в каких-то случаях выполняет задачу в двойном размере. Я завел [url=http://stocksharp.com/forum/2353/Niepravil-noie-znachieniie-v-PositionManager-Position/]топик[/url] и выложил там более полное описание, возможно, что название не совсем корректное. Сегодня на другом инструменте столкнулся опять с той же самой проблемой. Судя по журналу MQS пытается переставить заявку в данном случае 42133045, а она к этому моменту уже выполнена. Причем получив ошибку "Вы не можете снять данную заявку" выставляет [b]новую[/b] заявку.

13:13:01.880 | | MQS | Перекотирование зарегистрировано для заявки [b]42133045 [/b]на Buy с ценой 30295 объемом 1. 13:13:02.145 | Error | MQS | Заявка 42133045 не была принята по причине System.InvalidOperationException: Сервер для транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=[b]42133045[/b]; CLASSCODE=SPBFUT; SECCODE=SiH2; MODE=0; FIRST_ORDER_NUMBER=0; FIRST_ORDER_NEW_PRICE=30295; FIRST_ORDER_NEW_QUANTITY=1;' вернул неправильное сообщение '[b]Вы не можете снять данную заявку[/b]' по передвинутым заявкам.. 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 | [b]Регистрация новой заявки[/b] на Buy с ценой 30295 и объемом 1.

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


Теги:


Спасибо:


1 2 3  >
ak

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


Столкнулся с такой же проблемой дважды причем подряд (QuikTrader, 4.0.17).

[code=csharp] var takeProfit = new TakeProfitStrategy(trade, this.TakeProfitUnit) ; var stopLoss = new StopLossStrategy(trade, StopLossUnit) ;

ChildStrategies.Add(new TakeProfitStopLossStrategy(takeProfit, stopLoss)); [/code]

Один раз для TP стратегии, второй раз для SL - симптомы те же, исполняются 2 одинаковые по цене заявки с минимальной разницей во времени. Лог одного из случаев (SL):

[quote] SLS | 31.01.2012 13:13:11 || Защита активирована. SLS | 31.01.2012 13:13:11 || Регистрация защитного котирования. MQS | 31.01.2012 13:13:11 || Стратегия запущена. MQS | 31.01.2012 13:13:11 || Котирование на Sell объема 1. MQS | 31.01.2012 13:13:11 || Цена текущей NULL и лучшей 9080. MQS | 31.01.2012 13:13:11 || Лучший бид 9078 и лучший аск 9080. MQS | 31.01.2012 13:13:11 || Регистрация новой заявки на Sell с ценой 9080 и объемом 1. MQS | 31.01.2012 13:13:11 || Заявка 38516284 на Sell отправлена с ценой 9080 объемом 1. SLS | 31.01.2012 13:13:11 || Цена текущей NULL и лучшей 9080. SLS | 31.01.2012 13:13:11 || Лучший бид 9078 и лучший аск 9080. SLS | 31.01.2012 13:13:11 || Регистрация новой заявки на Sell с ценой 9080 и объемом 1. SLS | 31.01.2012 13:13:11 || Заявка 38516285 на Sell отправлена с ценой 9080 объемом 1. [b]MQS | 31.01.2012 13:13:11 || Заявка 38516284 принята биржей. SLS | 31.01.2012 13:13:11 || Заявка 38516285 принята биржей.[/b] EmaCore | 31.01.2012 13:13:12 || Новая позиция 0. Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: 0, Latency: 00:00:00.5404569 Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: 0, Latency: 00:00:01.0506864 TPSLS | 31.01.2012 13:13:12 || Новая позиция -1. SLS | 31.01.2012 13:13:12 || Новая позиция -1. SLS | 31.01.2012 13:13:12 || Позиция изменилась на -1. Оставшийся объем 0. SLS | 31.01.2012 13:13:12 || Заканчиваем котирование. TPSLS | 31.01.2012 13:13:12 || Стратегия останавливается. Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: 0, Latency: 00:00:01.0506864 TPS | 31.01.2012 13:13:12 || Заканчиваем котирование с неисполненным объемом равный 1. TPS | 31.01.2012 13:13:12 || Стратегия останавливается. TPS | 31.01.2012 13:13:12 || Стратегия остановлена. SLS | 31.01.2012 13:13:12 || Отмена заявки 38516285. SLS | 31.01.2012 13:13:12 || Стратегия останавливается. MQS | 31.01.2012 13:13:12 || Заканчиваем котирование с неисполненным объемом равный 1. MQS | 31.01.2012 13:13:12 || Стратегия останавливается. MQS | 31.01.2012 13:13:12 || Стратегия остановлена. TPSLS | 31.01.2012 13:13:12 || Стратегия остановлена. EmaCore | 31.01.2012 13:13:12 || Новая позиция -1. Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: -1, Latency: 00:00:01.0506864 Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: -1, Latency: 00:00:01.5628213 EmaCore | 31.01.2012 13:13:12 || Новая Sell сделка 497392045 по цене 9080 на 1 заявки 38516284. Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: -1, Latency: 00:00:01.5628213 Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -37 :(, Slippage: 1, Position: -1, Latency: 00:00:01.5628213 Main App | 31.01.2012 13:13:12 || I've sold 1 futures contracts at 9080 EmaCore | 31.01.2012 13:13:12 || Новая Sell сделка 497392046 по цене 9080 на 1 заявки 38516285. Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -37 :(, Slippage: 1, Position: -1, Latency: 00:00:01.5628213 Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -37 :(, Slippage: 1, Position: -1, Latency: 00:00:01.5628213 Main App | 31.01.2012 13:13:12 || I've sold 1 futures contracts at 9080 [/quote]

Кто может помочь советом, как починить?

Спасибо:

Serg

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


А можно посмотреть код MarketQuotingStrategy? если это квик то тут скорее всего проблема с тем что приходит раньше(заявка/сделка).

Спасибо:

Mikhail Sukhov

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


[quote=ak;16085] [quote] [b]MQS | 31.01.2012 13:13:11 || Заявка 38516284 принята биржей. SLS | 31.01.2012 13:13:11 || Заявка 38516285 принята биржей.[/b] EmaCore | 31.01.2012 13:13:12 || Новая позиция 0. [/quote]

Кто может помочь советом, как починить?[/quote]

А что чинить? Заявка зарегистрирована на бирже. Нужно сделать так, чтобы она не могла зарегистрироваться?

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

Спасибо:

ak

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


OK. Михаил, поясните пожалуйста еще раз.

Есть стратегия:

[code=csharp] var stopLoss = new StopLossStrategy(trade, StopLossUnit) ; [/code]

Я предполагаю, что выставив фалг UseQuoting, при касании ценой StopLossUnit, стратегия SLS создаст стратегию MQS, которая, выставляя лимитные ордера, и двигая их по необходимости, добьется исполнения защитного ордера. Затем завершится сама MQS (поражденная SLS стратегией), а затем и родительская SLS.

По факту исполняется 2а ордера с одинаковым объемом, причем:

[b]1ый ордер[/b] создается MQS стратегией:

[quote] MQS | 31.01.2012 13:13:11 || Регистрация новой заявки на Sell с ценой 9080 и объемом 1. MQS | 31.01.2012 13:13:11 || Заявка 3851628[b]4[/b] на Sell отправлена с ценой 9080 объемом 1. [/quote]

[b]2ой ордер[/b] создается SLS стратегией:

[quote] SLS | 31.01.2012 13:13:11 || Регистрация новой заявки на Sell с ценой 9080 и объемом 1. SLS | 31.01.2012 13:13:11 || Заявка 3851628[b]5[/b] на Sell отправлена с ценой 9080 объемом 1. [/quote]

Естественно, если выставить флаг UseQuoting в false, никакого дублирования не происходит. Так же как и обычные (не защитные) MQS стратегии отрабатывают нормально.

Откуда берется второй ордер?

Спасибо:

vfreeman

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


[quote=ak;16085]Столкнулся с такой же проблемой дважды причем подряд (QuikTrader, 4.0.17).

[code=csharp] var takeProfit = new TakeProfitStrategy(trade, this.TakeProfitUnit) ; var stopLoss = new StopLossStrategy(trade, StopLossUnit) ;

ChildStrategies.Add(new TakeProfitStopLossStrategy(takeProfit, stopLoss)); [/code]

Один раз для TP стратегии, второй раз для SL - симптомы те же, исполняются 2 одинаковые по цене заявки с минимальной разницей во времени. Лог одного из случаев (SL):

Кто может помочь советом, как починить?[/quote]

мне помогло Security.Exchange.IsSupportAtomicReRegister = false

Спасибо:

ak

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


Благодарю за совет, обязательно попробую! Но вероятно у меня все же другая ошибка, потому что обычные MQS, созданные мной, вроде этой:

[code=csharp] MarketQuotingStrategy marketQuotingStrategy = new MarketQuotingStrategy(order, new Unit(), new Unit()); base.ChildStrategies.Add(marketQuotingStrategy); [/code]

работают нормально, происходит переставление ордера (без ошибок, которые появлялись у вас) и исполнение приказа без дублирования ордеров. А вот внутри защитных стратегий - дублируются.

Важное дополнение: при использовании RealTimeEmulationTrader вместо QuikTrader ошибка не реплицируется. На QuikTrader повторяется в 100% случаев у меня.

Спасибо:

ak

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


Проблема сохраняется, флаг Security.Exchange.IsSupportAtomicReRegister = false не помог.

Спасибо:

ET

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


_

Спасибо:

Moadip

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


MQS конкурирует со своими заявками. Хотя в [url=http://stocksharp.com/posts/m/4158/]этом[/url] посте написано что нет.

IsSupportAtomicReRegister = false IsAsyncMode = false

Это хорошо видно вечером или на неликвиде, когда стакан не двигается. Допустим мне надо скотировать один лот на продажу. Создается MQS, PriceOffset = Security.MinStepSize Например лучший бид 90, оффер 100, стакан не двигается. Так MQS будет постоянно снимать и переставлять заявку на 99,98,97. Т.е не держит ее на 99. Бывает что стратегия отрабатывает нормально, но в основном завершается с ошибкой

[img]http://i30.fastpic.ru/big/2012/0224/7d/08e78645c4f89265e0ab9411b07d197d.png[/img]

Плюс вопрос в конце [url=http://stocksharp.com/posts/m/16421/]данного[/url] поста тоже никак не решился.

Думал что что нибудь изменится в последней сборке 4.0.20 но ничего не изменилось.

Спасибо:

ET

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


_

Спасибо:
1 2 3  >

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

loading
clippy