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));
        }
예제 #2
0
        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));
        }