private static void Main(string[] args) { var robotType = typeof(SingleSymbolMaCrossOverBot); var robotAttribute = robotType.GetCustomAttribute <RobotAttribute>(); Console.WriteLine($"Testing {robotAttribute.Name}"); Console.WriteLine("Please provide the symbol name (MSFT or AMZN)"); var symbolName = Console.ReadLine().ToUpperInvariant(); var symbol = new OhlcSymbol(new TimeBasedBars(TimeSpan.FromDays(1))) { Digits = 0, TickSize = 0.1, TickValue = 1, VolumeStep = 1000, MaxVolume = 100000000, MinVolume = 1000, VolumeUnitValue = 1, Commission = 1, Name = symbolName, Slippage = 0 }; var data = GetData($"Data\\daily_{symbolName}.csv"); Console.WriteLine("For backtesting please type backtest and for optimization please type optimize, then press 'Enter'"); var command = Console.ReadLine().ToLowerInvariant(); switch (command) { case "backtest": Backtest(symbol, data); break; case "optimize": Optimize(symbol, data); break; } Main(args); }
public GridOptimizerTests() { var startTime = DateTimeOffset.Now.AddDays(-10); var endTime = DateTimeOffset.Now; _optimizerSettings = new OptimizerSettings { AccountBalance = 10000, AccountLeverage = 500, BacktesterType = typeof(OhlcBacktester), BacktestSettingsType = typeof(BacktestSettings), }; var data = SampleDataGenerator.GetSampleData(200, startTime, endTime, TimeSpan.FromDays(1)); var symbol = new OhlcSymbol(new TimeBasedBars(TimeSpan.FromDays(1))) { Name = "Main" }; var symbolData = new SymbolBacktestData(symbol, data); _optimizerSettings.SymbolsData = new List <ISymbolBacktestData> { symbolData }; _optimizerSettings.BacktestSettingsParameters = new List <object> { startTime, endTime, }.ToArray(); _optimizerSettings.TradeEngineType = typeof(BacktestTradeEngine); _optimizerSettings.TimerContainerType = typeof(TimerContainer); _optimizerSettings.ServerType = typeof(Server); _optimizerSettings.RobotSettingsType = typeof(RobotParameters); _optimizerSettings.RobotType = typeof(SampleBot); _optimizerSettings.Parameters = new List <OptimizeParameter>() { new OptimizeParameter("Periods", 30, 50, 10), new OptimizeParameter("Deviation", 2), new OptimizeParameter("Range", 2000, 6000, 2000) }; _optimizerSettings.BacktesterInterval = TimeSpan.FromHours(1); _optimizer = new GridOptimizer(_optimizerSettings); }
public OptimizerTests() { var startTime = DateTimeOffset.Now.AddDays(-10); var endTime = DateTimeOffset.Now; _optimizerSettings = new OptimizerSettings { AccountBalance = 10000, AccountLeverage = 500, BacktesterType = typeof(OhlcBacktester), BacktestSettingsType = typeof(BacktestSettings), }; var data = SampleDataGenerator.GetSampleData(200, startTime, endTime, TimeSpan.FromDays(1)); var symbol = new OhlcSymbol(new Mock <IBars>().Object) { Name = "Main" }; var symbolData = new SymbolBacktestData(symbol, data); _optimizerSettings.SymbolsData = new List <ISymbolBacktestData> { symbolData }; _optimizerSettings.BacktestSettingsParameters = new List <object> { startTime, endTime, }.ToArray(); _optimizerSettings.TradeEngineType = typeof(BacktestTradeEngine); _optimizerSettings.TimerContainerType = typeof(TimerContainer); _optimizerSettings.TimerContainerParameters = new object[] { Mode.Backtest }; _optimizerSettings.ServerType = typeof(Server); _optimizerSettings.RobotSettingsType = typeof(RobotParameters); _optimizerSettings.RobotType = typeof(SampleBot); _optimizerMock = new Mock <Optimizer>(_optimizerSettings); }