← Zurück

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=(CachedSynchronizedDictionary2 #=qcBrNAZF0hCeKotpN1xMwSQ==) в Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action1 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.MarketRule1.#=qFfqSDiZv8pWGm7y$Dbf0VPCU0lS5vwwvnkVCiCZmwb0=() в StockSharp.Algo.Strategies.Strategy.#=qshneewFN2NqSlxBzsEEkuTLXtkM38fuukfw8vHQKuLKzIzBDy8rZCwxJP2Oe4IGvTypy$toXLyLhdEawHDv2wA==(IMarketRule #=qWCYq0V3TPhSxXyGd6yq5UQ==, Func1 #=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);

War dieses Thema hilfreich?

Thema teilen

Kommentare (3)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

На 4.1.3 или последней 4.1.4 из исходников воспроизводится?

PavelAd
PavelAd Autor

Alexander Mukhanchikov: На 4.1.3 или последней 4.1.4 из исходников воспроизводится?

На 4.1.3 и выше другая ошибка была, в стеке которой тоже присутствует SlipageManager, только в методе Register http://www.stocksharp.com/posts/m/21083/

возможно связано

Переход на 4.1.3 отложил до лучших времен, так как в ней много что отломалось по сравнению с 4.1.2 :(

Alexander
Alexander

Та ошибка исправлена, теперь проверьте эту на новых версиях