Пример #1
0
            internal Quotation GetQuotation(IQuotePolicyProvider provider)
            {
                Quotation quotation;

                _bulk.TryGetQuotation(_instrument.Id, provider ?? _account, out quotation);
                return(quotation);
            }
Пример #2
0
        public QuotePolicyDetail GetQuotePolicyDetail(IQuotePolicyProvider quotePolicyProvider, Guid instrumentId, DateTime?tradeDay = null)
        {
            QuotePolicyDetail result = quotePolicyProvider.Get <QuotePolicyDetail>(delegate(Guid id, out QuotePolicyDetail qpd)
            {
                return(_settingInfo.QuotePolicyDetails.TryGetValue(new QuotePolicyInstrumentIdPair(id, instrumentId), out qpd));
            });

            return(this.GetData(quotePolicyProvider, tradeDay, null, (setting, key) => setting.GetQuotePolicyDetail(key, instrumentId), result));
        }
Пример #3
0
        internal Quotation GetQuotation(IQuotePolicyProvider provider)
        {
            if (_bulk == null)
            {
                return(null);
            }
            Quotation result;

            _bulk.TryGetQuotation(this.Id, provider, out result);
            return(result);
        }
 internal Quotation GetQuotation(Guid instrumentId, IQuotePolicyProvider provider)
 {
     lock (_mutex)
     {
         Instrument instrument;
         if (!_instruments.TryGetValue(instrumentId, out instrument))
         {
             return(null);
         }
         return(instrument.GetQuotation(provider));
     }
 }
Пример #5
0
        internal bool TryGetQuotation(Guid instrumentId, IQuotePolicyProvider quotePolicyProvider, out Quotation quotation)
        {
            quotation = null;
            QuotePolicy2QuotationDict quotations = null;

            if (this.TryGetValue(instrumentId, out quotations))
            {
                quotation = quotePolicyProvider.Get <Quotation>(delegate(Guid id, out Quotation q)
                {
                    return(quotations.TryGetValue(id, out q));
                });
            }
            return(quotation != null);
        }
        private void PrintErrorInfo(AccountClass.Instrument instrument, DateTime tradeDay, List <TradingDailyQuotation> closeQuotations)
        {
            StringBuilder sb = new StringBuilder(500);

            sb.AppendLine(string.Format("DoResetByClosePrice instrumentId = {0}, tradeDay = {1}", instrument.Id, tradeDay));
            IQuotePolicyProvider provider = this._account;

            sb.AppendLine(string.Format("account privateQuotePolicyId = {0}, publicQuotePolicyId = {1}  ", provider.PrivateQuotePolicyId, provider.PublicQuotePolicyId));
            sb.Append("Close quotations:");
            foreach (var quotation in closeQuotations)
            {
                sb.AppendLine(quotation.ToString());
            }
            Logger.Warn(sb.ToString());
        }
Пример #7
0
            internal bool HasTradingQuotation(IQuotePolicyProvider provider)
            {
                if (_bulk == null)
                {
                    return(false);
                }
                Quotation quotation;

                if (_bulk.TryGetQuotation(_instrument.Id, provider, out quotation))
                {
                    if (quotation.Timestamp >= _instrument.Setting.DayOpenTime)
                    {
                        return(true);
                    }
                }
                return(false);
            }
Пример #8
0
        public static T Get <T>(this IQuotePolicyProvider provider, QuotePolicyHandle <T> handler)
        {
            T result;

            if (provider.PrivateQuotePolicyId == null)
            {
                handler(provider.PublicQuotePolicyId, out result);
            }
            else
            {
                if (!handler(provider.PrivateQuotePolicyId.Value, out result))
                {
                    handler(provider.PublicQuotePolicyId, out result);
                }
            }
            return(result);
        }
Пример #9
0
 public void CheckRisk(DateTime baseTime, CalculateType calculateType, IQuotePolicyProvider quotePolicyProvider = null)
 {
     try
     {
         if (this.IsFreeOfRiskCheck)
         {
             return;
         }
         this.CalculateRiskData(baseTime, calculateType, quotePolicyProvider ?? _account);
         _account.AcceptChanges();
         this.ExecutePendingConfirmLimitOrders(baseTime);
         this.CheckAlertLevelAndCut(baseTime);
         RiskChecker.Default.Add(_account.Id, baseTime);
         _account.SaveAndBroadcastChanges();
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
     }
 }
