internal Quotation GetQuotation(IQuotePolicyProvider provider) { Quotation quotation; _bulk.TryGetQuotation(_instrument.Id, provider ?? _account, out quotation); return(quotation); }
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)); }
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)); } }
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()); }
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); }
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); }
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); } }
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); }
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(); }
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))); } } }
internal bool HasTradePrice(IQuotePolicyProvider provider) { return(this.HasTradingQuotation(provider)); }
internal bool HasTradingQuotation(IQuotePolicyProvider provider) { return(_quotationManager.HasTradingQuotation(provider)); }
internal Quotation GetQuotation(IQuotePolicyProvider provider = null) { return(_quotationManager.GetQuotation(provider)); }
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); } }
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); } } }
internal static Quotation GetLatestQuotationAndQuotePolicyId(Guid instrumentId, IQuotePolicyProvider quotePolicyProvider, out Guid?quotePolicyId) { return(Market.MarketManager.Default[instrumentId].GetQuotationAndQuotePolicyId(quotePolicyProvider, out quotePolicyId)); }
internal static bool HasTrdingQuotation(Guid instrumentId, IQuotePolicyProvider quotePolicyProvider) { return(Market.MarketManager.Default[instrumentId].HasTrdingQuotation(quotePolicyProvider)); }