Удаление правил, исключение


Удаление правил, исключение
Atom Reply
7/26/2012


Есть следующий код:

order
.WhenCanceled()
.Do(o =>
{
...
})
.Once()
.Apply(this);

order
.WhenRegisterFailed()
.Do(fail =>
{
...
})
.Once()
.Apply(this);

order
.WhenMatched()
.Do(o => {
Rules.Remove(order.WhenRegisterFailed()); Тут выдается исключение
Rules.Remove(order.WhenCanceled());
})
.Once()
.Apply(this);

Выдается исключение при попытке удалить правило (на самом деле любых правил) Rules.Remove(order.WhenRegisterFailed()):

System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта.
в #=qa_4zGoLcsro_feFbb0XM96ZE7LOy5hveNYH9wnxFE2w=.OnRemoving(IMarketRule #=qju3lJ7K286dxREWSpw8cmg==)
в Ecng.Collections.BaseCollection`2.Remove(TItem item)
в Ecng.Collections.SynchronizedCollection`2.Remove(TItem item)
в StockSharp.Algo.Strategies.DeltaHedgeStrategy.<>c__DisplayClassc.<ReHedge>b__8(Order o) в D:\work\PROG\Projects\StockSharp 4.1.3\Strategies\VolatilityTradingStrategy\DeltaHedgeStrategy.cs:строка 202
в StockSharp.Algo.MarketRule`2.#=q6_Dj$NpGFM71HHUqmQhQ0G5RZlYBsJ6Wee9kQg_qgVo=()
в StockSharp.Algo.MarketRuleHelper.#=qw7TgNQ_P_7uPcYTNTLttHg==(IMarketRuleContainer #=qTNAYzkNQSqZjn9BvAkH9cA==, IMarketRule #=quLfxru5uzbPCCVRiCLmC0g==, Func`1 #=q8YGWbkMa6AIbIV3KFFO5Xw==)
в StockSharp.Algo.Strategies.Strategy.#=q47pcTs$vhqCk7bcqb_pv_886glmmzTC1_raPs3xepsw5km_KDfufw3zJMTnb0$eVObikcyITlFlAUYx_AKAK_A==(IMarketRule #=qTJ4HwZuqQOv0fT2qFqxPLg==, Func`1 #=q8pW741NtpT_BaJV1HedsHw==)

Tags:


Thanks:




9 Answers
Дюшес

Avatar
Date: 7/26/2012
Reply


s# v.4.1.3
Topic starter
Thanks:

Pantov

Avatar
Date: 7/26/2012
Reply


Скорее всего при событии WhenMatched
эти правила (2 первых) удаляются автоматически.
Thanks:

Alexander

Avatar
Date: 7/26/2012
Reply


У вас в коде бред написан.
В Do вы пытаетесь удалить из Rules.
Этого делать нельзя, что и приводит к исключению.
Thanks:

Дюшес

Avatar
Date: 7/26/2012
Reply


Да, но раньше работало. А как тогда удалять правила, которые уже не нужны. Я по приходу события о полном исполнении ордеров удаляю ненужные правила - соответственно canceled и failed. Иначе они ведь будут болтаться. Дай
Topic starter
Thanks:

Дюшес

Avatar
Date: 7/26/2012
Reply


Дайте тогда может пример какой поглядеть. И какая разница откуда их удалять? И собственно откуда их удалять можно?
Topic starter
Thanks:

Дюшес

Avatar
Date: 7/26/2012
Reply


В версии 4.1.2 оно еще работало.
Topic starter
Thanks:

Moadip

Avatar
Date: 7/26/2012
Reply


Цитата:
Дайте тогда может пример какой поглядеть.


Скопировано из справки.

Использование правил


Взаимоисключающие правила
Thanks: Кот Матроскин Axell

Дюшес

Avatar
Date: 7/30/2012
Reply


Ну вот, другое дело. :) Спасибо большое за конструктивный ответ!
Topic starter
Thanks:

ra81

Avatar
Date: 8/1/2012
Reply


Alexander Mukhanchikov Перейти
У вас в коде бред написан.
В Do вы пытаетесь удалить из Rules.
Этого делать нельзя, что и приводит к исключению.


Раньше так работало однозначно я даже тесты делал подобного рода специально :).
Thanks:


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

loading
clippy