Exemple #1
0
 /// <summary>
 /// create file from ticks
 /// </summary>
 /// <param name="ticks"></param>
 /// <param name="tw"></param>
 /// <returns></returns>
 public static bool TicksToFile(Tick[] ticks, TikWriter tw)
 {
     try
     {
         foreach (Tick k in ticks)
         {
             tw.NewTick(k);
         }
         tw.Close();
         Log.Debug(tw.RealSymbol + " saved " + tw.Count + " ticks to: " + tw.Filepath);
     }
     catch (Exception ex)
     {
         Log.Error(ex, "Error creating file from ticks");
         return(false);
     }
     return(true);
 }
Exemple #2
0
        public bool NewTick(Tick t)
        {
            if (_stopped)
            {
                return(false);
            }
            if ((t.Symbol == null) || (t.Symbol == ""))
            {
                return(false);
            }
            TikWriter tw;
            // prepare last date of tick
            int lastdate;
            // get last date
            bool havedate = _datedict.TryGetValue(t.Symbol, out lastdate);

            // if we don't have date, use present date
            if (!havedate)
            {
                lastdate = t.Date;
                _datedict.Add(t.Symbol, t.Date);
            }
            // see if we need a new day
            bool samedate = lastdate == t.Date;
            // see if we have stream already
            bool havestream = _filedict.TryGetValue(t.Symbol, out tw);

            // if no changes, just save tick
            if (samedate && havestream)
            {
                try
                {
                    tw.NewTick((TickImpl)t);
                    return(true);
                }
                catch (IOException) { return(false); }
            }
            try
            {
                // if new date, close stream
                if (!samedate)
                {
                    try
                    {
                        if (tw != null)
                        {
                            tw.Close();
                        }
                    }
                    catch (IOException) { }
                }
                // ensure file is writable
                string fn = TikWriter.SafeFilename(t.Symbol, _path, t.Date);
                if (TikUtil.IsFileWritetable(fn))
                {
                    // open new stream
                    tw = new TikWriter(_path, t.Symbol, t.Date);
                    // save tick
                    tw.NewTick((TickImpl)t);
                    // save stream
                    if (!havestream)
                    {
                        _filedict.Add(t.Symbol, tw);
                    }
                    else
                    {
                        _filedict[t.Symbol] = tw;
                    }
                    // save date if changed
                    if (!samedate)
                    {
                        _datedict[t.Symbol] = t.Date;
                    }
                }
            }
            catch (IOException) { return(false); }
            catch (Exception) { return(false); }

            return(false);
        }
Exemple #3
0
 private static void HistSource_gotTick(Tick t)
 {
     _tw.NewTick((TickImpl)t);
 }