コード例 #1
0
ファイル: BaseAlgorithm.cs プロジェクト: ssh352/runner
        /// <inheritdoc />
        public ResponseObject Start(AlgorithmConfiguration configuration, ExchangeProvidersContainer container)
        {
            Guard.Argument(configuration).Require(
                x => x is T,
                x => $"{x} cannot not be converted to {typeof(T)}, please make sure to use the correct AlgorithmConfiguration");

            StateManager = new StateManager <T>(configuration as T, container, Initial);

            // Add state switch tracking
            DatabaseEventListenerService.AddStateSource(StateManager);

            container.TimerProvider.RunPeriodicTimer();

            return(new ResponseObject(ResponseCode.Success));
        }
コード例 #2
0
        /// <summary>
        /// Cause the Main() to return with a given status code.
        /// </summary>
        /// <param name="exitCode">Reason for termination.</param>
        /// <returns>Exits before returning the exit code.</returns>
        public static int ExitProgramWithCode(ExitCode exitCode)
        {
            // Flush the logs by disposing the factory
            _loggerFactory?.Dispose();
            if (exitCode != ExitCode.Success)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"----------------------------------");
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"Exiting program with code {exitCode}");
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"----------------------------------");
            }

            DatabaseEventListenerService.CloseSession(exitCode);

            Env.ExitEnvironment((int)exitCode);
            return((int)exitCode);
        }
コード例 #3
0
        /// <summary>
        /// Builds a container for Binance.
        /// </summary>
        /// <param name="config">The algorithm configuration to use.</param>
        /// <typeparam name="T">The algorithm type.</typeparam>
        /// <returns>ExchangeProviderContainer.</returns>
        public ExchangeProvidersContainer BuildBinanceContainer <T>(AlgorithmConfiguration config)
            where T : IBaseAlgorithm
        {
            // Makes sure that the communication is enabled
            _binanceCommunications.EnableStreams();
            var timerProvider         = new BinanceTimerProvider(_loggerFactory, _binanceCommunications.CandleDispenser);
            var dataImplementation    = new BinanceDataProvider(_loggerFactory, _binanceCommunications, timerProvider);
            var tradingImplementation = new BinanceTradingProvider(_loggerFactory, _binanceCommunications, timerProvider);

            var dataProvider    = new DataProvider(_loggerFactory, dataImplementation, config);
            var tradingProvider = new TradingProvider(_loggerFactory, tradingImplementation, dataProvider, _allocationManager);

            // Doubly linked data provider to check candles
            timerProvider.DataProvider = dataProvider;

            // Inject database event listener
            DatabaseEventListenerService.AddOrderSource(tradingProvider);

            return(new ExchangeProvidersContainer(_loggerFactory, dataProvider, timerProvider, tradingProvider, typeof(T)));
        }