예제 #1
0
        public TradeSystem(TradeSystem tsys)
        {
            this.db    = tsys.db;
            this.posdb = tsys.posdb;
            this.form  = tsys.form;

            max_investment = tsys.max_investment;
            lambda         = tsys.lambda;
            begin_lambda   = tsys.BeginLambda;
        }
예제 #2
0
        private void TradeSystemActionsRun_Click(object sender, EventArgs e)
        {
            TradeSystemActionsTextbox.Clear();
            sim_results = null;
            sim_done    = 0;


            if (!first_run)
            {
                first_run = false;
                db.Clear();
                db.ImportCSVDir(CSV_Dirname);
            }

            int RunN;

            try { RunN = Int32.Parse(textBox1.Text); }
            catch (Exception) { RunN = 1; }

            try { InitLambda = Int32.Parse(initlambdaTextbox.Text); }
            catch (Exception) { InitLambda = 1; }

            try { MaxLambda = Int32.Parse(maxlambdaTextbox.Text); }
            catch (Exception) { MaxLambda = InitLambda + 1; }

            if (MaxLambda <= InitLambda)
            {
                MaxLambda = InitLambda + 1;
            }

            sim_done                   = 0;
            textBox1.ReadOnly          = true;
            sim_results                = new RunResults[RunN * MaxLambda];
            maxlambdaTextbox.ReadOnly  = true;
            initlambdaTextbox.ReadOnly = true;


            if (tradesystem_tasklist != null)
            {
                MessageBox.Show("Treads still running");
                return;
            }
            tradesystem_tasklist = new LinkedList <TradeSystem>();

            for (int k = InitLambda; k < MaxLambda; k++)
            {
                for (int i = 0; i < RunN; i++)
                {
                    TradeSystem tss = null;
                    if (TradesystemTypeComboBox.SelectedItem.ToString().Equals("Random"))
                    {
                        if ((k == InitLambda) && (i == 0))
                        {
                            InitDB();
                        }
                        tss = new TradeSystemRandom(db, this);
                    }
                    else if (TradesystemTypeComboBox.SelectedItem.ToString().Equals("Analytic"))
                    {
                        if ((k == InitLambda) && (i == 0))
                        {
                            InitAnalytic();
                        }

                        tss = new TradeSystemAnalytic(db, this);
                    }
                    else if (TradesystemTypeComboBox.SelectedItem.ToString().Equals("Delu"))
                    {
                        if ((k == InitLambda) && (i == 0))
                        {
                            InitDelu();
                        }
                        tss = new TradeSystemDelu(db, this);
                        System.Threading.Thread.Sleep(1);
                    }
                    else if (TradesystemTypeComboBox.SelectedItem.ToString().Equals("Silly"))
                    {
                        if ((k == InitLambda) && (i == 0))
                        {
                            InitDB();
                        }
                        tss = new TradeSystemSilly(db, this);
                    }

                    else if (TradesystemTypeComboBox.SelectedItem.ToString().Equals("Neural"))
                    {
                        double[] prova = new double[100];
                        for (int zz = 0; zz < prova.Length; zz++)
                        {
                            prova[zz] = zz;
                        }

                        double[] prova1  = TI.calculate_mm(prova, 30);
                        double[] prova11 = TI.calculate_mm_base(prova, 30, 1);
                        double[] prova2  = TI.calculate_mm_base_new(prova, 30, 1);
                        double[] prova3  = TI.calculate_emm(prova, 30, 0.5);
                        double[] prova33 = TI.calculate_mm_base(prova, 30, 2);
                        double[] prova4  = TI.calculate_mm_base_new(prova, 30, 2);

                        System.Console.WriteLine(prova1[99] + " " + prova11[99] + " " + prova2[99]);
                        System.Console.WriteLine(prova3[99] + " " + prova33[99] + " " + prova4[99]);

                        /*
                         * StreamWriter SW = null;
                         * try { SW = new StreamWriter("test"); }
                         * catch (Exception) { SW = null; }
                         *
                         *
                         * for(int z=0;z<vals.Length;z++)
                         *      SW.WriteLine(vals[z] + " " + oldmean[z] + " " + newmean[z]);
                         */
                        if ((k == InitLambda) && (i == 0))
                        {
                            InitDB();
                        }
                        tss = new TradeSystemRandom(db, this);
                    }

                    else
                    {
                        continue;
                    }

//	                try { tss.InitialCapital = Double.Parse(textBoxInitialCapital.Text); }
//	                catch (Exception) { tss.InitialCapital = 0; }

                    try { tss.MaxInvestment = Double.Parse(textBox2.Text); }
                    catch (Exception) { tss.MaxInvestment = 0; }

                    tss.AdvancedStatistics = checkBox2.Checked;
                    tss.ScatterPlot        = checkBox1.Checked;
                    tss.BeginLambda        = InitLambda;
                    tss.Lambda             = k;

                    tradesystem_tasklist.AddLast(tss);
                }
            }

            time_start = DateTime.Now;
            int thread_num = Math.Min(max_threads, tradesystem_tasklist.Count);

            for (int i = 0; i < thread_num; i++)
            {
                tradesystem_tasklist.ElementAt(i).run();
            }
        }
