private static void UpdateContract(FuturesContract contract, Tick tick) { if (tick.TickType == TickType.Trade) { contract.LastPrice = tick.Price; } else if (tick.TickType == TickType.Quote) { if (tick.AskPrice != 0m) { contract.AskPrice = tick.AskPrice; contract.AskSize = (long)tick.AskSize; } if (tick.BidPrice != 0m) { contract.BidPrice = tick.BidPrice; contract.BidSize = (long)tick.BidSize; } } else if (tick.TickType == TickType.OpenInterest) { if (tick.Value != 0m) { contract.OpenInterest = tick.Value; } } }
private static void UpdateContract(FuturesContract contract, TradeBar tradeBar) { if (tradeBar.Close == 0m) { return; } contract.LastPrice = tradeBar.Close; contract.Volume = (long)tradeBar.Volume; }
public FuturesContract Get(string code) { FuturesContract item = new FuturesContract(); var items = GetInternal(code); if (items != null && items.Count > 0) { item = items[0]; } return(item); }
private static void UpdateContract(FuturesContract contract, QuoteBar quote) { if (quote.Ask != null && quote.Ask.Close != 0m) { contract.AskPrice = quote.Ask.Close; contract.AskSize = (long)quote.LastAskSize; } if (quote.Bid != null && quote.Bid.Close != 0m) { contract.BidPrice = quote.Bid.Close; contract.BidSize = (long)quote.LastBidSize; } }
public int Create(FuturesContract item) { var dbCommand = _dbHelper.GetStoredProcCommand(SP_Create); _dbHelper.AddInParameter(dbCommand, "@Code", System.Data.DbType.String, item.Code); _dbHelper.AddInParameter(dbCommand, "@Name", System.Data.DbType.String, item.Name); _dbHelper.AddInParameter(dbCommand, "@Exchange", System.Data.DbType.String, item.Exchange); _dbHelper.AddInParameter(dbCommand, "@PriceLimits", System.Data.DbType.Decimal, item.PriceLimits); _dbHelper.AddInParameter(dbCommand, "@Deposit", System.Data.DbType.Decimal, item.Deposit); _dbHelper.AddInParameter(dbCommand, "@ListedDate", System.Data.DbType.DateTime, item.FirstTradingDay); _dbHelper.AddInParameter(dbCommand, "@LastTradingDay", System.Data.DbType.DateTime, item.LastTradingDay); _dbHelper.AddInParameter(dbCommand, "@LastDeliveryDay", System.Data.DbType.DateTime, item.LastDeliveryDay); return(_dbHelper.ExecuteNonQuery(dbCommand)); }
public List <FuturesContract> GetInternal(string code) { var dbCommand = _dbHelper.GetStoredProcCommand(SP_Get); if (!string.IsNullOrEmpty(code)) { _dbHelper.AddInParameter(dbCommand, "@Code", System.Data.DbType.String, code); } List <FuturesContract> itemList = new List <FuturesContract>(); var reader = _dbHelper.ExecuteReader(dbCommand); if (reader.HasRows) { while (reader.Read()) { FuturesContract item = new FuturesContract(); item.Code = (string)reader["Code"]; item.Name = (string)reader["Name"]; item.Exchange = (string)reader["Exchange"]; item.PriceLimits = (double)(decimal)reader["PriceLimits"]; item.Deposit = (double)(decimal)reader["Deposit"]; if (reader["ListedDate"] != null && reader["ListedDate"] != DBNull.Value) { item.FirstTradingDay = (DateTime)reader["ListedDate"]; } if (reader["LastTradingDay"] != DBNull.Value) { item.LastTradingDay = (DateTime)reader["LastTradingDay"]; } if (reader["LastDeliveryDay"] != DBNull.Value) { item.LastDeliveryDay = (DateTime)reader["LastDeliveryDay"]; } itemList.Add(item); } } reader.Close(); _dbHelper.Close(dbCommand); return(itemList); }
private static bool HandleFuturesData(DateTime algorithmTime, BaseData baseData, FuturesChains futuresChains, Security security) { var symbol = baseData.Symbol; FuturesChain chain; var canonical = Symbol.Create(symbol.ID.Symbol, SecurityType.Future, symbol.ID.Market); if (!futuresChains.TryGetValue(canonical, out chain)) { chain = new FuturesChain(canonical, algorithmTime); futuresChains[canonical] = chain; } var universeData = baseData as FuturesChainUniverseDataCollection; if (universeData != null) { foreach (var contractSymbol in universeData.FilteredContracts) { chain.FilteredContracts.Add(contractSymbol); } return(false); } FuturesContract contract; if (!chain.Contracts.TryGetValue(baseData.Symbol, out contract)) { var underlyingSymbol = baseData.Symbol.Underlying; contract = new FuturesContract(baseData.Symbol, underlyingSymbol) { Time = baseData.EndTime, LastPrice = security.Close, BidPrice = security.BidPrice, BidSize = (long)security.BidSize, AskPrice = security.AskPrice, AskSize = (long)security.AskSize, OpenInterest = security.OpenInterest }; chain.Contracts[baseData.Symbol] = contract; } // populate ticks and tradebars dictionaries with no aux data switch (baseData.DataType) { case MarketDataType.Tick: var tick = (Tick)baseData; chain.Ticks.Add(tick.Symbol, tick); UpdateContract(contract, tick); break; case MarketDataType.TradeBar: var tradeBar = (TradeBar)baseData; chain.TradeBars[symbol] = tradeBar; contract.LastPrice = tradeBar.Close; break; case MarketDataType.QuoteBar: var quote = (QuoteBar)baseData; chain.QuoteBars[symbol] = quote; UpdateContract(contract, quote); break; case MarketDataType.Base: chain.AddAuxData(baseData); break; } return(true); }