Beispiel #1
0
 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;
 }
Beispiel #3
0
        public FuturesContract Get(string code)
        {
            FuturesContract item  = new FuturesContract();
            var             items = GetInternal(code);

            if (items != null && items.Count > 0)
            {
                item = items[0];
            }

            return(item);
        }
Beispiel #4
0
 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;
     }
 }
Beispiel #5
0
        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));
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }