Exemplo n.º 1
0
        public void Stop()
        {
            loggingService.Info("Stop Trading service...");

            exchangeService.Stop();

            if (signalsService.Config.Enabled)
            {
                signalsService.Stop();
            }

            Application.Resolve <ICoreService>().StopTask(nameof(TradingTimedTask));
            Application.Resolve <ICoreService>().RemoveTask(nameof(TradingTimedTask));

            Application.Resolve <ICoreService>().StopTask(nameof(TradingRulesTimedTask));
            Application.Resolve <ICoreService>().RemoveTask(nameof(TradingRulesTimedTask));

            Application.Resolve <ICoreService>().StopTask(nameof(AccountTimedTask));
            Application.Resolve <ICoreService>().RemoveTask(nameof(AccountTimedTask));

            Account.Dispose();

            rulesService.UnregisterRulesChangeCallback(OnTradingRulesChanged);

            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.TradingRulesProcessed);
            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.TradingPairsProcessed);

            loggingService.Info("Trading service stopped");
        }
Exemplo n.º 2
0
        public void Stop()
        {
            loggingService.Info("Stop TradingViewCryptoSignalReceiver...");

            tasksService.RemoveTask($"{nameof(TradingViewCryptoSignalPollingTimedTask)} [{this.SignalName}]", stopTask: true);

            healthCheckService.RemoveHealthCheck($"{Constants.HealthChecks.TradingViewCryptoSignalsReceived} [{this.SignalName}]");

            loggingService.Info("TradingViewCryptoSignalReceiver stopped");
        }
        public void Stop()
        {
            loggingService.Info("Stop Backtesting service...");

            if (this.Config.Replay)
            {
                tasksService.RemoveTask(nameof(BacktestingLoadSnapshotsTimedTask), stopTask: true);
            }
            tasksService.RemoveTask(nameof(BacktestingSaveSnapshotsTimedTask), stopTask: true);

            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.BacktestingSignalsSnapshotTaken);
            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.BacktestingTickersSnapshotTaken);
            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.BacktestingSignalsSnapshotLoaded);
            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.BacktestingTickersSnapshotLoaded);

            Application.Resolve <ICoreService>().Started -= this.OnCoreServiceStarted;

            loggingService.Info("Backtesting service stopped");
        }
Exemplo n.º 4
0
        public virtual void Stop()
        {
            loggingService.Info("Stop Exchange service...");

            DisconnectTickersWebsocket();
            lastTickersUpdate = DateTimeOffset.MinValue;
            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.TickersUpdated);

            loggingService.Info("Exchange service stopped");
        }
Exemplo n.º 5
0
        public void Stop()
        {
            loggingService.Info("Stop TradingViewCryptoSignalReceiver...");

            Application.Resolve <ICoreService>().StopTask($"{nameof(TradingViewCryptoSignalPollingTimedTask)} [{SignalName}]");
            Application.Resolve <ICoreService>().RemoveTask($"{nameof(TradingViewCryptoSignalPollingTimedTask)} [{SignalName}]");

            healthCheckService.RemoveHealthCheck($"{Constants.HealthChecks.TradingViewCryptoSignalsReceived} [{SignalName}]");

            loggingService.Info("TradingViewCryptoSignalReceiver stopped");
        }
        public void Stop()
        {
            loggingService.Info("Stop Backtesting Signals service...");

            tasksService.RemoveTask(nameof(SignalRulesTimedTask), stopTask: true);

            rulesService.UnregisterRulesChangeCallback(OnSignalRulesChanged);

            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.SignalRulesProcessed);

            loggingService.Info("Backtesting Signals service stopped");
        }
        public void Stop()
        {
            loggingService.Info("Stop Backtesting Signals service...");

            Application.Resolve <ICoreService>().StopTask(nameof(SignalRulesTimedTask));
            Application.Resolve <ICoreService>().RemoveTask(nameof(SignalRulesTimedTask));

            rulesService.UnregisterRulesChangeCallback(OnSignalRulesChanged);

            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.SignalRulesProcessed);

            loggingService.Info("Backtesting Signals service stopped");
        }
Exemplo n.º 8
0
        public void Stop()
        {
            loggingService.Info("Stop Trading service...");

            Exchange.Stop();

            if (signalsService.Config.Enabled)
            {
                signalsService.Stop();
            }

            tasksService.RemoveTask(nameof(TradingTimedTask), stopTask: true);
            tasksService.RemoveTask(nameof(TradingRulesTimedTask), stopTask: true);
            tasksService.RemoveTask(nameof(AccountRefreshTimedTask), stopTask: true);

            Account.Dispose();

            rulesService.UnregisterRulesChangeCallback(OnTradingRulesChanged);

            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.TradingRulesProcessed);
            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.TradingPairsProcessed);

            loggingService.Info("Trading service stopped");
        }
Exemplo n.º 9
0
        public void Stop()
        {
            loggingService.Info("Stop Signals service...");

            foreach (var receiver in signalReceivers.Values)
            {
                receiver.Stop();
            }
            signalReceivers.Clear();

            tasksService.RemoveTask(nameof(SignalRulesTimedTask), stopTask: true);

            rulesService.UnregisterRulesChangeCallback(OnSignalRulesChanged);

            healthCheckService.RemoveHealthCheck(Constants.HealthChecks.SignalRulesProcessed);

            loggingService.Info("Signals service stopped");
        }
Exemplo n.º 10
0
        public override void Run()
        {
            if (coreService.Config.HealthCheckEnabled)
            {
                bool healthCheckFailed = false;
                loggingService.Info("Health check results:");

                foreach (var healthCheck in healthCheckService.GetHealthChecks().OrderBy(c => c.Name))
                {
                    var    elapsedSinceLastUpdate = (DateTimeOffset.Now - healthCheck.LastUpdated).TotalSeconds;
                    bool   healthCheckTimeout     = coreService.Config.HealthCheckSuspendTradingTimeout > 0 && elapsedSinceLastUpdate > coreService.Config.HealthCheckSuspendTradingTimeout;
                    string indicator = (healthCheck.Failed || healthCheckTimeout) ? "[-]" : "[+]";

                    if (healthCheck.Message != null)
                    {
                        loggingService.Info($" {indicator} ({healthCheck.LastUpdated:HH:mm:ss}) {healthCheck.Name} - {healthCheck.Message}");
                    }
                    else
                    {
                        loggingService.Info($" {indicator} ({healthCheck.LastUpdated:HH:mm:ss}) {healthCheck.Name}");
                    }

                    if (healthCheck.Failed || healthCheckTimeout)
                    {
                        healthCheckFailed = true;
                    }
                }

                if (healthCheckFailed)
                {
                    healthCheckFailures++;
                }
                else
                {
                    healthCheckFailures = 0;
                }

                if (healthCheckFailed && coreService.Config.HealthCheckFailuresToRestartServices > 0 && healthCheckFailures >= coreService.Config.HealthCheckFailuresToRestartServices)
                {
                    coreService.Restart();
                }
                else
                {
                    if (healthCheckFailed && !tradingService.IsTradingSuspended)
                    {
                        loggingService.Info($"Health check failed ({healthCheckFailures})");
                        notificationService.Notify($"Health check failed ({healthCheckFailures})");
                        healthCheckService.RemoveHealthCheck(Constants.HealthChecks.TradingPairsProcessed);
                        healthCheckService.RemoveHealthCheck(Constants.HealthChecks.TradingRulesProcessed);
                        healthCheckService.RemoveHealthCheck(Constants.HealthChecks.SignalRulesProcessed);
                        tradingService.SuspendTrading();
                    }
                    else if (!healthCheckFailed && tradingService.IsTradingSuspended)
                    {
                        loggingService.Info("Health check passed");
                        notificationService.Notify("Health check passed");
                        tradingService.ResumeTrading();
                    }
                }
            }
        }