Ejemplo n.º 1
0
        private static decimal CalculatePhysicalTradePL(PhysicalOrderRelation orderRelation, Exchanger exchanger)
        {
            decimal result = 0m;

            if (orderRelation.PhysicalValueMatureDay == null || orderRelation.RealPhysicalValueMatureDate == orderRelation.PhysicalValueMatureDay)
            {
                result = exchanger.ExchangeByCommonDecimals(orderRelation.TradePL);
            }
            return(result);
        }
Ejemplo n.º 2
0
 internal static void RecoveAffectedOpenOrders(Order order, bool isPayForInstalmentDebitInterest, DateTime tradeDay)
 {
     foreach (var eachOrderRelation in order.OrderRelations)
     {
         Order openOrder = eachOrderRelation.OpenOrder;
         openOrder.LotBalance += eachOrderRelation.ClosedLot;
         if (order.Owner.IsPhysical)
         {
             PhysicalOrderRelation physicalOrderRelation = (PhysicalOrderRelation)eachOrderRelation;
             AffectedOpenOrderRecover.Recove(order, eachOrderRelation.CloseTime.Value, isPayForInstalmentDebitInterest, tradeDay, physicalOrderRelation.PayBackPledge, physicalOrderRelation.ClosedPhysicalValue);
         }
     }
 }
Ejemplo n.º 3
0
        internal List <PhysicalOrderRelation> UpdatePhysicalOrderRelationValueMatureDate(TradeDayInfo info)
        {
            List <PhysicalOrderRelation> result = new List <PhysicalOrderRelation>();

            foreach (var eachOrderRelation in info.OrderRelations)
            {
                PhysicalOrderRelation physicalOrderRelation = eachOrderRelation as PhysicalOrderRelation;
                if (physicalOrderRelation == null)
                {
                    continue;
                }
                if (physicalOrderRelation.PhysicalValueMatureDay <= info.TradeDay && physicalOrderRelation.RealPhysicalValueMatureDate == null)
                {
                    result.Add(physicalOrderRelation);
                    physicalOrderRelation.RealPhysicalValueMatureDate = DateTime.Now.Date;
                }
            }
            return(result);
        }
