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); }
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); }
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); }
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); } } }
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); }
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); }
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); }