Myself - I rollover on the weekend, not on thursday or friday... so... I found myself doubling up on market replay of multiple contracts... and all these comparisons felt heavy on ES when running multi year market replay test...
This appears to go so much faster without issue (and is good through "ES 12-17", and you should be able to see the pattern or adjust to your needs..good luck!)
int yyyymmdd = 0; .... if (BarsInProgress!=0) return; //your mileage may vary!!! my BIP =0 is ES.. //Avoid trading 2 instruments yyyymmdd = ToDay(Time[0] ); .... ... if (Instrument.FullName[0] == 'E' ) { if (( yyyymmdd > 20140315 && Instrument.FullName[4] == 51 && Instrument.FullName[7] == 52 )// && String.Equals("ES 03-14", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20140615 && Instrument.FullName[4] == 54 && Instrument.FullName[7] == 52 )// && String.Equals("ES 06-14", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20140914 && Instrument.FullName[4] == 58 && Instrument.FullName[7] == 52 )// && String.Equals("ES 09-14", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20141214 && Instrument.FullName[4] == 50 && Instrument.FullName[7] == 52 )// && String.Equals("ES 12-14", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20150315 && Instrument.FullName[4] == 51 && Instrument.FullName[7] == 53 )// && String.Equals("ES 03-15", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20150614 && Instrument.FullName[4] == 54 && Instrument.FullName[7] == 53 )// && String.Equals("ES 06-15", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20150913 && Instrument.FullName[4] == 58 && Instrument.FullName[7] == 53 )// && String.Equals("ES 09-15", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20151213 && Instrument.FullName[4] == 50 && Instrument.FullName[7] == 53 )// && String.Equals("ES 12-15", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20160313 && Instrument.FullName[4] == 51 && Instrument.FullName[7] == 54 )// && String.Equals("ES 03-16", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20160612 && Instrument.FullName[4] == 54 && Instrument.FullName[7] == 54 )// && String.Equals("ES 06-16", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20160911 && Instrument.FullName[4] == 58 && Instrument.FullName[7] == 54 )// && String.Equals("ES 09-16", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20161211 && Instrument.FullName[4] == 50 && Instrument.FullName[7] == 54 )// && String.Equals("ES 12-16", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20170312 && Instrument.FullName[4] == 51 && Instrument.FullName[7] == 55 )// && String.Equals("ES 03-17", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20170611 && Instrument.FullName[4] == 54 && Instrument.FullName[7] == 55 )// && String.Equals("ES 06-17", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20170910 && Instrument.FullName[4] == 58 && Instrument.FullName[7] == 55 )// && String.Equals("ES 09-17", Instrument.FullName,StringComparison.Ordinal) ) || ( yyyymmdd > 20171210 && Instrument.FullName[4] == 50 && Instrument.FullName[7] == 55 )// && String.Equals("ES 12-17", Instrument.FullName,StringComparison.Ordinal) )) ) { return; }