Exemple #1
0
        /*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();
            }
        }
Exemple #2
0
        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();
        }