public GetQuoteReply GetQuote(string venueName, string stockName) { Venue venue = GetVenue(venueName); if (venue != null) { Stock stock = venue.GetStock(stockName); if (stock != null) { SortedList <DateTime, GetQuoteReply> quote; if (!Quotes.ContainsKey(stock)) { GetQuoteReply reply = venue.GetQuote(stock); quote = new SortedList <DateTime, GetQuoteReply> { { reply.LastTrade, reply } }; Quotes.Add(stock, quote); return(reply); } if (Quotes.TryGetValue(stock, out quote)) { return(quote.Last().Value); } } } return(null); }
public void Execute() { GameManager manager = new GameManager(); StartReply level = manager.StartLevel("first_steps"); int instance = level.InstanceId; string account = level.Account; string venueName = level.Venues[0]; string symbol = level.Stocks[0]; Market market = new Market(account, level.Venues); market.MonitorStock(venueName, symbol); for (int i = 0; i < 100; i++) { GetQuoteReply quote = market.GetQuote(venueName, symbol); market.PlaceOrder(venueName, symbol, new Fill(quote.AskSize, 1, Utils.Direction.Buy), Utils.OrderType.Limit); } Console.ReadKey(); //var values = market.GetQuotes(venueName, symbol).Where(x => x.Ask != 0 && x.Bid != 0); //string csv = string.Join(Environment.NewLine, values.Select(d => d.LastTrade.ToString("HH:mm:ss.ffffff") + "," + d.Ask + "," + d.Bid + "," + d.Last)); manager.StopLevel(instance); }
private void UpdateQuote(GetQuoteReply reply) { //EventHandler<GetQuoteReply> handler = QuoteUpdated; //if (handler != null) //{ // handler(null, reply); //} _dataAccess.UpdateQuote(reply); }
public GetQuoteReply GetQuote(Stock stock) { GetQuote request = new GetQuote(Name, stock); bool success = request.Execute(); GetQuoteReply reply = (request.Reply as GetQuoteReply) ?? new GetQuoteReply(false); if (success) { UpdateQuote(reply); return(reply); } return(null); }
private void UpdateMonitoringParameters(GetQuoteReply quote) { Stock stock = _venue.GetStock(quote.Symbol); MonitoringParameter parameter; Dictionary <Direction, MonitoringParameter> parameterSides; if (!_monitoringParameters.TryGetValue(stock, out parameterSides)) { parameter = new MonitoringParameter(); parameter.Update(quote); parameterSides = new Dictionary <Direction, MonitoringParameter> { { Direction.Buy, parameter }, { Direction.Sell, parameter } }; _monitoringParameters.Add(stock, parameterSides); } else { Direction direction = Direction.Buy; if (!parameterSides.TryGetValue(direction, out parameter)) { parameter = new MonitoringParameter(); parameter.Update(quote); parameterSides.Add(direction, parameter); } else { parameter.Update(quote); _monitoringParameters[stock][direction] = parameter; } direction = Direction.Sell; if (!parameterSides.TryGetValue(direction, out parameter)) { parameter = new MonitoringParameter(); parameter.Update(quote); parameterSides.Add(direction, parameter); } else { parameter.Update(quote); _monitoringParameters[stock][direction] = parameter; } } }
public List <GetQuoteReply> GetQuotes(string venueName, string symbol) { Stock stock = GetStock(venueName, symbol); if (stock != null) { SortedList <DateTime, GetQuoteReply> quotes; if (!Quotes.ContainsKey(stock)) { GetQuoteReply reply = GetQuote(venueName, symbol); return(new List <GetQuoteReply> { reply }); } if (Quotes.TryGetValue(stock, out quotes)) { return(quotes.Select(q => q.Value).ToList()); } } return(null); }
private void UpdateQuote(GetQuoteReply getQuoteReply) { Stock stock = GetStock(getQuoteReply.Venue, getQuoteReply.Symbol); // Use last trade rather than quote time DateTime timestamp = getQuoteReply.LastTrade; SortedList <DateTime, GetQuoteReply> stockQuotes; if (!Quotes.TryGetValue(stock, out stockQuotes)) { stockQuotes = new SortedList <DateTime, GetQuoteReply> { { timestamp, getQuoteReply } }; Quotes.Add(stock, stockQuotes); } else { if (!stockQuotes.ContainsKey(timestamp)) { Quotes[stock].Add(timestamp, getQuoteReply); } } }
public void UpdateQuote(GetQuoteReply quote) { }
public void Update(GetQuoteReply args) { }