Пример #10
0
        private void VerifyPrice(Order order, AppType appType)
        {
            Transaction tran = order.Owner;

            if (!this.ShouldVerifyPrice(tran, appType))
            {
                return;
            }
            Price                buy, sell, comparePrice;
            DateTime             priceTimestamp;
            IQuotePolicyProvider quotePolicyProvider = order.Owner.SubmitorQuotePolicyProvider;

            Logger.InfoFormat("quotePolicyId = {0}, accountId = {1}, submitorId = {2}, accountQuotePolicyId = {3}, customerQuotePolicyId = {4}", quotePolicyProvider.PrivateQuotePolicyId, order.AccountId, order.Owner.SubmitorId, order.Account.Setting().QuotePolicyID, order.Account.Customer.PrivateQuotePolicyId);
            var quotation = tran.AccountInstrument.GetQuotation(quotePolicyProvider);

            buy            = quotation.BuyPrice;
            sell           = quotation.SellPrice;
            priceTimestamp = quotation.Timestamp;
            comparePrice   = order.IsBuy ? sell : buy;
            this.InnerVerifyPrice(order, buy, sell, comparePrice, priceTimestamp, appType);
        }
Пример #11
0
 internal void CalculateRiskData(DateTime baseTime, CalculateType calculateType, IQuotePolicyProvider quotePolicyProvider)
 {
     this.InitializeSubFunds();
     this.CalculateSubFunds(baseTime, calculateType, quotePolicyProvider);
     this.CalculateSumFund();
     foreach (var eachFund in _funds.Values)
     {
         FundDataPool.Default.Add(eachFund);
     }
     _funds.Clear();
 }
Пример #12
0
        public bool IsPriceInRangeOfAutoFill(bool isBuy, Price price, Quotation quotation, IQuotePolicyProvider quotePolicyProvider)
        {
            var quotePolicyDetail = Settings.Setting.Default.GetQuotePolicyDetail(quotePolicyProvider, this.Id);

            if (this.Setting.IsNormal ^ isBuy)
            {
                if (quotePolicyDetail.IsOriginHiLo)
                {
                    return(price <= quotation.High && price >= (quotation.Low - (quotePolicyDetail.SpreadPoints - this.Setting.MaxMinAdjust)));
                }
                else
                {
                    return(price <= (quotation.High - (quotePolicyDetail.SpreadPoints + this.Setting.MaxMinAdjust)) && price >= quotation.Low);
                }
            }
            else
            {
                if (quotePolicyDetail.IsOriginHiLo)
                {
                    return(price <= (quotation.High + (quotePolicyDetail.SpreadPoints - this.Setting.MaxMinAdjust)) && price >= quotation.Low);
                }
                else
                {
                    return(price <= quotation.High && price >= (quotation.Low + (quotePolicyDetail.SpreadPoints + this.Setting.MaxMinAdjust)));
                }
            }
        }
Пример #13
0
 internal bool HasTradePrice(IQuotePolicyProvider provider)
 {
     return(this.HasTradingQuotation(provider));
 }
Пример #14
0
 internal bool HasTradingQuotation(IQuotePolicyProvider provider)
 {
     return(_quotationManager.HasTradingQuotation(provider));
 }
Пример #15
0
 internal Quotation GetQuotation(IQuotePolicyProvider provider = null)
 {
     return(_quotationManager.GetQuotation(provider));
 }
Пример #16
0
 internal void CalculateRiskData(DateTime baseTime, CalculateType calculateType, IQuotePolicyProvider quotePolicyProvider)
 {
     try
     {
         _riskDataCalculator.CalculateRiskData(baseTime, calculateType, quotePolicyProvider);
     }
     catch (TradePolicyDetailNotFountException tradePolicyDetailNotFountException)
     {
         Logger.ErrorFormat("instrumentId={0}, tradePolicyId={1}, accountId={2},error={3}", tradePolicyDetailNotFountException.InstrumentId, tradePolicyDetailNotFountException.TradePolicyId, _account.Id, tradePolicyDetailNotFountException);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
     }
 }
Пример #17
0
 private void CalculateSubFunds(DateTime baseTime, CalculateType calculateType, IQuotePolicyProvider quotePolicyProvider)
 {
     if (_instrumentManager.Count > 0)
     {
         foreach (var instrument in _instrumentManager.Instruments)
         {
             if (instrument.GetTransactions().Count == 0)
             {
                 continue;
             }
             instrument.Calculate(baseTime, calculateType, instrument.GetQuotation(quotePolicyProvider));
             FundData fund = this.GetOrCreateFund(instrument.CurrencyId);
             fund.Add(instrument.RiskRawData, null);
         }
     }
 }
Пример #18
0
 internal static Quotation GetLatestQuotationAndQuotePolicyId(Guid instrumentId, IQuotePolicyProvider quotePolicyProvider, out Guid?quotePolicyId)
 {
     return(Market.MarketManager.Default[instrumentId].GetQuotationAndQuotePolicyId(quotePolicyProvider, out quotePolicyId));
 }
Пример #19
0
 internal static bool HasTrdingQuotation(Guid instrumentId, IQuotePolicyProvider quotePolicyProvider)
 {
     return(Market.MarketManager.Default[instrumentId].HasTrdingQuotation(quotePolicyProvider));
 }