Пример #1
0
        public async Task <ActionResult> GetSignals(string exchange, string coinsToBuy, string strategy, string candleSize = "5")
        {
            var strategyName = WebUtility.HtmlDecode(strategy);

            List <string> coins     = new List <string>();
            Char          delimiter = ',';

            String[] coinsToBuyArray = coinsToBuy.Split(delimiter);
            foreach (var coin in coinsToBuyArray)
            {
                coins.Add(coin.ToUpper());
            }

            var backtestOptions = new BacktestOptions
            {
                DataFolder   = Global.DataPath,
                Exchange     = (Exchange)Enum.Parse(typeof(Exchange), exchange, true),
                Coins        = coins,
                Coin         = coinsToBuy,
                CandlePeriod = Int32.Parse(candleSize)
            };

            var candleProvider = new DatabaseCandleProvider();
            var items          = await candleProvider.GetSignals(backtestOptions, Global.DataStoreBacktest, strategyName);

            return(new JsonResult(items));
        }
Пример #2
0
        public async Task <bool> Simulation(string coinToBuy, string strategy, string fromDate, string toDate)
        {
            var candleProvider = new DatabaseCandleProvider();
            var globalFullApi  = await Global.ExchangeApi.GetFullApi();

            await candleProvider.CacheAllData(globalFullApi, Global.Configuration.ExchangeOptions.FirstOrDefault().Exchange);

            var currentExchangeOption = Global.Configuration.ExchangeOptions.FirstOrDefault();

            var simulationStartingDate = TimeZoneInfo.ConvertTimeToUtc(DateTime.ParseExact(fromDate, "yyyy-MM-ddTHH:mm:ss", System.Globalization.CultureInfo.InvariantCulture));
            var simulationEndingDate   = TimeZoneInfo.ConvertTimeToUtc(DateTime.ParseExact(toDate, "yyyy-MM-ddTHH:mm:ss", System.Globalization.CultureInfo.InvariantCulture));

            var tradeManager = new TradeManager();

            currentExchangeOption.SimulationCurrentDate = simulationStartingDate;

            while (currentExchangeOption.SimulationCurrentDate <= simulationEndingDate)
            {
                Global.Logger.Information($"------ SimulationCurrentDate start: {currentExchangeOption.SimulationCurrentDate}");
                var watch1 = System.Diagnostics.Stopwatch.StartNew();

                await tradeManager.LookForNewTrades(strategy);

                await tradeManager.UpdateExistingTrades();

                currentExchangeOption.SimulationCurrentDate = currentExchangeOption.SimulationCurrentDate.AddMinutes(5);

                watch1.Stop();
                Global.Logger.Information($"------SimulationCurrentDate end: {currentExchangeOption.SimulationCurrentDate} in #{watch1.Elapsed.TotalSeconds} seconds");
            }

            return(true);
        }