Пример #1
0
        private void RequestPrice(ICommandSender sender, IOperationExecutionInfo <SpecialLiquidationOperationData>
                                  executionInfo)
        {
            //hack, requested by the bank
            var positionsVolume = executionInfo.Data.Volume != 0 ? executionInfo.Data.Volume : 1;

            var command = new GetPriceForSpecialLiquidationCommand
            {
                OperationId   = executionInfo.Id,
                CreationTime  = _dateService.Now(),
                Instrument    = executionInfo.Data.Instrument,
                Volume        = positionsVolume,
                RequestNumber = executionInfo.Data.RequestNumber,
                RequestedFromCorporateActions = executionInfo.Data.RequestedFromCorporateActions
            };

            if (_marginTradingSettings.ExchangeConnector == ExchangeConnectorType.RealExchangeConnector)
            {
                //send it to the Gavel
                sender.SendCommand(command, _cqrsContextNamesSettings.Gavel);
            }
            else
            {
                _specialLiquidationService.SavePriceRequestForSpecialLiquidation(command);
            }

            //special command is sent instantly for timeout control.. it is retried until timeout occurs
            sender.SendCommand(new GetPriceForSpecialLiquidationTimeoutInternalCommand
            {
                OperationId    = executionInfo.Id,
                CreationTime   = _dateService.Now(),
                TimeoutSeconds = _marginTradingSettings.SpecialLiquidation.PriceRequestTimeoutSec,
                RequestNumber  = executionInfo.Data.RequestNumber
            }, _cqrsContextNamesSettings.TradingEngine);
        }
Пример #2
0
        public void SavePriceRequestForSpecialLiquidation(GetPriceForSpecialLiquidationCommand command)
        {
            _requests.TryAdd(command.OperationId, command);

            if (_specialLiquidationSettings.FakePriceRequestAutoApproval)
            {
                ApprovePriceRequest(command.OperationId, null);

                _log.WriteInfo(nameof(ManualRfqService),
                               nameof(SavePriceRequestForSpecialLiquidation),
                               $"The price request for {command.OperationId} has been automatically approved according to configuration");
            }
        }