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


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


Теги:


Спасибо:


< 1 2 
Alexander

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


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

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

Спасибо:

frontman

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


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

Спасибо:

Alexander

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


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 в последней ревизии.

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

Спасибо:

frontman

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


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

Спасибо:

frontman

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


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

Спасибо:

frontman

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


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

Спасибо:

Alexander

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


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

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

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

frontman

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


Все. Спасибо...

Спасибо:
< 1 2 

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

loading
clippy