예제 #3
0
        public void notifySimulationStatus(String msg, TradeSystem t)
        {
            if (TradeSystemActionsTextbox.InvokeRequired)
            {
                try
                {
                    DelegateSimulationStatus method = notifySimulationStatus;
                    this.Invoke(method, new object[] { msg, t });
                }
                catch (ObjectDisposedException) { }
            }
            else
            {
                if (msg.Equals("DONE"))
                {
                    sim_results[sim_done++] = t.Results;

                    RunN   = Int32.Parse(textBox1.Text);
                    TotSim = (int)((MaxLambda - InitLambda) * RunN);

                    int val0 = (int)(100 * sim_done / TotSim);
                    int val  = val0 - progressBar1.Value;
                    progressBar1.Increment(val);

                    TradeSystemActionsTextbox.Clear();
                    double timeremaining = (TotSim - sim_done) * ((DateTime.Now - time_start).TotalSeconds) / (sim_done);
                    int    min           = (int)(timeremaining / 60);
                    int    sec           = (int)(timeremaining % 60);
                    if (min == 0)
                    {
                        TradeSystemActionsTextbox.AppendText("Time Remaining: " + sec + "''\n");
                    }
                    else
                    {
                        TradeSystemActionsTextbox.AppendText("Time Remaining: " + min + "' " + sec + "''\n");
                    }

                    if (sim_done == 1)
                    {
                        TradeSystemActionsTextbox.Clear();
                        TradeSystemActionsTextbox.AppendText("Time Remaining: -----\n");
                    }


                    if (sim_done == TotSim)
                    {
                        TradeSystemActionsTextbox.Clear();
                        sec = (int)((DateTime.Now - time_start).TotalSeconds);
                        min = (int)(sec / 60);
                        sec = (int)(sec % 60);
                        if (min == 0)
                        {
                            TradeSystemActionsTextbox.AppendText("Simulation Time: " + sec + "''\n");
                        }
                        else
                        {
                            TradeSystemActionsTextbox.AppendText("Simulation Time: " + min + "' " + sec + "''\n");
                        }


                        tradesystem_tasklist = null;

                        ManageResults();

                        FindSimulationFilename();
                        maxlambdaTextbox.ReadOnly  = false;
                        initlambdaTextbox.ReadOnly = false;
                        textBox1.ReadOnly          = false;
//						SomeStuff();
                    }
                    else
                    {
                        int index = sim_done + max_threads - 1;

                        if (index < tradesystem_tasklist.Count)
                        {
                            tradesystem_tasklist.ElementAt(index).run();
                        }
                    }
                }
            }
        }