private void AssignCommonStrategyRules(string name, PrimaryStrategy strategy)
        {
            strategy.WhenStarted()
            .Do(() =>
            {
                _messageManager.ProceedAnswer("");
                _messageManager.ProceedAnswer($"{strategy} strategy started (key {name}).");
            })
            .Apply(strategy);

            strategy.WhenStopping()
            .Do(() =>
            {
                _messageManager.ProceedAnswer("");
                _messageManager.ProceedAnswer($"{name} strategy STOPPING, pos: {strategy.Position}");
            })
            .Apply(strategy);

            strategy.PrimaryStrategyStopped += () =>
            {
                {
                    _dataManager.MappedStrategies.Remove(name);
                    _messageManager.ProceedAnswer("");
                    _messageManager.ProceedAnswer($"{name} strategy STOPPED and removed from collection");
                }
            };
        }
Beispiel #2
0
        public OrderSynchronizer(PrimaryStrategy strategy)
        {
            Timeout = 1000;

            _currentOrder       = null;
            IsAnyOrdersInWork   = false;
            _isOrderRegistering = false;
            _isOrderCanceling   = false;
            _strategy           = strategy;

            _strategy.WhenStopping()
            .Or(_strategy.WhenStopped())
            .Do(s =>
            {
                _strategy.AddWarningLog($"trying to stop {_strategy.Name}: {_strategy.ProcessState}");
                _eventWaiter.Set();
            })
            .Apply(_strategy);
        }