4.1.2 ошибка при перерегистрации через Strategy.ReRegisterOrder
При перерегистрации заявок происходит такая ошибка
Цитата:
10:32:08.015 | Error | TS_RIU2@RTS_SPBFUT010Lt | System.ArgumentException: Следующая заявка 55107114 не может быть переписана новой 55107135.
Имя параметра: value
в StockSharp.Algo.Slippage.SlippageManager.#=q3_Wepp_3NsbykZtlIdWjiw==.#=q0YMeE3b1N8UJyVMaRs7qaw==(Order #=q8Ts5TstfIoIp0f7YV9LOcg==)
в StockSharp.Algo.Slippage.SlippageManager.#=qzOhOrOml2PAgCG7rTCjWFdkFk0hEXlGkPqEWJKC4pWE=.#=qsQkBOM2aVRT3x$1jlLiHaYdTD$EzTvL3P5lWQvYIzOw=(CachedSynchronizedDictionary`2 #=qcBrNAZF0hCeKotpN1xMwSQ==)
в Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action`1 action)
в StockSharp.Algo.Slippage.SlippageManager.ReRegister(Order oldOrder, Order newOrder)
в StockSharp.Algo.Strategies.Strategy.ReRegisterSlippage(Order oldOrder, Order newOrder)
в StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)
в TradeStrategy.TresureStrategy.StopOrderOnSignalBarFound(Order stopOrder, Candle signalCandle) в C:\Trade\TradeStrategy\TradeStrategy\TresureStrategy.cs:строка 1220
в TradeStrategy.TresureStrategy.<PrepareStopOrder>b__20(Order o) в C:\Trade\TradeStrategy\TradeStrategy\TresureStrategy.cs:строка 930
в StockSharp.Algo.MarketRule`1.#=qFfqSDiZv8pWGm7y$Dbf0VPCU0lS5vwwvnkVCiCZmwb0=()
в StockSharp.Algo.Strategies.Strategy.#=qshneewFN2NqSlxBzsEEkuTLXtkM38fuukfw8vHQKuLKzIzBDy8rZCwxJP2Oe4IGvTypy$toXLyLhdEawHDv2wA==(IMarketRule #=qWCYq0V3TPhSxXyGd6yq5UQ==, Func`1 #=q0ZXPlFs3bJ4gclvtaaaDog==)
Пример приводящий к ошибке
Код
// Первоначальная заявка - условная
var stopOrder = this.CreateOrder(stopDirection, stopPrice, volume);
stopOrder.Type = OrderTypes.Conditional;
stopOrder.StopCondition = new QuikStopCondition() {
Type = QuikStopConditionTypes.StopLimit,
StopPrice = activatePrice
};
stopOrder.WhenRegistered().Do(oldOrder => {
// Новая заявка - лимитная
var newOrder = oldOrder.Clone();
newOrder.Type = OrderTypes.Limit;
newOrder.Price = newOrder.Direction == OrderDirections.Buy ? Security.GetCurrentPrice().Value - 200 : Security.GetCurrentPrice().Value + 200;
ReRegisterOrder(oldOrder, newOrder);
}).Apply();
RegisterOrder(stopOrder);