Удаление правил, исключение
Atom Ответить
26.07.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==)

Теги:


Спасибо:




9 Ответов
Дюшес

Фотография
Программист
Дата: 26.07.2012
Ответить


s# v.4.1.3
Автор топика
Спасибо:

Pantov

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


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

Alexander

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


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

Дюшес

Фотография
Программист
Дата: 26.07.2012
Ответить


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

Дюшес

Фотография
Программист
Дата: 26.07.2012
Ответить


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

Дюшес

Фотография
Программист
Дата: 26.07.2012
Ответить


В версии 4.1.2 оно еще работало.
Автор топика
Спасибо:

Moadip

Фотография
Автор статей Программист
Дата: 26.07.2012
Ответить


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


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

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


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

Дюшес

Фотография
Программист
Дата: 30.07.2012
Ответить


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

ra81

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


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


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


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

loading
clippy