Ejemplo n.º 4
0
 private static bool ExistNotMaturePhysicalValue(this Order order, IEnumerable <OrderRelation> orderRelations)
 {
     if (!order.Owner.IsPhysical)
     {
         return(false);
     }
     foreach (var eachOrderRelation in orderRelations)
     {
         if (eachOrderRelation.OpenOrderId != order.Id)
         {
             continue;
         }
         PhysicalOrderRelation physicalOrderRelation = (PhysicalOrderRelation)eachOrderRelation;
         if (physicalOrderRelation.PhysicalValueMatureDay != null && physicalOrderRelation.RealPhysicalValueMatureDate == null)
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 5
0
 private static void CalculateNotValuedOrderRelationPL(TradeDayInfo tradeDayInfo, Exchanger exchanger, Dictionary <Guid, OrderResetResult> resetOrderDict, List <Guid> affectedOrders)
 {
     foreach (var eachOrderRelation in tradeDayInfo.OrderRelations)
     {
         Order closeOrder = eachOrderRelation.CloseOrder;
         if (!closeOrder.ShouldCalculate(affectedOrders))
         {
             continue;
         }
         PhysicalOrder         physicalCloseOrder    = closeOrder as PhysicalOrder;
         PhysicalOrderRelation physicalOrderRelation = eachOrderRelation as PhysicalOrderRelation;
         if (closeOrder.Phase == OrderPhase.Executed && !closeOrder.IsOpen && closeOrder.ExecuteTime <= tradeDayInfo.Settings.ResetTime && eachOrderRelation.ValueTime == null)
         {
             OrderResetResult resetResult = CreateOrderResetResult(closeOrder, tradeDayInfo, resetOrderDict);
             resetResult.NotValuedPL      += new InterestStorage(exchanger.ExchangeByCommonDecimals(eachOrderRelation.InterestPL), exchanger.ExchangeByCommonDecimals(eachOrderRelation.StoragePL));
             resetResult.TradePLNotValued += exchanger.ExchangeByCommonDecimals(eachOrderRelation.TradePL);
             if (physicalOrderRelation != null)
             {
                 resetResult.PhysicalTradePLNotValued += CalculatePhysicalTradePL(physicalOrderRelation, exchanger);
             }
         }
     }
 }
Ejemplo n.º 6
0
 private static void CalculateValuedOrderRelationPL(TradeDayInfo tradeDayInfo, Exchanger exchanger, Dictionary <Guid, OrderResetResult> resetOrderDict, List <Guid> affectedOrders)
 {
     foreach (var eachOrderRelation in tradeDayInfo.OrderRelations)
     {
         Order closeOrder = eachOrderRelation.CloseOrder;
         if (!closeOrder.ShouldCalculate(affectedOrders))
         {
             continue;
         }
         if (closeOrder.Phase == OrderPhase.Executed && !closeOrder.IsOpen && closeOrder.ExecuteTime <= tradeDayInfo.Settings.ResetTime && eachOrderRelation.ValueTime > tradeDayInfo.Settings.BeginTime && eachOrderRelation.ValueTime <= tradeDayInfo.Settings.ResetTime)
         {
             var resetResult = CreateOrderResetResult(closeOrder, tradeDayInfo, resetOrderDict);
             var valuedPL    = eachOrderRelation.CalculateValuedPL();
             resetResult.ValuedPL      += new InterestStorage(valuedPL.InterestPL, valuedPL.StoragePL);
             resetResult.TradePLValued += valuedPL.TradePL;
             PhysicalOrderRelation physicalOrderRelation = eachOrderRelation as PhysicalOrderRelation;
             if (physicalOrderRelation != null)
             {
                 resetResult.PhysicalTradePLValued += CalculatePhysicalTradePL(physicalOrderRelation, exchanger);
             }
         }
     }
 }
Ejemplo n.º 7
0
        private static bool ExistNotMaturePhysicalValueForCloseOrder(this Order order, IEnumerable <OrderRelation> orderRelations)
        {
            PhysicalOrder physicalOrder = order as PhysicalOrder;

            if (physicalOrder == null)
            {
                return(false);
            }
            foreach (var eachOrderRelation in orderRelations)
            {
                if (eachOrderRelation.CloseOrder.Id != order.Id)
                {
                    continue;
                }
                PhysicalOrderRelation physicalOrderRelation = (PhysicalOrderRelation)eachOrderRelation;
                if (eachOrderRelation.ValueTime == null ||
                    (physicalOrderRelation != null && physicalOrderRelation.PhysicalValueMatureDay != null && physicalOrderRelation.RealPhysicalValueMatureDate == null))
                {
                    return(true);
                }
            }
            return(false);
        }
 public PhysicalOrderRelationXmlService(PhysicalOrderRelation owner)
     : base(owner)
 {
     _owner = owner;
 }
Ejemplo n.º 9
0
 private void CalculateOrderRelaiton(PhysicalOrderRelation orderRelation, bool isLast, ExecuteContext context)
 {
     orderRelation.CalculateClosedPhysicalValue(context.TradeDay);
     orderRelation.CalculatePayBackPledge(isLast, context);
 }
Ejemplo n.º 10
0
 private void UpdateCloseOrder(PhysicalOrderRelation orderRelation, ExecuteContext context)
 {
     _physicalOrder.PaidPledgeBalance += orderRelation.PayBackPledgeOfCloseOrder;
     _physicalOrder.AddBill(new Bill(_physicalOrder.AccountId, _physicalOrder.CurrencyId, orderRelation.PayBackPledgeOfOpenOrder, BillType.PayBackPledge, BillOwnerType.Order, context.ExecuteTime ?? DateTime.Now));
 }
Ejemplo n.º 11
0
 private void UpdateForOpenOrder(PhysicalOrderRelation orderRelation, PhysicalOrder openOrder)
 {
     openOrder.PhysicalOriginValueBalance += -orderRelation.ClosedPhysicalValue;
     openOrder.PaidPledgeBalance          += orderRelation.PayBackPledgeOfOpenOrder;
     openOrder.UpdateLotBalance(orderRelation.ClosedLot, _physicalOrder.PhysicalTradeSide == PhysicalTradeSide.Delivery);
 }
Ejemplo n.º 12
0
 internal PhysicalOrderRelationSettings(PhysicalOrderRelation owner, PhysicalOrderRelationConstructParams constructParams)
     : base(owner)
 {
     this.Parse(constructParams);
 }