public void Basics() { // build a one symbol filter TickFileFilter tff = new TickFileFilter(new[] { "GM" }); // get results from above data files string[] result = tff.Allows(_filenames); // make sure both files for this symbol match Assert.Equal(2, result.Length); // make sure the actual file names are the same Assert.Equal(result[0], _filenames[0]); Assert.Equal(result[1], _filenames[4]); // build a new filter tff = new TickFileFilter(); // request all matching files for a given year tff.DateFilter(20070000, DateMatchType.Year); tff.IsDateMatchUnion = true; tff.IsSymbolDateMatchUnion = true; // do the match result = tff.Allows(_filenames); // make sure we found 3 files from this year Assert.Equal(3, result.Length); // make sure the filename is the same Assert.Equal(_filenames[3], result[2]); }
/// <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); }
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e) { // create a new filter TickFileFilter tff = new TickFileFilter(); // populate the filter from user's calendar tff.DateFilter(Util.ToTLDate(monthCalendar1.SelectionEnd), DateMatchType.Day | DateMatchType.Month | DateMatchType.Year); // set the filter on the simulator h.FileFilter = tff; }
static TickFileFilter getfilterdate(int date) { // create a new filter TickFileFilter tff = new TickFileFilter(); // we dont' select any symbols, so just playback whatever we find on this day tff.isSymbolDateMatchUnion = true; // populate the filter from user's calendar tff.DateFilter(date, DateMatchType.Day | DateMatchType.Month | DateMatchType.Year); return(tff); }
void fupdate(object sender, bool setunions) { // set default search options if (setunions) { // if they have both dates and symbols selected, default // to intersection of both sets if (usedates.Checked && usestocks.Checked) { _symdateand.Checked = true; } else { _symdateand.Checked = false; } // if there are more than one year, more than one month, // or more than one day selected... default to a union of sets if ((yearlist.SelectedIndices.Count > 1) || (monthlist.SelectedIndices.Count > 1) || (daylist.SelectedIndices.Count > 1)) { _dateor.Checked = true; } // otherwise if dates are enabled, default to intersection only else if (yearlist.Enabled) { _dateand.Checked = true; } } // if we're watching files if (_dw.Visible) { // clear window _dw.Clear(); // get current filter TickFileFilter tff = GetFilter(); // get matching files string [] files = tff.Allows(TikUtil.GetFiles()); // display in window foreach (string file in files) { _dw.GotDebug(System.IO.Path.GetFileNameWithoutExtension(file)); } } // notify listeners if (FilterUpdate != null) { FilterUpdate(sender, new EventArgs()); } }
/// <summary> /// Create a historical simulator /// </summary> /// <param name="tickFolder">tick folder to use</param> /// <param name="tff">filter to determine what tick files from folder to use</param> public SingleSimImpl(string tickFolder, TickFileFilter tff) { _folder = tickFolder; if (tff != null) { _filter = tff; } else { _filter.DefaultDeny = false; } }
/// <summary> /// Returns the TIK file filter based on the samples used in this backtest /// </summary> /// <param name="baseFolder"></param> /// <param name="symbol"></param> /// <param name="filter"></param> /// <param name="startdate"></param> /// <param name="enddate"></param> /// <returns></returns> private static string[] GetTIKFiles(string baseFolder, ISecurityTracker securities, out TickFileFilter filter, int startdate, int enddate) { List <string> files = new List <string>(); //Create filter with the symbols as requested List <string> symbols = new List <string>(); foreach (var sec in securities.ToArray()) { symbols.Add(sec.Name); } filter = new TickFileFilter(symbols); //Add the initial timeperiod DateTime ct = Util.Qld2Dt(startdate); TimeSpan periodlenght = Util.Qld2Dt(enddate) - Util.Qld2Dt(startdate); //Filter the period for (int i = 0; i < periodlenght.TotalDays; i++) { filter.DateFilter(int.Parse(ct.AddDays(i).ToString("yyyyMMdd")), DateMatchType.Day); } //settings filter.IsDateMatchUnion = true; filter.DefaultDeny = true; //Select tickfiles foreach (var xdate in filter.DateList) { foreach (var symbol in filter.SymbolList) { //Check if file exists in the zip file FileInfo fi = new FileInfo(baseFolder + string.Format("\\{0}.zip", symbol)); if (!fi.Exists) { throw new FileNotFoundException("Could not find tik archive"); } using (ZipFile zip = ZipFile.Read(fi.FullName)) { if (!zip.ContainsEntry(symbol.ToUpper() + xdate.Date + ".TIK")) { continue; } } string file = fi.FullName + @"\" + symbol.ToUpper() + xdate.Date + ".TIK"; files.Add(file); } } return(files.ToArray()); }
/// <summary> /// gets currently selected filter /// </summary> /// <returns></returns> public TickFileFilter GetFilter() { TickFileFilter tff = new TickFileFilter(); // prepare date filter List <TickFileFilter.TLDateFilter> datefilter = new List <TickFileFilter.TLDateFilter>(); if (usedates.Checked) { for (int j = 0; j < yearlist.SelectedIndices.Count; j++) { datefilter.Add(new TickFileFilter.TLDateFilter(Convert.ToInt32(yearlist.Items[yearlist.SelectedIndices[j]]) * 10000, DateMatchType.Year)); } for (int j = 0; j < monthlist.SelectedItems.Count; j++) { datefilter.Add(new TickFileFilter.TLDateFilter(Convert.ToInt32(monthlist.Items[monthlist.SelectedIndices[j]]) * 100, DateMatchType.Month)); } for (int j = 0; j < daylist.SelectedItems.Count; j++) { datefilter.Add(new TickFileFilter.TLDateFilter(Convert.ToInt32(daylist.Items[daylist.SelectedIndices[j]]), DateMatchType.Day)); } } // prepare symbol filter List <string> symfilter = new List <string>(); if (usestocks.Checked) { for (int j = 0; j < stocklist.SelectedItems.Count; j++) { symfilter.Add(stocklist.Items[stocklist.SelectedIndices[j]].ToString()); } } // build consolidated filter if (usestocks.Checked && usedates.Checked) { tff = new TickFileFilter(symfilter, datefilter); } else if (usestocks.Checked) { tff = new TickFileFilter(symfilter); } else if (usedates.Checked) { tff = new TickFileFilter(datefilter); } // set search options tff.isDateMatchUnion = _dateor.Checked; tff.isSymbolDateMatchUnion = !_symdateand.Checked; tff.bUseCSV = bUseCSV; //return filter return(tff); }
public void Basics() { TickFileFilter tff = new TickFileFilter(new string[] { "GM" }); string[] result = tff.Allows(filenames); Assert.That(result.Length == 1); Assert.That(result[0] == filenames[0]); tff = new TickFileFilter(); tff.DateFilter(20070000, DateMatchType.Year); result = tff.Allows(filenames); Assert.That(result.Length == 3); Assert.That(result[2] == filenames[3]); }
bool SetFilter(string file) { if (File.Exists(file)) { _filterloc = file; _filter = TickFileFilter.FromFile(file); D("found filter: " + file); return(true); } else { D("no filter found: " + file); } return(false); }
public void SerializeDeserialize() { TickFileFilter tff = new TickFileFilter(new string[] { "IBM", "MHS", "T" }); tff.DateFilter(20070000, DateMatchType.Year); tff.isDateMatchUnion = false; tff.isSymbolDateMatchUnion = false; string msg = TickFileFilter.Serialize(tff); TickFileFilter f2 = TickFileFilter.Deserialize(msg); string msg2 = TickFileFilter.Serialize(f2); Assert.AreEqual(msg, msg2); Assert.AreEqual(tff.isDateMatchUnion, f2.isDateMatchUnion); Assert.AreEqual(tff.isSymbolDateMatchUnion, f2.isDateMatchUnion); }
void export(object o, EventArgs e) { TickFileFilter tff = GetFilter(); SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Filter (*.txt)|*.txt|All files (*.*)|*.*"; sfd.AddExtension = true; if (sfd.ShowDialog() == DialogResult.OK) { if (TickFileFilter.ToFile(tff, sfd.FileName)) { _dw.GotDebug("saved filter as: " + sfd.FileName); } else { _dw.GotDebug("unable to save filter as: " + sfd.FileName); } } }
public void AndTest() { // build a filter with two stocks TickFileFilter tff = new TickFileFilter(new string[] { "GM", "SPX" }); // add date file for year tff.DateFilter(20070000, DateMatchType.Year); // add another date filter for month tff.DateFilter(600, DateMatchType.Month); // set DateFilter to AND/intersection tff.isDateMatchUnion = false; // make sure three stocks match string[] result = tff.Allows(filenames); Assert.AreEqual(3, result.Length); // set more exclusive filter tff.isSymbolDateMatchUnion = false; // make sure two stocks match result = tff.Allows(filenames); Assert.AreEqual(2, result.Length); }
bool getsimhints(string folder, TickFileFilter tff, ref int date, ref string[] syms) { date = 0; syms = new string[0]; try { string wild_ext = _useCsvTicks.Checked ? "*_trades.csv" : TikConst.WILDCARD_EXT; var searOpts = _useCsvTicks.Checked ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; string[] files = Directory.GetFiles(folder, wild_ext, searOpts); var simfiles = tff.Allows(files); List <string> simsyms = new List <string>(simfiles.Length); Array.Sort(simfiles); // get earliest date var min = int.MaxValue; foreach (var sf in simfiles) { var sec = _useCsvTicks.Checked ? ChimeraDataUtils.SecurityFromFileName(sf) : SecurityImpl.SecurityFromFileName(sf); if (!string.IsNullOrWhiteSpace(sec.symbol) && !simsyms.Contains(sec.symbol)) { simsyms.Add(sec.symbol); } if ((sec.Date > 0) && (sec.Date < min)) { min = sec.Date; } } if (min != int.MaxValue) { date = min; } syms = simsyms.ToArray(); return(true); } catch (Exception ex) { debug("error getting sim hints: " + ex.Message + ex.StackTrace); return(false); } }
private void playbut_Click(object sender, EventArgs e) { if (!Directory.Exists(tickfolder)) { status("Tick folder " + tickfolder + " doesn't exist, stopping."); return; } highs = new Dictionary <string, decimal>(); lows = new Dictionary <string, decimal>(); TickFileFilter tff = new TickFileFilter(); tff.DateFilter(Util.ToTLDate(monthCalendar1.SelectionEnd), DateMatchType.Day | DateMatchType.Month | DateMatchType.Year); h.FileFilter = tff; _playback = new Playback(h); _playback.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_playback_RunWorkerCompleted); _playback.ProgressChanged += new ProgressChangedEventHandler(_playback_ProgressChanged); _playback.RunWorkerAsync(new PlayBackArgs((int)trackBar1.Value / 5, daystartpicker.Value)); status("Playback started..."); playbut.Enabled = false; stopbut.Enabled = true; trackBar1.Enabled = false; }
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e) { // set the filter on the simulator FileFilter = getfilterdate(Util.ToTLDate(monthCalendar1.SelectionEnd)); }