public void RawSingle() { MultiSimImpl h = new MultiSimImpl(new string[] { "FTI20070926.TIK" }); rawbase("rawsingle",1,h); // tick count is = 42610 (FTI) + 5001 (SPX) + 8041 (ABN) Assert.Greater(tickcount, 40000); }
public void RawPerformance() { MultiSimImpl h = new MultiSimImpl(Environment.CurrentDirectory); rawbase("raw performance multi",3,h); // tick count is = 42610 (FTI) + 5001 (SPX) + 8041 (ABN) Assert.AreEqual(42610 + 4991 + 8041, tickcount); // check running time Assert.LessOrEqual(h.RunTimeSec, EXPECTRAW, "may fail on slow machines"); // last time is 1649 on SPX Assert.AreEqual(20080318155843, lasttime); }
public void RawPerformance() { MultiSimImpl h = new MultiSimImpl(new string[] { "FTI20070926.TIK", "ABN20080318.TIK","SPX20070926.TIK"}); rawbase("raw performance multi",3,h); // tick count is = 42610 (FTI) + 5001 (SPX) + 8041 (ABN) Assert.AreEqual(42610 + 4991 + 8041, tickcount); // check running time Assert.LessOrEqual(h.RunTimeSec, EXPECTRAW, "may fail on slow machines"); // last time is 1649 on SPX Assert.AreEqual(20080318155843, lasttime); }
public GauntletEngine(TradeLink.API.Response r, TickFileFilter tff) { _r = r; _r.SendOrderEvent += new OrderSourceDelegate(_r_SendOrder); _r.SendCancelEvent += new LongSourceDelegate(_r_SendCancel); _tff = tff; _h = new MultiSimImpl(_tff); _h.GotTick += new TickDelegate(_h_GotTick); SimBroker.GotOrderCancel += new OrderCancelDelegate(SimBroker_GotOrderCancel); SimBroker.GotOrder += new OrderDelegate(_r.GotOrder); SimBroker.GotFill += new FillDelegate(_r.GotFill); }
public void rawbase(string name,int symcount, MultiSimImpl sim) { rt.d(name.ToUpper()); MultiSimImpl h = sim; h.Initialize(); h.GotTick += new TradeLink.API.TickDelegate(raw_GotTick); h.GotDebug += new DebugDelegate(h_GotDebug); tickcount = 0; syms.Clear(); lasttime = 0; Assert.AreEqual(0, tickcount); Assert.AreEqual(0, syms.Count); Assert.AreEqual(0, lasttime); Assert.Greater(h.TicksPresent, 0); if (Environment.ProcessorCount == 1) EXPECTRAW *= 2.5; DateTime start = DateTime.Now; h.PlayTo(MultiSimImpl.ENDSIM); // printout simulation runtime rt.d("Ticks received: " + tickcount + " sent: " + h.TicksProcessed + " estimate: " + h.TicksPresent); rt.d("Raw runtime: " + h.RunTimeSec.ToString("N2") + "sec, versus: " + EXPECTRAW + "sec expected."); rt.d("Raw speed: " + h.RunTimeTicksPerSec.ToString("N0") + " ticks/sec"); // make sure ticks arrived in order Assert.IsTrue(h.isTickPlaybackOrdered, "Tick arrived out-of-order."); // ensure got expected number of symbols Assert.AreEqual(symcount, syms.Count); // variance from approximate count should be less than 1% Assert.Less((tickcount - h.TicksPresent) / h.TicksPresent, .01); // actual count should equal simulation count Assert.AreEqual(h.TicksProcessed, tickcount); h.Stop(); rt.d(name.ToUpper()); }
public void RawPerformanceWithLoad() { System.ComponentModel.BackgroundWorker bw = new System.ComponentModel.BackgroundWorker(); bw.DoWork += new System.ComponentModel.DoWorkEventHandler(bw_DoWork); bw.WorkerSupportsCancellation = true; MultiSimImpl h = new MultiSimImpl(Environment.CurrentDirectory); rawbase("raw performance multi w/load", 3, h); // tick count is = 42610 (FTI) + 5001 (SPX) + 8041 (ABN) Assert.AreEqual(42610 + 4991 + 8041, tickcount); // check running time Assert.LessOrEqual(h.RunTimeSec, EXPECTRAW, "may fail on slow machines"); // last time is 1649 on SPX Assert.AreEqual(20080318155843, lasttime); RawPerformance(); bw.CancelAsync(); run = false; // tick count is = 42610 (FTI) + 5001 (SPX) + 8041 (ABN) Assert.AreEqual(42610 + 4991 + 8041, tickcount); // check running time Assert.LessOrEqual(h.RunTimeSec, EXPECTRAW, "may fail on slow machines"); // last time is 1649 on SPX Assert.AreEqual(20080318155843, lasttime); }
public void BarPerformance() { MultiSimImpl h = new MultiSimImpl(Environment.CurrentDirectory); h.GotTick += new TradeLink.API.TickDelegate(h_GotTick); h.Initialize(); tickcount = 0; lasttime = 0; Assert.AreEqual(0, lasttime); Assert.Greater(h.TicksPresent, 0); if (Environment.ProcessorCount == 1) EXPECTBARS *= 2.5; DateTime start = DateTime.Now; h.PlayTo(MultiSimImpl.ENDSIM); double time = DateTime.Now.Subtract(start).TotalSeconds; h.Stop(); Assert.GreaterOrEqual(tickcount, 50000); Assert.AreEqual(3, bt.SymbolCount); Assert.LessOrEqual(time, EXPECTBARS); rt.d("BarList runtime: " + time.ToString("N2") + "sec, versus: " + EXPECTBARS + "sec expected."); rt.d("BarList " + ((double)tickcount / time).ToString("N0") + " ticks/sec"); }
public void ExecutionPerformance() { System.Threading.Thread.Sleep(100); h = new MultiSimImpl(Environment.CurrentDirectory); h.Initialize(); h.GotTick += new TradeLink.API.TickDelegate(execute_GotTick); SimBroker.GotFill += new TradeLink.API.FillDelegate(SimBroker_GotFill); tickcount = 0; lasttime = 0; Assert.AreEqual(0, tickcount); Assert.AreEqual(0, syms.Count); Assert.AreEqual(0, lasttime); Assert.Greater(h.TicksPresent, 0); if (Environment.ProcessorCount == 1) EXPECTEX *= 2.5; DateTime start = DateTime.Now; h.PlayTo(MultiSimImpl.ENDSIM); double time = DateTime.Now.Subtract(start).TotalSeconds; rt.d("Execution runtime: " + time.ToString("N2") + "sec, versus: " + EXPECTEX + "sec expected."); rt.d("Execution " + ((double)tickcount / time).ToString("N0") + " ticks/sec. " + ((double)fillcount / time).ToString("N0") + " fills/sec"); Assert.AreEqual(desiredfills, fillcount); Assert.LessOrEqual(time, EXPECTEX); h.Stop(); }
/// <summary> /// returns true if sim event binding is needed /// </summary> /// <param name="sim"></param> /// <param name="ga"></param> bool prepsim_needsbind(ref HistSim sim, GauntArgs ga) { // see if filter or folder has changed string thistff = TickFileFilter.Serialize(ga.Filter)+ga.Folder; bool fullreset = lasttff != thistff; if ((sim==null) || fullreset) { if (_portfoliosim.Checked) { if (_siminmemory.Checked) { sim = new HistSimMemory(ga.Folder, ga.Filter); } else { debug("Using portfolio simulation. (realistic)"); sim = new MultiSimImpl(ga.Folder, ga.Filter); } } else { debug("Using sequential symbol simulation. (faster)"); sim = new SingleSimImpl(ga.Folder, ga.Filter); } lasttff = thistff; return true; } else { sim.Reset(); } return false; }