/*private void OnSTIOrderUpdateXML(ref string strOrder) * { * XmlSerializer xs = new XmlSerializer(typeof(SterlingLib.structSTIOrderUpdate)); * SterlingLib.structSTIOrderUpdate structOrder = (SterlingLib.structSTIOrderUpdate)xs.Deserialize(new StringReader(strOrder)); * } * * private void OnSTIPositionUpdateXML(ref string strPosition) * { * XmlSerializer xs = new XmlSerializer(typeof(SterlingLib.structSTIPositionUpdate)); * SterlingLib.structSTIPositionUpdate structPosition = (SterlingLib.structSTIPositionUpdate)xs.Deserialize(new StringReader(strPosition)); * int netPos = (structPosition.nSharesBot - structPosition.nSharesSld); * //AddListBoxItem("Postion (XML): " + structPosition.bstrSym + " Position = " + netPos); * }*/ private void button1_Click(object sender, EventArgs e) { using (SQLiteConnection conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True;")) { conn.Open(); string stm = "SELECT * FROM Algo WHERE Status='Queued'"; using (SQLiteCommand cmd = new SQLiteCommand(stm, conn)) { using (SQLiteDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { if (DateTime.ParseExact(rdr.GetString(3), "yyyy-MM-dd HH:mm:ss.ff", null) > DateTime.ParseExact(stiApp.GetServerTime(), "yyyyMMddHHmmss", null)) { Debug.WriteLine("---------------------"); Debug.WriteLine(rdr.GetString(1) + " : " + rdr.GetString(2) + " : " + rdr.GetString(3)); AlgoForm af = new AlgoForm(rdr.GetString(1), rdr.GetString(2), DateTime.ParseExact(rdr.GetString(3), "yyyy-MM-dd HH:mm:ss.ff", null), DateTime.ParseExact(rdr.GetString(4), "yyyy-MM-dd HH:mm:ss.ff", null), rdr.GetInt32(5), rdr.GetDecimal(6), rdr.GetInt32(7), rdr.GetInt32(10), rdr.GetInt32(11)); af.Show(); } } } } conn.Close(); } }
private void QueueAlgo() { //Get Date DateTime runDate = dateTimePicker1.Value; DateTime startTime = dateTimePicker6.Value; DateTime endTime = dateTimePicker7.Value; DateTime startDateTime = new DateTime(runDate.Year, runDate.Month, runDate.Day, startTime.Hour, startTime.Minute, startTime.Second); DateTime endDateTime = new DateTime(runDate.Year, runDate.Month, runDate.Day, endTime.Hour, endTime.Minute, endTime.Second); testAlgo.startTime = startDateTime; testAlgo.endTime = endDateTime; System.Timers.Timer timeUntilStart = new System.Timers.Timer(); System.Timers.Timer timeUntilEnd = new System.Timers.Timer(); testAlgo.bracketedOrders = Convert.ToInt32(numericUpDown4.Value); decimal startPrice = Convert.ToDecimal(numericUpDown1.Value); //Also midprice testAlgo.symbol = textBox1.Text.ToUpper(); testAlgo.incrementPrice = numericUpDown8.Value; testAlgo.incrementSize = Convert.ToInt32(numericUpDown10.Value); testAlgo.autoBalance = Convert.ToInt32(numericUpDown2.Value); testAlgo.hardStop = Convert.ToInt32(numericUpDown3.Value); string strServerTime = stiApp.GetServerTime(); DateTime SterlingServerTime = DateTime.ParseExact(strServerTime, "yyyyMMddHHmmss", null); TimeSpan ts = startDateTime - SterlingServerTime; TimeSpan ets = endDateTime - SterlingServerTime; if (ts > new TimeSpan(0)) { timeUntilStart.Interval = ts.TotalMilliseconds; } else { MessageBox.Show("Start Time must be later than current time."); return; } if (ets > new TimeSpan(0)) { timeUntilEnd.Interval = ets.TotalMilliseconds; } else { MessageBox.Show("End Time must be later than current time."); return; } textBox1.Enabled = false; ElapsedEventHandler handler = new ElapsedEventHandler(delegate(object o, ElapsedEventArgs f) { if (testAlgo.status == "Queued") { testAlgo.status = "Running"; if (this.label10.InvokeRequired) { this.label10.BeginInvoke((MethodInvoker) delegate() { this.label10.Text = "Running"; this.label10.Refresh(); }); } else { label10.Text = "Running"; label10.Refresh(); } testAlgo.Start(startPrice); updateAlgoStatusDB("Running"); Thread.Sleep(200); } }); timeUntilStart.Elapsed += handler; timeUntilStart.Start(); ElapsedEventHandler endHandler = new ElapsedEventHandler(delegate(object o, ElapsedEventArgs f) { if (testAlgo.status == "Running") { testAlgo.status = "Stopped"; if (this.label10.InvokeRequired) { this.label10.BeginInvoke((MethodInvoker) delegate() { this.label10.Text = "Stopped"; this.label10.Refresh(); }); } else { label10.Text = "Stopped"; label10.Refresh(); } testAlgo.stopAndCross(); updateAlgoStatusDB("Stopped"); Thread.Sleep(200); } }); timeUntilEnd.Elapsed += endHandler; timeUntilEnd.Start(); testAlgo.status = "Queued"; writeAlgoToDB(); label10.Text = "Queued"; label10.Refresh(); }