コード例 #1
0
ファイル: TestTickFileFilter.cs プロジェクト: w1r2p1/Core-1
        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]);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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());
            }
        }
コード例 #6
0
ファイル: SingleSimImpl.cs プロジェクト: w1r2p1/Core-1
 /// <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;
     }
 }
コード例 #7
0
ファイル: Program.cs プロジェクト: w1r2p1/Core-1
        /// <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());
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
        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]);
        }
コード例 #10
0
 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);
 }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
                }
            }
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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);
            }
        }
コード例 #15
0
ファイル: Replay.cs プロジェクト: michaelwills/tradelink
        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;
        }
コード例 #16
0
 private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
 {
     // set the filter on the simulator
     FileFilter = getfilterdate(Util.ToTLDate(monthCalendar1.SelectionEnd));
 }