protected async Task <Submarket> GenerateSubmarket(string marketId, int marketNo, int submarketNo, int numInstruments, Random rand) { var submarket = new Submarket() { Id = $"Submarket:{marketNo}-{submarketNo}", MarketId = marketId, Name = $"Submarket{marketNo}-{submarketNo}" }; if (_simulationReceiver != null) { await _simulationReceiver.SubmarketAdded(submarket.ToStream(StreamOperation.Insert)); } for (int instrumentNo = 0; instrumentNo < numInstruments; instrumentNo++) { var instrument = await GenerateInstrument(submarket.Id, marketNo, submarketNo, instrumentNo, rand); submarket.InstrumentsById[instrument.Id] = instrument; submarket.InstrumentsByName[instrument.Name] = instrument.Id; submarket.NumInstruments++; } return(submarket); }
protected Instrument GetRandomInstrument(Random rand, int marketNo, int submarketNo, Submarket submarket) { var instrumentId = GetRandomInstrumentId(rand, marketNo, submarketNo, submarket); if (!String.IsNullOrEmpty(instrumentId)) { Instrument instrument = null; return(submarket.InstrumentsById.TryGetValue(instrumentId, out instrument) ? instrument : null); } else { return(null); } }
protected string GetRandomInstrumentId(Random rand, int marketNo, int submarketNo, Submarket submarket) { int numInstruments = submarket.NumInstruments; var slotSeed = rand.Next(41); int slot = (slotSeed > 17 ? 0 : slotSeed > 5 ? 1 : slotSeed > 1 ? 2 : 3); int instrumentNo = rand.Next(numInstruments / 4) + (slot * numInstruments / 4); string instrumentName = "Instrument" + marketNo.ToString() + "-" + submarketNo.ToString() + "-" + instrumentNo.ToString(); // Find the instrument string instrumentId = null; return(submarket.InstrumentsByName.TryGetValue(instrumentName, out instrumentId) ? instrumentId : null); }