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; }
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) { }
/// <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) { }
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)); }
/// <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); }
/// <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); }
/// <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)); }
/// <summary> /// Initializes a new instance of the <see cref="BufferMessageAdapter"/>. /// </summary> /// <param name="innerAdapter">Underlying adapter.</param> public BufferMessageAdapter(IMessageAdapter innerAdapter) : base(innerAdapter) { }
Subscription IMarketDataProviderEx.SubscribeBoard(ExchangeBoard board, DateTimeOffset?from, DateTimeOffset?to, long?count, IMessageAdapter adapter) => null;
Subscription IMarketDataProviderEx.SubscribeNews(Security security, DateTimeOffset?from, DateTimeOffset?to, long?count, IMessageAdapter adapter) => null;
/// <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)); }
public void RegisterNews(Security security = null, IMessageAdapter adapter = null) { SubscribeNews(security, adapter: adapter); }
long IMarketDataProvider.SubscribeLevel1(Security security, DateTimeOffset?from, DateTimeOffset?to, long?count, MarketDataBuildModes buildMode, MarketDataTypes?buildFrom, IMessageAdapter adapter) => _idGenerator.GetNextId();
/// <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, });
long IMarketDataProvider.SubscribeNews(Security security, DateTimeOffset?from, DateTimeOffset?to, long?count, IMessageAdapter adapter) => _idGenerator.GetNextId();
/// <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) { }
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="CandleHolderMessageAdapter"/>. /// </summary> /// <param name="innerAdapter">Inner message adapter.</param> public CandleHolderMessageAdapter(IMessageAdapter innerAdapter) : base(innerAdapter) { }
/// <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) { }
/// <summary> /// Initializes a new instance of the <see cref="SubscriptionMessageAdapter"/>. /// </summary> /// <param name="innerAdapter">Inner message adapter.</param> public SubscriptionMessageAdapter(IMessageAdapter innerAdapter) : base(innerAdapter) { }
public void RegisterOrderLog(Security security, DateTimeOffset?from = null, DateTimeOffset?to = null, long?count = null, IMessageAdapter adapter = null) { SubscribeOrderLog(security, from, to, count, adapter); }
long IMarketDataProvider.SubscribeBoard(ExchangeBoard board, DateTimeOffset?from, DateTimeOffset?to, long?count, IMessageAdapter adapter) => _idGenerator.GetNextId();
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) { }
/// <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); }
/// <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); }
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; }
void IMessageProcessor.EnqueueMessage(Message message, IMessageAdapter adapter, bool force) { _newMessage.SafeInvoke(message, adapter); }