Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }