[BUG] Лимитированные заявки исполняются по неправильной цене!


[BUG] Лимитированные заявки исполняются по неправильной цене!
Atom
7/22/2011


Тестирование на реале.

Ситуация ниже похожа на багу:

по логу видно текущий бест аск:
22.07.2011 11:47:36.825 BestAsk:197005,00; BestBid:197000,00

далее видно отправку мною лимитированного(!) ордера на продажу по 197010,00
22.07.2011 11:47:36.828 RegisterOrder: Ok! sec=RIU1 dir=SELL vol=1 price=197010,00

далее в логе видно новые бест аски - либо я установил эти уровни либо я присоединился к этим уровням в стакане
22.07.2011 11:47:37.785 BestAsk:197010,00; BestBid:197000,00
22.07.2011 11:47:38.859 BestAsk:197010,00; BestBid:197000,00
22.07.2011 11:47:39.782 BestAsk:197010,00; BestBid:197000,00

а далее видно что мой ордер исполнился по более высокой цене - как будто он только что долетел до стакана и был выполнен по маркету
22.07.2011 11:47:40.456 Trade id=3 sec=RIU1 dir=SELL vol=1 price=197015

22.07.2011 11:47:40.966 BestAsk:197030,00; BestBid:197015,00

т.о. либо бага в алгоритме выполнения ордеров,
либо их выполнение тормозит - т.е. ордер как-будто "долетел" только 3-4 секунды спустя.



Thanks:


1 2  >
President

Avatar
Date: 7/22/2011
Reply


сейчас смотрю логи и вижу аналогичные задержки и по 7 секунд
Thanks:

pyhta4og

Avatar
Date: 7/22/2011
Reply


Ваш limit-sell на 197010 дождался в эмуляторе прихода Bid=197015. Стало возможным исполнить вашу заявку. Поскольку неразумный человек кинул лимитку на покупку (BId=197015) выше вашего Ask, то ваша заявка исполнилась по лучшей цене. А его - ровно по той что он заказывал.

Почему вам это не нравится?
Thanks:

Alexander

Avatar
Date: 7/22/2011
Reply


pyhta4og Go to
Ваш limit-sell на 197010 дождался в эмуляторе прихода Bid=197015. Стало возможным исполнить вашу заявку. Поскольку неразумный человек кинул лимитку на покупку (BId=197015) выше вашего Ask, то ваша заявка исполнилась по лучшей цене. А его - ровно по той что он заказывал.

Почему вам это не нравится?


В реале исполнится по 197010 потому что. Если приходит Bid с ценой >= цены лимит - надо исполнять по цене лимит, имхо.

представь ситуацию: мы ставим лимит офер на 100, кто-то кидает бид по 110. должно исполняться ведь по 100, а не по 110.
Thanks:

President

Avatar
Date: 7/22/2011
Reply


лимитная заявка съедает все встречные уровни (если такие есть) до своей лимитированной цены включительно, а затем если в заявке еще чтото осталось она размещается на этом уровне. и ждет пока ее ктонибудь съест (или отменят)

так что или бага или сильные тормоза
Thanks:

pyhta4og

Avatar
Date: 7/27/2011
Reply


Т.е. я правильно понял, что общественность считает, что если мы кинули Аск на 197010, и она висит, а потом чел кинул Бид на 197015 и наш Аск 197010 лучший, то и нас и чела надо филить по 197010? А собственно почему не по 197015?


С точки зрения биржи есть пара заявок которые можно свести. Она Может свести челу продажу по 197015, нам покупку по 197010 и 5 пунктов положить себе в карман. Но это уж как-то слишком жирно для биржи.

Поэтому мне кажется она кому-то из двух этих участников зафилит по лУчшей цене чем участник заказывал. А поскольку я первый кинул, то логично что мне - я первый в очереди. Поэтому мы и закодили, что нас пофилят по 197015.


Если вы не согласны со мной, напишите как делать. Можно тупо сымиитировать жадную биржу, т.е. в данной ситуации филить наш Аск на 197010 ровно по 197010 provided that есть живой BID>=197010

Thanks:

Alexander

Avatar
Date: 7/27/2011
Reply


pyhta4og Go to
Т.е. я правильно понял, что общественность считает, что если мы кинули Аск на 197010, и она висит, а потом чел кинул Бид на 197015 и наш Аск 197010 лучший, то и нас и чела надо филить по 197010? А собственно почему не по 197015?


С точки зрения биржи есть пара заявок которые можно свести. Она Может свести челу продажу по 197015, нам покупку по 197010 и 5 пунктов положить себе в карман. Но это уж как-то слишком жирно для биржи.

Поэтому мне кажется она кому-то из двух этих участников зафилит по лУчшей цене чем участник заказывал. А поскольку я первый кинул, то логично что мне - я первый в очереди. Поэтому мы и закодили, что нас пофилят по 197015.


Если вы не согласны со мной, напишите как делать. Можно тупо сымиитировать жадную биржу, т.е. в данной ситуации филить наш Аск на 197010 ровно по 197010 provided that есть живой BID>=197010




Это только не общественность считает, а биржа считает так :)
Если стоит аск по 10, а кто-то кинул бид по 1000 - то исполнится наша заявка именно по той лимитной цене, которую мы указали - 10, но никак не 1000.


Если заявки лимитные и объёмы второй заявки не больше объёма первой заявки - то всегда сделка исполняется по цене первой заявки.
Если объём второй заявки больше объёма первой заявки - то просто будет собран стакан до цены не хуже чем у второй заявки. Если останется какой-то объём неисполненным - по цене второй заявки будет выставлена заявка с остатком объёма.
Thanks:

President

Avatar
Date: 8/4/2011
Reply


По крайней мере при тестировании на истории бага работает и в другую сторону - отправляю приказ на продажу по цене 1234, рассчитывая на исполнение по рынку
в этот момент Ask=10311.60, Bid=10310.00
а получаю трейд по цене 1234
Thanks:

hobo

Avatar
Date: 8/30/2011
Reply


В 3.2.10(может и раньше) опять это поведение вернулось: при регистрации Sell, цена сделки равна цене лимитированной заявки, даже если она хуже бида.
Thanks:

Mikhail Sukhov

Avatar
Date: 9/8/2011
Reply


hobo Go to
В 3.2.10(может и раньше) опять это поведение вернулось: при регистрации Sell, цена сделки равна цене лимитированной заявки, даже если она хуже бида.


Возобновим тогда выяснение. Тестирование - это EmulationTrader или RealTimeTrader? Если первое, то стаканы которые сохранены или которые сгенерированы?
Thanks:

hobo

Avatar
Date: 9/9/2011
Reply


EmulationTrader.
Сгенерированы через TrendMarketDepthGenerator.
Собственно вот пример стакана на момент заявки, самой заявки и сделки по ней.
Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy