public bool getTick() { string line = ""; try { line = this.cf.ReadLine(); } catch (Exception ex) { show(ex.Message + Environment.NewLine); } tick = new eSigTick(); tick.factor = factorsize; bool good = false; try { good = tick.Load(line); } catch (AlreadySmallSizeException) { factorsize = 1; // fix it for this file tick.factor = factorsize; good = tick.Load(line); } tick.sym = symbol; return(good); }
bool getTick() { string line = ""; t = new eSigTick(); try { line = this.inf.ReadLine(); } catch (Exception ex) { show(ex.Message); } return(t.Load(line)); }
public int Test(List <FileInfo> tf) { show("Starting run " + name + " containing " + tf.Count + " symbols." + Environment.NewLine); int totfills = 0; int totalticks = approxticks(tf); for (int i = 1; i <= tf.Count; i++) // loop through the list { FileInfo f = tf[i - 1]; Match m = Regex.Match(f.Name, "([0-9]+)", RegexOptions.IgnoreCase); int date = Convert.ToInt32(m.Result("$1")); LoadIndexFiles(date); TickFile(f.Name); // set current file if (f.Length == 0) { continue; // ignore if tick file is empty } show(Environment.NewLine); show("Symbol " + this.symbol + " (" + i + " of " + tf.Count + ") "); // reset per-symbol statistics if (mybox != null) { mybox.Reset(); } bl = new BarList((BarInterval)bint, symbol); int fills = 0; tick = new eSigTick(); // reset our tick int itime = 0; BoxInfo bi = new BoxInfo(); while (this.getTick() && tick.hasTick) { // process the ticks line++; if ((line % 5000) == 0) { show("."); } if (((itime == 0) || (itime != tick.time))) { // load all the indicies for this time List <Index> itix = FetchIdx(tick.time); itime = tick.time; // send them to the box (before we send the tix) for (int id = 0; id < itix.Count; id++) { mybox.NewIndex(itix[id]); } } if ((this.exfilter != "") && ((!tick.isTrade && (!tick.be.Contains(exfilter) || !tick.oe.Contains(exfilter))) || (tick.isTrade && tick.ex.Contains(exfilter)))) { continue; } if ((bi.Open == 0) && tick.isTrade) { bi.Open = tick.trade; } if (tick.trade > bi.High) { bi.High = tick.trade; } if (tick.trade < bi.Low) { bi.Low = tick.trade; } bl.AddTick(tick); // save our tick to a bar if (bl.Has(2) && bl.Get(bl.Last - 1).DayEnd) { // we hit a new day in the same file, reset day stuff and set our DayEndTime bl.Reset(); bl.AddTick(tick); // put our tick back if (mybox != null) { mybox.Reset(); } SetDayClose(); // this has to be run after mybox.Reset!!! } // execute any pending orders on this tick if (mybroker.GetOrderList().Count > 0) { fills += mybroker.Execute(tick); } // trade box on this tick, if he generates any orders then send them if (mybox != null) { mybroker.sendOrder( mybox.Trade(tick, bl, mybroker.GetOpenPosition(this.symbol), bi)); // quit early if box shuts itself off and no pending orders if (mybox.Off && (mybroker.GetOrderList().Count == 0)) { break; } } if (this.delay != 0) { System.Threading.Thread.Sleep(this.delay); System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest; } this.ReportProgress((int)((100 * line) / totalticks)); } show(fills + " executions."); totfills += fills; this.cf.Close(); } show(Environment.NewLine); show(name + " complete: " + tf.Count + " symbols, " + totfills + " executions." + Environment.NewLine); return(totfills); }
void Convert(string file) { StreamReader epf = new StreamReader(file); Stock s = eSigTick.InitEpf(epf); string symbol = s.Symbol.Replace("//", ""); if (symmap.ContainsKey(symbol)) { symbol = symbol.Replace(symbol, symmap[symbol]); } string filename = symbol + s.Date + ".IDX"; d("Attempting to convert: " + file + " -> " + filename); StreamWriter idx; try { idx = new StreamWriter(filename, false); } catch (Exception ex) { d(ex.Message); return; } decimal o = 0; decimal h = 0; decimal l = 100000000000; while (!epf.EndOfStream) { eSigTick et = new eSigTick(); et.sym = prefix + symbol; try { string line = epf.ReadLine(); // get our tick from EPF et.Load(line); if (et.FullQuote) { continue; } } catch (Exception ex) { d(ex.Message); continue; } // set o/h/l/c decimal v = et.trade; if (o == 0) { o = v; } if (v > h) { h = v; } if (v < l) { l = v; } Index i = new Index(et.sym, v, o, h, l, v, et.date, et.time); // map to our index idx.WriteLine(i.Serialize()); // write our index } idx.Close(); epf.Close(); d("Finished converting " + filename); }