Некорректная работа Order.Canceled()

Некорректная работа Order.Canceled()
Atom
11/8/2011
frontman


Правило некорректно срабатывает если происходит частичное исполнение заявки. Т.е если заявка частично сработала правило Order.Canceled() срабатывает. Подозреваю что это связанно с тем, что правило скорее всего правило активизируется при смене статуса заявки на Done, а этот статус и у исполненной частично заявки и у отмененной заявки!
Сам я к сожалению не могу посмотреть внутренности Order.Canceled() , так что это только предположение...

Tags:


Thanks:


< 1 2 
Alexander

Avatar
Date: 11/8/2011
Reply


frontman
Использую версию 11103.
Понят. Ок.


Посмотрите почему статус на Done меняется. Это должно происходить только когда Balance = 0
Thanks:

frontman

Avatar
Date: 11/8/2011
Reply


Да. При этом баланс не был 0 у заявки.
Done - "Заявка больше не активна на бирже (была полностью удовлетворена или снята из программы" .
Разве если заявка снята у нее Balance = 0?
Thanks:

Alexander

Avatar
Date: 11/8/2011
Reply


frontman
Да. При этом баланс не был 0 у заявки.
Done - "Заявка больше не активна на бирже (была полностью удовлетворена или снята из программы" .
Разве если заявка снята у нее Balance = 0?


Ещё раз.
1) Заявка может быть удалена с биржи - вызван Cancel. Тогда State = Done, Balance != 0.
Событие Order.Canceled() срабатывает
2) Заявка может быть переведена в состояние Done когда Balance становится = 0.

Вам необходимо проверить почему и где у вас переходит в состояние Done когда вы
1) и не снимаете заявку с биржи
2) и не Balance = 0.

801\808 строчки в PlazaTrader.cs в последней ревизии.

Ещё детальнее расписать не могу - проще уже будет самому смотреть :)
Thanks:

frontman

Avatar
Date: 11/8/2011
Reply


Ва ха)) Спасиб)
Thanks:

frontman

Avatar
Date: 11/8/2011
Reply


Если честно у меня вызывает сомнения данный кусок:
case 2: // исполнена
order.State = OrderStates.Done;
order.Balance = lastRecord.Get<decimal>(metadata.AmountRest);
break;
Thanks:

frontman

Avatar
Date: 11/8/2011
Reply


Т.е и статус у заявки уже Done, но при этом баланс еще не ноль...
Thanks:

Alexander

Avatar
Date: 11/8/2011
Reply


frontman
Если честно у меня вызывает сомнения данный кусок:
case 2: // исполнена
order.State = OrderStates.Done;
order.Balance = lastRecord.Get<decimal>(metadata.AmountRest);
break;


Правильно, я уже выше сказал что это старая версия, исправил это давно.
Сейчас так:

Code
					case 2: // исполнена
						order.Balance = lastRecord.Get<decimal>(metadata.AmountRest);
						if (order.Balance == 0)
							order.State = OrderStates.Done;
						break;
Thanks:

frontman

Avatar
Date: 11/8/2011
Reply


Все. Спасибо...
Thanks:
< 1 2 

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

loading
clippy