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); }
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); }