private void DoRecoverTradeDay(DateTime beginTradeDay, DateTime endTradeDay) { Dictionary <DateTime, decimal> tradeDayPerResetAmountDict = _historyOrderRecover.RecoverDay(beginTradeDay, endTradeDay); foreach (var eachPair in tradeDayPerResetAmountDict) { DateTime tradeDay = eachPair.Key; decimal deltaResetAmount = eachPair.Value; this.AddResetAmount(deltaResetAmount, tradeDay); } }
internal static void Process(Transaction tran, Settings.Setting setting, DateTime tradeDay) { var account = tran.Owner; var historyOrderRecover = new HistoryOrderRecover(account, tran.InstrumentId, GetAffectedOrders(tran), new List <Guid>(), setting); DateTime beginResetTradeDay = tradeDay; DateTime?lastResetTradeDay = account.LastResetDay; if (lastResetTradeDay == null || beginResetTradeDay > lastResetTradeDay) { RecoverBalance(new Dictionary <DateTime, decimal>(), tran, CalculateNotRecoverOrderCost(tran)); } else { var deltaAmountPerTradeDayDict = historyOrderRecover.RecoverDay(beginResetTradeDay, lastResetTradeDay.Value); decimal orderExecuteFee = CalculateCost(tran); RecoverAccountBalanceDayHistory(deltaAmountPerTradeDayDict, orderExecuteFee, tran); RecoverBalance(deltaAmountPerTradeDayDict, tran, orderExecuteFee); UpdateInstalmentOrderDebitInterest(tran, setting, beginResetTradeDay); OrderUpdater.Default.UpdateOrderInterestPerLotAndStoragePerLot(tran, lastResetTradeDay.Value); } RemoveCompletedOrdersFromCache(tran); }