Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }