示例#1
0
        private static decimal CalculateNecessary(Instrument instrument, bool isBuy, MarginAndQuantityResult marginArgs, MarginAndQuantityResult filledArgs)
        {
            MarginAndQuantityResult necessaryParams = new MarginAndQuantityResult();

            necessaryParams.Add(isBuy, marginArgs, filledArgs);
            var result = instrument.CalculateNecessary(necessaryParams);

            return(result.NetNecessary + result.HedgeNecessary);
        }
示例#2
0
        private static void InitializeFilledAndMarginArgs(this Instrument instrument, bool isBuy, MarginAndQuantityResult unfilledArgs, MarginAndQuantityResult filledArgs, MarginAndQuantityResult marginArgs)
        {
            var         physicalInstrument = instrument as PhysicalInstrument;
            BuySellPair margin, quantity, partialMargin, partialQuantity;

            margin   = new BuySellPair(instrument.TotalBuyMargin, instrument.TotalSellMargin);
            quantity = new BuySellPair(instrument.TotalBuyQuantity, instrument.TotalSellQuantity);
            if (physicalInstrument != null)
            {
                partialMargin   = new BuySellPair(physicalInstrument.TotalBuyMarginForPartialPaymentPhysicalOrder, physicalInstrument.TotalSellMarginForPartialPaymentPhysicalOrder);
                partialQuantity = new BuySellPair(physicalInstrument.TotalBuyLotBalanceForPartialPaymentPhysicalOrder, physicalInstrument.TotalSellLotBalanceForPartialPaymentPhysicalOrder);
            }
            else
            {
                partialMargin   = BuySellPair.Empty;
                partialQuantity = BuySellPair.Empty;
            }
            filledArgs.Add(isBuy, margin, quantity, partialMargin, partialQuantity);
            marginArgs.Add(isBuy, unfilledArgs);
            marginArgs.Add(isBuy, margin, quantity, partialMargin, partialQuantity);
        }