VelocityDbSchema.NUnit.Tick.GenerateRandom C# (CSharp) Method

GenerateRandom() public static method

Generate random ticks
public static GenerateRandom ( ulong count ) : IEnumerable
count ulong
return IEnumerable
    public static IEnumerable<Tick> GenerateRandom(ulong count)
    {
      //Some symbols
      string[] symbols = new string[] { "EURUSD", "GBPCHF", "EURGBP", "JPYUSD", "GBPCAD" };
      string[] exchanges = new string[] { "NYSE", "TSE", "NASDAQ", "Euronext", "LSE", "SSE", "ASE", "SE", "NSEI" };
      providers = new string[] { "eSignal", "Gain", "NYSE", "TSE", "NASDAQ", "Euronext", "LSE", "SSE", "ASE", "SE", "NSEI" };
      double[] prices = new double[symbols.Length];
      double[] pipsizes = new double[symbols.Length];
      int[] digits = new int[symbols.Length];

      //Initialize startup data
      for (int i = 0; i < symbols.Length; i++)
      {
        prices[i] = 1.5;
        pipsizes[i] = 0.0001;
        digits[i] = 4;
      }

      DateTime timestamp = DateTime.Now;

      //Generate ticks
      for (ulong i = 0; i < count; i++)
      {
        int id = random.Next(symbols.Length);

        //generate random movement
        int pips = random.Next(0, 10);
        int direction = random.Next() % 2 == 0 ? 1 : -1;
        int spread = random.Next(2, 30);
        int seconds = random.Next(1, 30);

        //generate values
        string symbol = symbols[id];

        timestamp = timestamp.AddSeconds(seconds);

        double bid = prices[id];
        bid += direction * pips * pipsizes[id];
        bid = Math.Round(bid, digits[id]);

        double ask = bid + spread * pipsizes[id];
        ask = Math.Round(ask, digits[id]);

        //create tick
        Tick tick = new Tick();
        tick.Symbol = symbol;
        tick.Timestamp = timestamp;
        tick.Bid = bid;
        tick.Ask = ask;
        int bidSize = random.Next(0, 10000);
        int askSize = random.Next(0, 10000);
        string provider = providers[random.Next(providers.Length)];

        yield return tick;
      }
    }