Beispiel #1
0
        public override void Run()
        {
            MulticoreOptimizer optimizer = new MulticoreOptimizer();

            OptimizationUniverse universe = new OptimizationUniverse();

            for (int length1 = 2; length1 < 14; length1++)
            {
                for (int length2 = length1 + 1; length2 < 28; length2++)
                {
                    OptimizationParameterSet parameter = new OptimizationParameterSet();

                    parameter.Add("Length1", length1);
                    parameter.Add("Length2", length2);
                    parameter.Add("Bar", (long)60);

                    universe.Add(parameter);
                }
            }

            strategy = new SMACrossover(framework, "strategy ");

            Instrument instrument1 = InstrumentManager.Instruments["AAPL"];
            Instrument instrument2 = InstrumentManager.Instruments["MSFT"];

            InstrumentList instruments = new InstrumentList();

            instruments.Add(instrument1);
            instruments.Add(instrument2);

            DataSimulator.DateTime1 = new DateTime(2013, 12, 01);
            DataSimulator.DateTime2 = new DateTime(2013, 12, 31);

            optimizer.Optimize(strategy, instruments, universe, 100);
        }
Beispiel #2
0
        public OptimizationParameterSet LoadParameters(string path)
        {
            List <OptimizationParameter> list = new List <OptimizationParameter>();

            try
            {
                using (TextReader reader = new StreamReader(path))
                {
                    list = (List <OptimizationParameter>)JsonConvert.DeserializeObject(reader.ReadToEnd(), list.GetType());
                    reader.Close();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            OptimizationParameterSet set = new OptimizationParameterSet();

            foreach (var l in list)
            {
                set.Add(l);
            }
            return(set);
        }
Beispiel #3
0
        public string SaveParameters(OptimizationParameterSet set, string path)
        {
            string str = JsonConvert.SerializeObject(set, set.GetType(), jSetting);

            using (TextWriter writer = new StreamWriter(path))
            {
                writer.Write("{0}", str);
                writer.Close();
            }
            return(str);
        }
Beispiel #4
0
 public void SetParameters(object obj, OptimizationParameterSet set)
 {
     foreach (OptimizationParameter parameter in set)
     {
         FieldInfo info = obj.GetType().GetField(parameter.Name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
         if (info != null)
         {
             var v = Convert.ChangeType(parameter.Value, info.FieldType);
             info.SetValue(obj, v);
         }
     }
 }
Beispiel #5
0
        public OptimizationParameterSet GetParameters(object obj)
        {
            OptimizationParameterSet set = new OptimizationParameterSet();

            foreach (FieldInfo info in obj.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance))
            {
                if (info.GetCustomAttributes(typeof(ParameterAttribute), true).Length > 0)
                {
                    set.Add(info.Name, info.GetValue(obj));
                }
            }
            return(set);
        }
Beispiel #6
0
        public override void Run()
        {
            MulticoreOptimizer optimizer = new MulticoreOptimizer();

            OptimizationUniverse universe = new OptimizationUniverse();

            for (int length1 = 2; length1 < 14; length1++)
                for (int length2 = length1 + 1; length2 < 28; length2++)
                {
                    OptimizationParameterSet parameter = new OptimizationParameterSet();

                    parameter.Add("Length1", length1);
                    parameter.Add("Length2", length2);
                    parameter.Add("Bar", (long)60);

                    universe.Add(parameter);
                }

            strategy = new SMACrossover(framework, "strategy ");

            Instrument instrument1 = InstrumentManager.Instruments["AAPL"];
            Instrument instrument2 = InstrumentManager.Instruments["MSFT"];

            InstrumentList instruments = new InstrumentList();

            instruments.Add(instrument1);
            instruments.Add(instrument2);

            DataSimulator.DateTime1 = new DateTime(2013, 12, 01);
            DataSimulator.DateTime2 = new DateTime(2013, 12, 31);

            optimizer.Optimize(strategy, instruments, universe, 100);
        }
Beispiel #7
0
        public override void Run()
        {
            MulticoreOptimizer optimizer = new MulticoreOptimizer(this.framework);


            OptimizationUniverse universe = new OptimizationUniverse();

            for (decimal Delta = 1; Delta < 8; Delta++)
            {
                OptimizationParameterSet parameter = new OptimizationParameterSet();

                parameter.Add("Delta", Delta);

                universe.Add(parameter);
            }
            Instrument spreadInsturment = InstrumentManager.Get("*NG 01-15 vs *NG 02-15");

            // Add spread instrument if needed.
            if (spreadInsturment == null)
            {
                spreadInsturment = new Instrument(InstrumentType.Future, "*NG 01-15 vs *NG 02-15");

                InstrumentManager.Add(spreadInsturment);
            }

            spreadInsturment.Legs.Clear();

            // Add legs for spread instrument if needed.
            if (spreadInsturment.Legs.Count == 0)
            {
                spreadInsturment.Legs.Add(new Leg(InstrumentManager.Get("*NG 01-15"), 1));
                spreadInsturment.Legs.Add(new Leg(InstrumentManager.Get("*NG 02-15"), 1));
            }

            // Main strategy.
            strategy = new Strategy(framework, "SpreadTrading");

            // Create BuySide strategy and add trading instrument.
            MyStrategy buySide = new MyStrategy(framework, "BuySide");

            buySide.Instruments.Add(spreadInsturment);

            // Create SellSide strategy.
            SpreadSellSide sellSide = new SpreadSellSide(framework, "SellSide");

            //sellSide.Global[SpreadSellSide.barSizeCode] = barSize;

            // Set SellSide as data and execution provider for BuySide strategy.
            buySide.DataProvider      = sellSide;
            buySide.ExecutionProvider = sellSide;

            // Add strategies to main.
            strategy.AddStrategy(buySide);
            strategy.AddStrategy(sellSide);

            // Set DataSimulator's dates.
            DataSimulator.DateTime1 = new DateTime(2014, 11, 18);            // 1 day before real start
            DataSimulator.DateTime2 = new DateTime(2014, 12, 30);            // 1 day after real end

            InstrumentList instruments = new InstrumentList();

            instruments.Add(spreadInsturment);

            strategy.AddInstruments(instruments);

            //You can choose an optimization method from the "Optimizers" window
            //and observe the optimization results in the "Optimization Results" window.

            //Optimization can use either of two ways to declare parameters:

            //1. Optimization using [OptimizationParameter] atrributes from Strategy

            //Optimize(strategy);

            //2. Optimization via OptimizationUniverse
            optimizer.Optimize(strategy, universe);
        }