public SupportedMessage(ConnectorSupportedMessagesPanel parent, IMessageAdapter adapter, MessageTypes type)
			{
				_parent = parent;
				_adapter = adapter;
				Type = type;
				Name = type.GetDisplayName();
			}
			protected override void OnInnerAdapterNewMessage(IMessageAdapter innerAdapter, Message message)
			{
				switch (message.Type)
				{
					case MessageTypes.Connect:
					case MessageTypes.Disconnect:
						base.OnInnerAdapterNewMessage(innerAdapter, message);
						break;

					case MessageTypes.Execution:
					{
						var execMsg = (ExecutionMessage)message;

						if (execMsg.ExecutionType != ExecutionTypes.Order && execMsg.ExecutionType != ExecutionTypes.Trade)
						{
							if (innerAdapter != InnerAdapters.LastOrDefault())
								return;
						}

						base.OnInnerAdapterNewMessage(innerAdapter, message);
						break;
					}

					default:
					{
						// на выход данные идут только из одного адаптера
						if (innerAdapter != InnerAdapters.LastOrDefault())
							return;

						base.OnInnerAdapterNewMessage(innerAdapter, message);
						break;
					}
				}
			}
		/// <summary>
		/// Initializes a new instance of the <see cref="HeartbeatAdapter"/>.
		/// </summary>
		/// <param name="innerAdapter">Underlying adapter.</param>
		public HeartbeatAdapter(IMessageAdapter innerAdapter)
			: base(innerAdapter)
		{
			InnerAdapter.NewOutMessage += AdapterOnNewOutMessage;

			_reConnectionSettings = InnerAdapter.ReConnectionSettings;
		}
        /// <summary>
        /// Initializes a new instance of the <see cref="CommissionMessageAdapter"/>.
        /// </summary>
        /// <param name="innerAdapter">The adapter, to which messages will be directed.</param>
        public CommissionMessageAdapter(IMessageAdapter innerAdapter)
            : base(innerAdapter)
        {
            if (innerAdapter == null)
                throw new ArgumentNullException("innerAdapter");

            InnerAdapter.NewOutMessage += ProcessOutMessage;
        }
		/// <summary>
		/// Создать <see cref="HeartbeatAdapter"/>.
		/// </summary>
		/// <param name="adapter">Адаптер.</param>
		public HeartbeatAdapter(IMessageAdapter adapter)
		{
			if (adapter == null)
				throw new ArgumentNullException("adapter");

			_adapter = adapter;
			_adapter.NewOutMessage += AdapterOnNewOutMessage;

			_reConnectionSettings = _adapter.ReConnectionSettings;
		}
		/// <summary>
		/// Создать <see cref="ManagedMessageAdapter"/>.
		/// </summary>
		/// <param name="innerAdapter">Адаптер, в который будут перенаправляться сообщения.</param>
		public ManagedMessageAdapter(IMessageAdapter innerAdapter)
		{
			if (innerAdapter == null)
				throw new ArgumentNullException("innerAdapter");

			_innerAdapter = innerAdapter;
			_innerAdapter.NewOutMessage += ProcessOutMessage;

			CommissionManager = new CommissionManager();
			LatencyManager = new LatencyManager();
			RiskManager = new RiskManager();
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="ChannelMessageAdapter"/>.
		/// </summary>
		/// <param name="innerAdapter">Underlying adapter.</param>
		/// <param name="inputChannel">Incomming messages channgel.</param>
		/// <param name="outputChannel">Outgoing message channel.</param>
		public ChannelMessageAdapter(IMessageAdapter innerAdapter, IMessageChannel inputChannel, IMessageChannel outputChannel)
			: base(innerAdapter)
		{
			if (inputChannel == null)
				throw new ArgumentNullException(nameof(inputChannel));

			if (outputChannel == null)
				throw new ArgumentNullException(nameof(outputChannel));

			InputChannel = inputChannel;
			OutputChannel = outputChannel;

			InputChannel.NewOutMessage += InputChannelOnNewOutMessage;
			OutputChannel.NewOutMessage += OutputChannelOnNewOutMessage;
		}
		/// <summary>
		/// Создать <see cref="ChannelMessageAdapter"/>.
		/// </summary>
		/// <param name="adapter">Адаптер.</param>
		/// <param name="inputChannel">Транспортный канал входящих сообщений.</param>
		/// <param name="outputChannel">Транспортный канал исходящих сообщений.</param>
		public ChannelMessageAdapter(IMessageAdapter adapter, IMessageChannel inputChannel, IMessageChannel outputChannel)
		{
			if (adapter == null)
				throw new ArgumentNullException("adapter");

			if (inputChannel == null)
				throw new ArgumentNullException("inputChannel");

			Adapter = adapter;

			InputChannel = inputChannel;
			OutputChannel = outputChannel;

			InputChannel.NewOutMessage += InputChannelOnNewOutMessage;
			OutputChannel.NewOutMessage += OutputChannelOnNewOutMessage;

			Adapter.NewOutMessage += AdapterOnNewOutMessage;
		}
Exemple #9
0
            protected override void OnInnerAdapterNewOutMessage(IMessageAdapter innerAdapter, Message message)
            {
                switch (message.Type)
                {
                case MessageTypes.Connect:
                case MessageTypes.Disconnect:
                    break;

                case MessageTypes.Security:
                case MessageTypes.Board:
                case MessageTypes.Level1Change:
                case MessageTypes.QuoteChange:
                case MessageTypes.Time:
                {
                    if (message.Adapter == _parent.MarketDataAdapter)
                    {
                        SendMessageToEmulationAdapters(message);
                    }

                    break;
                }

                case MessageTypes.CandlePnF:
                case MessageTypes.CandleRange:
                case MessageTypes.CandleRenko:
                case MessageTypes.CandleTick:
                case MessageTypes.CandleTimeFrame:
                case MessageTypes.CandleVolume:
                {
                    if (message.Adapter != _parent.MarketDataAdapter)
                    {
                        break;
                    }

                    SendMessageToEmulationAdapters(message);
                    return;
                }

                case MessageTypes.Execution:
                {
                    if (message.Adapter != _parent.MarketDataAdapter)
                    {
                        var execMsg = (ExecutionMessage)message;

                        if (execMsg.ExecutionType != ExecutionTypes.Transaction)
                        {
                            if (innerAdapter != InnerAdapters.LastOrDefault())
                            {
                                return;
                            }
                        }
                    }
                    else
                    {
                        SendMessageToEmulationAdapters(message);
                    }

                    break;
                }
                }

                base.OnInnerAdapterNewOutMessage(innerAdapter, message);
            }
		/// <summary>
		/// Initializes a new instance of the <see cref="SlippageMessageAdapter"/>.
		/// </summary>
		/// <param name="innerAdapter">The adapter, to which messages will be directed.</param>
		public SlippageMessageAdapter(IMessageAdapter innerAdapter)
			: base(innerAdapter)
		{
		}
Exemple #11
0
 /// <summary>
 /// Remove from <see cref="IMessageAdapter.SupportedMessages"/> message types related to market-data.
 /// </summary>
 /// <param name="adapter">Adapter.</param>
 public static void RemoveMarketDataSupport(this IMessageAdapter adapter)
 {
     adapter.RemoveSupportedMessage(MessageTypes.MarketData);
     adapter.RemoveSupportedMessage(MessageTypes.SecurityLookup);
 }
		/// <summary>
		/// Initializes a new instance of the <see cref="PositionMessageAdapter"/>.
		/// </summary>
		/// <param name="innerAdapter">The adapter, to which messages will be directed.</param>
		public PositionMessageAdapter(IMessageAdapter innerAdapter)
			: base(innerAdapter)
		{
		}
Exemple #13
0
 private void SubscribeMarketData(Security security, MarketDataTypes type, DateTimeOffset?from = null, DateTimeOffset?to = null, long?count = null, MarketDataBuildModes buildMode = MarketDataBuildModes.LoadAndBuild, MarketDataTypes?buildFrom = null, Level1Fields?buildField = null, int?maxDepth = null, IMessageAdapter adapter = null)
 {
     SubscribeMarketData(security, new MarketDataMessage
     {
         DataType    = type,
         IsSubscribe = true,
         From        = from,
         To          = to,
         Count       = count,
         BuildMode   = buildMode,
         BuildFrom   = buildFrom,
         BuildField  = buildField,
         MaxDepth    = maxDepth,
         Adapter     = adapter
     });
 }
 /// <inheritdoc />
 public long SubscribeLevel1(Security security, DateTimeOffset?from = null, DateTimeOffset?to = null, long?count = null, MarketDataBuildModes buildMode = MarketDataBuildModes.LoadAndBuild, MarketDataTypes?buildFrom = null, IMessageAdapter adapter = null)
 {
     return(SubscribeMarketData(security, MarketDataTypes.Level1, from, to, count, buildMode, buildFrom, adapter: adapter));
 }
Exemple #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CustomHistoryMessageAdapter"/>.
 /// </summary>
 /// <param name="innerAdapter">Underlying adapter.</param>
 public CustomHistoryMessageAdapter(IMessageAdapter innerAdapter)
     : base(innerAdapter)
 {
     this.AddSupportedMessage(ExtendedMessageTypes.EmulationState, null);
 }
Exemple #16
0
        /// <inheritdoc />
        public void SubscribeBoard(ExchangeBoard board, DateTimeOffset?from = null, DateTimeOffset?to = null, long?count = null, IMessageAdapter adapter = null)
        {
            if (board == null)
            {
                throw new ArgumentNullException(nameof(board));
            }

            SubscribeMarketData(null, MarketDataTypes.Board, from, to, count, adapter: adapter);
        }
 /// <summary>
 /// To call the event <see cref="DisconnectedEx"/>.
 /// </summary>
 /// <param name="adapter">Adapter, initiated event.</param>
 private void RaiseDisconnectedEx(IMessageAdapter adapter)
 {
     DisconnectedEx?.Invoke(adapter);
 }
 private void RaiseConnectionLost(IMessageAdapter adapter)
 {
     ConnectionLost?.Invoke(adapter);
 }
Exemple #19
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SecurityMappingMessageAdapter"/>.
 /// </summary>
 /// <param name="innerAdapter">The adapter, to which messages will be directed.</param>
 /// <param name="storage">Security identifier mappings storage.</param>
 public SecurityMappingMessageAdapter(IMessageAdapter innerAdapter, ISecurityMappingStorage storage)
     : base(innerAdapter)
 {
     Storage = storage ?? throw new ArgumentNullException(nameof(storage));
 }
Exemple #20
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BufferMessageAdapter"/>.
 /// </summary>
 /// <param name="innerAdapter">Underlying adapter.</param>
 public BufferMessageAdapter(IMessageAdapter innerAdapter)
     : base(innerAdapter)
 {
 }
Exemple #21
0
 Subscription IMarketDataProviderEx.SubscribeBoard(ExchangeBoard board, DateTimeOffset?from, DateTimeOffset?to, long?count, IMessageAdapter adapter) => null;
Exemple #22
0
 Subscription IMarketDataProviderEx.SubscribeNews(Security security, DateTimeOffset?from, DateTimeOffset?to, long?count, IMessageAdapter adapter) => null;
Exemple #23
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CustomHistoryMessageAdapter"/>.
 /// </summary>
 /// <param name="innerAdapter">Underlying adapter.</param>
 /// <param name="securityProvider">The provider of information about instruments.</param>
 public CustomHistoryMessageAdapter(IMessageAdapter innerAdapter, ISecurityProvider securityProvider)
     : this(innerAdapter)
 {
     _securityProvider = securityProvider ?? throw new ArgumentNullException(nameof(securityProvider));
 }
Exemple #24
0
 public void RegisterNews(Security security = null, IMessageAdapter adapter = null)
 {
     SubscribeNews(security, adapter: adapter);
 }
Exemple #25
0
 long IMarketDataProvider.SubscribeLevel1(Security security, DateTimeOffset?from, DateTimeOffset?to, long?count, MarketDataBuildModes buildMode, MarketDataTypes?buildFrom, IMessageAdapter adapter) => _idGenerator.GetNextId();
Exemple #26
0
 /// <inheritdoc />
 public void SubscribeOrders(Security security = null, DateTimeOffset?from = null, DateTimeOffset?to = null, long?count = null, IMessageAdapter adapter = null)
 {
     SubscribeOrders(new OrderStatusMessage
     {
         IsSubscribe = true,
         SecurityId  = security?.ToSecurityId() ?? default,
         From        = from,
         To          = to,
         Adapter     = adapter,
     });
Exemple #27
0
 long IMarketDataProvider.SubscribeNews(Security security, DateTimeOffset?from, DateTimeOffset?to, long?count, IMessageAdapter adapter) => _idGenerator.GetNextId();
Exemple #28
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PnLMessageAdapter"/>.
 /// </summary>
 /// <param name="innerAdapter">The adapter, to which messages will be directed.</param>
 public PnLMessageAdapter(IMessageAdapter innerAdapter)
     : base(innerAdapter)
 {
 }
Exemple #29
0
 Subscription IMarketDataProviderEx.SubscribeMarketDepth(Security security, DateTimeOffset?from, DateTimeOffset?to, long?count, MarketDataBuildModes buildMode, MarketDataTypes?buildFrom, int?maxDepth, TimeSpan?refreshSpeed, IOrderLogMarketDepthBuilder depthBuilder, IMessageAdapter adapter) => null;
		/// <summary>
		/// Initializes a new instance of the <see cref="LatencyMessageAdapter"/>.
		/// </summary>
		/// <param name="innerAdapter">The adapter, to which messages will be directed.</param>
		public LatencyMessageAdapter(IMessageAdapter innerAdapter)
			: base(innerAdapter)
		{
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="RiskMessageAdapter"/>.
		/// </summary>
		/// <param name="innerAdapter">The adapter, to which messages will be directed.</param>
		public RiskMessageAdapter(IMessageAdapter innerAdapter)
			: base(innerAdapter)
		{
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="PnLMessageAdapter"/>.
		/// </summary>
		/// <param name="innerAdapter">The adapter, to which messages will be directed.</param>
		public PnLMessageAdapter(IMessageAdapter innerAdapter)
			: base(innerAdapter)
		{
		}
Exemple #33
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CandleHolderMessageAdapter"/>.
 /// </summary>
 /// <param name="innerAdapter">Inner message adapter.</param>
 public CandleHolderMessageAdapter(IMessageAdapter innerAdapter)
     : base(innerAdapter)
 {
 }
Exemple #34
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LookupTrackingMessageAdapter"/>.
 /// </summary>
 /// <param name="innerAdapter">Inner message adapter.</param>
 public LookupTrackingMessageAdapter(IMessageAdapter innerAdapter)
     : base(innerAdapter)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="AssociatedSecurityAdapter"/>.
 /// </summary>
 /// <param name="innerAdapter">Inner message adapter.</param>
 public AssociatedSecurityAdapter(IMessageAdapter innerAdapter)
     : base(innerAdapter)
 {
 }
Exemple #36
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SubscriptionMessageAdapter"/>.
 /// </summary>
 /// <param name="innerAdapter">Inner message adapter.</param>
 public SubscriptionMessageAdapter(IMessageAdapter innerAdapter)
     : base(innerAdapter)
 {
 }
Exemple #37
0
 public void RegisterOrderLog(Security security, DateTimeOffset?from = null, DateTimeOffset?to = null, long?count = null, IMessageAdapter adapter = null)
 {
     SubscribeOrderLog(security, from, to, count, adapter);
 }
Exemple #38
0
 long IMarketDataProvider.SubscribeBoard(ExchangeBoard board, DateTimeOffset?from, DateTimeOffset?to, long?count, IMessageAdapter adapter) => _idGenerator.GetNextId();
Exemple #39
0
 Subscription IMarketDataProviderEx.SubscribeLevel1(Security security, DateTimeOffset?from, DateTimeOffset?to, long?count, MarketDataBuildModes buildMode, MarketDataTypes?buildFrom, IMessageAdapter adapter) => null;
		/// <summary>
		/// Initializes a new instance of the <see cref="CommissionMessageAdapter"/>.
		/// </summary>
		/// <param name="innerAdapter">The adapter, to which messages will be directed.</param>
		public CommissionMessageAdapter(IMessageAdapter innerAdapter)
			: base(innerAdapter)
		{
		}
Exemple #41
0
 /// <inheritdoc />
 public void SubscribeMarketDepth(Security security, DateTimeOffset?from = null, DateTimeOffset?to = null, long?count = null, MarketDataBuildModes buildMode = MarketDataBuildModes.LoadAndBuild, MarketDataTypes?buildFrom = null, int?maxDepth = null, IMessageAdapter adapter = null)
 {
     SubscribeMarketData(security, MarketDataTypes.MarketDepth, from, to, count, buildMode, buildFrom, null, maxDepth, adapter);
 }
Exemple #42
0
 /// <inheritdoc />
 public void SubscribeNews(Security security = null, DateTimeOffset?from = null, DateTimeOffset?to = null, long?count = null, IMessageAdapter adapter = null)
 {
     SubscribeMarketData(security, MarketDataTypes.News, from, to, count, adapter: adapter);
 }
Exemple #43
0
 public void RegisterTrades(Security security, DateTimeOffset?from = null, DateTimeOffset?to = null, long?count = null, MarketDataBuildModes buildMode = MarketDataBuildModes.LoadAndBuild, MarketDataTypes?buildFrom = null, IMessageAdapter adapter = null)
 {
     SubscribeTrades(security, from, to, count, buildMode, buildFrom, adapter);
 }
		/// <summary>
		/// Initializes a new instance of the <see cref="HeartbeatAdapter"/>.
		/// </summary>
		/// <param name="innerAdapter">Underlying adapter.</param>
		public HeartbeatAdapter(IMessageAdapter innerAdapter)
			: base(innerAdapter)
		{
			_reConnectionSettings = InnerAdapter.ReConnectionSettings;
		}
Exemple #45
0
 void IMessageProcessor.EnqueueMessage(Message message, IMessageAdapter adapter, bool force)
 {
     _newMessage.SafeInvoke(message, adapter);
 }