internal static decimal CalculatePreCheckNecessary(this AccountClass.Instrument instrument, Transaction tran) { Account account = tran.Owner; Settings.TradePolicyDetail tradePolicyDetail = instrument.TradePolicyDetail(); if (tran.AccountInstrument == instrument) { return(InnerCalculatePreCheckNecessary(instrument, tran, tran.FirstOrder.IsBuy)); } decimal buyPreCheckNecessary = InnerCalculatePreCheckNecessary(instrument, tran, true); decimal sellPreCheckNecessary = InnerCalculatePreCheckNecessary(instrument, tran, false); return(Math.Max(buyPreCheckNecessary, sellPreCheckNecessary)); }
internal static TradePolicyDetail Get(AccountClass.Instrument instrument) { var result = instrument.TradePolicyDetail(); if (result != null) { return(result); } var trans = instrument.GetTransactions(); if (trans.Count == 0) { throw new NullReferenceException(string.Format("tradePolicyDetail not found, because instrument's tranCount = 0, instrumentId = {0}, accountId = {1}", instrument.Id, instrument.Owner.Id)); } var order = trans[0].FirstOrder; return(GetCommon(order.Id, instrument.Owner)); }