• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# Messages.MarketDataMessage类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中StockSharp.Messages.MarketDataMessage的典型用法代码示例。如果您正苦于以下问题:C# MarketDataMessage类的具体用法?C# MarketDataMessage怎么用?C# MarketDataMessage使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



MarketDataMessage类属于StockSharp.Messages命名空间,在下文中一共展示了MarketDataMessage类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: UnsubscribeCandles

		public void UnsubscribeCandles(CandleSeries series)
		{
			var tuple = _subscriptionDates.TryGetValue(series.Security.Id);
			if(tuple == null)
				return;

			var msg = new MarketDataMessage().FillSecurityInfo(this, series.Security);
			msg.TransactionId = TransactionIdGenerator.GetNextId();
			msg.OriginalTransactionId = tuple.Item2;
			msg.SecurityId = GetSecurityId(series.Security);
			msg.DataType = MarketDataTypes.CandleTimeFrame;
			msg.IsSubscribe = false;
			msg.From = tuple.Item1;
			msg.Arg = series.Arg;

			SendInMessage(msg);

			UnSubscribeMarketData(series.Security, MarketDataTypes.CandleTimeFrame);
		}
开发者ID:noreentry,项目名称:StockSharp,代码行数:19,代码来源:TerminalConnector.cs


示例2: ProcessMarketData

		private void ProcessMarketData(MarketDataMessage mdMsg)
		{
			switch (mdMsg.DataType)
			{
				case MarketDataTypes.Level1:
				{
					if (mdMsg.IsSubscribe)
						_subscribedLevel1.Add(mdMsg.SecurityId);
					else
						_subscribedLevel1.Remove(mdMsg.SecurityId);

					break;
				}
				case MarketDataTypes.MarketDepth:
				{
					if (mdMsg.IsSubscribe)
						_subscribedDepths.Add(mdMsg.SecurityId, mdMsg.MaxDepth ?? MarketDataMessage.DefaultMaxDepth);
					else
						_subscribedDepths.Remove(mdMsg.SecurityId);

					break;
				}
				case MarketDataTypes.Trades:
				{
					if (mdMsg.IsSubscribe)
						_subscribedTicks.Add(mdMsg.SecurityId);
					else
						_subscribedTicks.Remove(mdMsg.SecurityId);

					break;
				}
				default:
				{
					SendOutMarketDataNotSupported(mdMsg.TransactionId);
					return;
				}
			}

			var reply = (MarketDataMessage)mdMsg.Clone();
			reply.OriginalTransactionId = mdMsg.OriginalTransactionId;
			SendOutMessage(reply);
		}
开发者ID:zjxbetter,项目名称:StockSharp,代码行数:42,代码来源:BtceMessageAdapter_MarketData.cs


示例3: SubscribeCandles

		public void SubscribeCandles(CandleSeries series)
		{
			var transId = TransactionIdGenerator.GetNextId();
			
			_subscriptionDates[series.Security.Id] = Tuple.Create(series.From, transId);

			var msg = new MarketDataMessage().FillSecurityInfo(this, series.Security);
			msg.TransactionId = transId;
			msg.SecurityId = GetSecurityId(series.Security);
			msg.DataType = MarketDataTypes.CandleTimeFrame;
			msg.IsSubscribe = true;
			msg.From = series.From;
			msg.Arg = (TimeSpan)series.Arg;

			_lastCandles.Remove(Tuple.Create(msg.SecurityId, msg.Arg));

			SendInMessage(msg);

			SubscribeMarketData(series.Security, MarketDataTypes.CandleTimeFrame);
		}
开发者ID:noreentry,项目名称:StockSharp,代码行数:20,代码来源:TerminalConnector.cs


示例4: SubscribeCandles

		public void SubscribeCandles(CandleSeries series)
		{
			if (!IsConnected)
			{
				_subscribersBuffer.Add(series);
				return;
			}

			var key = new SubscriptionKey(series.Security.Id, (TimeSpan) series.Arg);
			var transId = TransactionIdGenerator.GetNextId();
			
			var subscription = _candleSubscriptions.TryGetValue(key);

			if (subscription != null)
			{
				Candles?.Invoke(series, subscription.CandleBuilder.AllCandles);
				subscription.AddSubscriber(series);

				return;
			}

			subscription = new CandleSubscription(series.Security, series.From, (TimeSpan) series.Arg, transId);
			subscription.AddSubscriber(series);
			_candleSubscriptions.Add(key, subscription);

			subscription.CandleBuilder.Candle += CandleBuilderOnCandle;

			var msg = new MarketDataMessage().FillSecurityInfo(this, series.Security);
			msg.TransactionId = transId;
			msg.SecurityId = GetSecurityId(series.Security);
			msg.DataType = MarketDataTypes.CandleTimeFrame;
			msg.IsSubscribe = true;
			msg.From = series.From;
			msg.Arg = series.Arg;

			SendInMessage(msg);

			SubscribeMarketData(series.Security, MarketDataTypes.CandleTimeFrame);
		}
开发者ID:RakotVT,项目名称:StockSharp,代码行数:39,代码来源:TerminalConnector.cs


示例5: SubscribeCandles

		private void SubscribeCandles(CandleSeries series, DateTimeOffset from, DateTimeOffset to, long transactionId)
		{
			var mdMsg = new MarketDataMessage
			{
				DataType = GetCandleType(series.CandleType),
				TransactionId = transactionId,
				From = from,
				To = to,
				Arg = series.Arg,
				IsSubscribe = true,
			}.FillSecurityInfo(this, series.Security);

			_candleSeries.Add(transactionId, series);

			SendInMessage(mdMsg);
		}
开发者ID:vikewoods,项目名称:StockSharp,代码行数:16,代码来源:BarChartTrader.cs


示例6: Clone

		/// <summary>
		/// Create a copy of <see cref="MarketDataMessage"/>.
		/// </summary>
		/// <returns>Copy.</returns>
		public override Message Clone()
		{
			var clone = new MarketDataMessage
			{
				Arg = Arg,
				DataType = DataType,
				Error = Error,
				From = From,
				To = To,
				IsSubscribe = IsSubscribe,
				TransactionId = TransactionId,
				Count = Count,
				MaxDepth = MaxDepth,
				NewsId = NewsId,
				LocalTime = LocalTime,
				IsNotSupported = IsNotSupported
			};

			CopyTo(clone);

			return clone;
		}
开发者ID:jackman0925,项目名称:StockSharp,代码行数:26,代码来源:MarketDataMessage.cs


示例7: SubscribeMarketDepth

		/// <summary>
		/// Call this method to request market depth for a specific contract. The market depth will be returned by the updateMktDepth() and updateMktDepthL2() methods.
		/// </summary>
		/// <param name="message">this structure contains a description of the contract for which market depth data is being requested.</param>
		private void SubscribeMarketDepth(MarketDataMessage message)
		{
			if (message == null)
				throw new ArgumentNullException("message");

			//var security = SessionHolder.Securities[message.SecurityId];

			ProcessRequest(RequestMessages.SubscribeMarketDepth, ServerVersions.V6, ServerVersions.V5,
				socket => socket
					.Send(message.TransactionId)
					.SendIf(ServerVersions.V68, s => socket.SendContractId(message.SecurityId))
					.SendSecurity(message, false)
					.SendIf(ServerVersions.V68, s => socket.Send(message.Class))
					.SendIf(ServerVersions.V19, s => socket.Send(message.MaxDepth ?? MarketDataMessage.DefaultMaxDepth))
					.SendIf(ServerVersions.V70, s =>
					{
						//StringBuilder realTimeBarsOptionsStr = new StringBuilder();
						//int realTimeBarsOptionsCount = realTimeBarsOptions == null ? 0 : realTimeBarsOptions.size();
						//if (realTimeBarsOptionsCount > 0)
						//{
						//	for (int i = 0; i < realTimeBarsOptionsCount; ++i)
						//	{
						//		TagValue tagValue = (TagValue)realTimeBarsOptions.get(i);
						//		realTimeBarsOptionsStr.append(tagValue.m_tag);
						//		realTimeBarsOptionsStr.append("=");
						//		realTimeBarsOptionsStr.append(tagValue.m_value);
						//		realTimeBarsOptionsStr.append(";");
						//	}
						//}
						//send(realTimeBarsOptionsStr.toString());
						socket.Send(string.Empty);
					}));
		}
开发者ID:EricGarrison,项目名称:StockSharp,代码行数:37,代码来源:InteractiveBrokersMessageAdapter_MarketData.cs


示例8: SubscribeRealTimeCandles

		/// <summary>
		/// Подписаться на получение свечек реального времени.
		/// </summary>
		/// <param name="message"></param>
		/// <param name="field">Поля маркет-данных, на основе которых будут строяться свечи. Поддерживаются следующие значения:
		/// <list type="number">
		/// <item>
		/// <description><see cref="CandleDataTypes.Trades"/>.</description>
		/// </item>
		/// <item>
		/// <description><see cref="CandleDataTypes.Bid"/>.</description>
		/// </item>
		/// <item>
		/// <description><see cref="CandleDataTypes.Ask"/>.</description>
		/// </item>
		/// <item>
		/// <description><see cref="CandleDataTypes.Midpoint"/>.</description>
		/// </item>
		/// </list>
		/// </param>
		/// <param name="useRth">Строить свечи только по торговому времени. По-умолчанию используется торговое время.</param>
		private void SubscribeRealTimeCandles(MarketDataMessage message, Level1Fields field = CandleDataTypes.Trades, bool useRth = true)
		{
			if (message == null)
				throw new ArgumentNullException("message");

			//var security = SessionHolder.Securities[message.SecurityId];

			ProcessRequest(RequestMessages.SubscribeRealTimeCandles, ServerVersions.V34, ServerVersions.V3,
				socket =>
					socket
						.Send(message.TransactionId)
						.SendIf(ServerVersions.V68, s => socket.SendContractId(message.SecurityId))
						.SendSecurity(message)
						.SendIf(ServerVersions.V68, s => socket.Send(message.Class))
						.Send(5) // Поддерживается только 5 секундный тайм-фрейм.
						.SendLevel1Field(field)
						.Send(useRth)
						.SendIf(ServerVersions.V70, s =>
						{
							//StringBuilder realTimeBarsOptionsStr = new StringBuilder();
							//int realTimeBarsOptionsCount = realTimeBarsOptions == null ? 0 : realTimeBarsOptions.size();
							//if (realTimeBarsOptionsCount > 0)
							//{
							//	for (int i = 0; i < realTimeBarsOptionsCount; ++i)
							//	{
							//		TagValue tagValue = (TagValue)realTimeBarsOptions.get(i);
							//		realTimeBarsOptionsStr.append(tagValue.m_tag);
							//		realTimeBarsOptionsStr.append("=");
							//		realTimeBarsOptionsStr.append(tagValue.m_value);
							//		realTimeBarsOptionsStr.append(";");
							//	}
							//}
							//send(realTimeBarsOptionsStr.toString());
							socket.Send(string.Empty);
						}));
		}
开发者ID:EricGarrison,项目名称:StockSharp,代码行数:57,代码来源:InteractiveBrokersMessageAdapter_MarketData.cs


示例9: SubscribeMarketData

		/// <summary>
		/// Call this method to request market data. The market data will be returned by the tickPrice, tickSize, tickOptionComputation(), tickGeneric(), tickString() and tickEFP() methods.
		/// </summary>
		/// <param name="message">this structure contains a description of the contract for which market data is being requested.</param>
		/// <param name="genericFields">comma delimited list of generic tick types. Tick types can be found here: (new Generic Tick Types page) </param>
		/// <param name="snapshot">Allows client to request snapshot market data.</param>
		/// <param name="marketDataOff">Market Data Off - used in conjunction with RTVolume Generic tick type causes only volume data to be sent.</param>
		private void SubscribeMarketData(MarketDataMessage message, IEnumerable<GenericFieldTypes> genericFields, bool snapshot, bool marketDataOff)
		{
			if (message == null)
				throw new ArgumentNullException("message");

			//var security = SessionHolder.Securities[message.SecurityId];

			ProcessRequest(RequestMessages.SubscribeMarketData, ServerVersions.V47, ServerVersions.V11,
				socket =>
				{
					socket
						.Send(message.TransactionId)
						.SendContractId(message.SecurityId)
						.SendSecurity(message)
						.SendIf(ServerVersions.V68, s => socket.Send(message.Class));

					if (socket.ServerVersion >= ServerVersions.V8 && message is WeightedIndexSecurity)
					{
						// TODO
						//socket.SendCombo((WeightedIndexSecurity)security);
					}

					if (socket.ServerVersion >= ServerVersions.V40)
					{
						//if (contract.UnderlyingComponent != null)
						//{
						//	UnderlyingComponent underComp = contract.UnderlyingComponent;
						//	send(true);
						//	send(underComp.ContractId);
						//	send(underComp.Delta);
						//	send(underComp.Price);
						//}
						//else
						//{
						socket.Send(false);
						//}
					}

					if (socket.ServerVersion >= ServerVersions.V31)
					{
						/*
							* Even though SHORTABLE tick type supported only
							* starting server version 33 it would be relatively
							* expensive to expose this restriction here.
							* 
							* Therefore we are relying on TWS doing validation.
							*/

						var genList = new StringBuilder();

						genList.Append(genericFields.Select(t => ((int)t).To<string>()).Join(","));

						if (marketDataOff)
						{
							if (genList.Length > 0)
								genList.Append(",");

							genList.Append("mdoff");
						}

						socket.Send(genList.ToString());
					}

					if (socket.ServerVersion >= ServerVersions.V35)
					{
						socket.Send(snapshot);
					}

					if (socket.ServerVersion >= ServerVersions.V70)
					{
						//StringBuilder mktDataOptionsStr = new StringBuilder();
						//int mktDataOptionsCount = mktDataOptions == null ? 0 : mktDataOptions.size();
						//if( mktDataOptionsCount > 0) {
						//	for( int i = 0; i < mktDataOptionsCount; ++i) {
						//		TagValue tagValue = (TagValue)mktDataOptions.get(i);
						//		mktDataOptionsStr.append( tagValue.m_tag);
						//		mktDataOptionsStr.append( "=");
						//		mktDataOptionsStr.append( tagValue.m_value);
						//		mktDataOptionsStr.append( ";");
						//	}
						//}
						//send( mktDataOptionsStr.toString());
						socket.Send(string.Empty);
					}
				});
		}
开发者ID:EricGarrison,项目名称:StockSharp,代码行数:93,代码来源:InteractiveBrokersMessageAdapter_MarketData.cs


示例10: ProcessMarketData

		private void ProcessMarketData(MarketDataMessage mdMsg)
		{
			var secCode = mdMsg.SecurityId.SecurityCode;
			var boardCode = mdMsg.SecurityId.BoardCode;

			switch (mdMsg.DataType)
			{
				case MarketDataTypes.Level1:
				{
					if (mdMsg.IsSubscribe)
						_client.SubscribeQuote(secCode, boardCode);
					else
						_client.UnsubsribeQuote(secCode, boardCode);

					break;
				}

				case MarketDataTypes.MarketDepth:
				{
					if (mdMsg.IsSubscribe)
						_client.SubscribeLevel2(secCode, boardCode);
					else
						_client.UnsubsribeLevel2(secCode, boardCode);

					break;
				}

				case MarketDataTypes.Trades:
				{
					if (mdMsg.IsSubscribe)
					{
						_subscribedSecuritiesToTrade.Add(secCode);
						_client.SubscribeQuote(secCode, boardCode);
					}
					else
					{
						_subscribedSecuritiesToTrade.Remove(secCode);
						_client.UnsubsribeQuote(secCode, boardCode);
					}

					break;
				}
				
				case MarketDataTypes.News:
				{
					if (mdMsg.IsSubscribe)
						_client.SubscribeNews();
					else
						_client.UnsubscribeNews();

					break;
				}

				default:
				{
					SendOutMarketDataNotSupported(mdMsg.TransactionId);
					return;
				}
			}

			var reply = (MarketDataMessage)mdMsg.Clone();
			reply.OriginalTransactionId = mdMsg.TransactionId;
			SendOutMessage(reply);
		}
开发者ID:alexandrmalov,项目名称:StockSharp,代码行数:64,代码来源:SterlingMessageAdapter_MarketData.cs


示例11: ProcessMarketData

		private void ProcessMarketData(MarketDataMessage mdMsg)
		{
			switch (mdMsg.DataType)
			{
				case MarketDataTypes.Level1:
				{
					//if (mdMsg.IsSubscribe)
					//	_subscribedLevel1.Add(secCode);
					//else
					//	_subscribedLevel1.Remove(secCode);

					break;
				}
				case MarketDataTypes.MarketDepth:
				{
					if (mdMsg.IsSubscribe)
					{
						_subscribedDepths.Add(mdMsg.SecurityId, mdMsg.MaxDepth);

						if (_subscribedDepths.Count == 1)
							_pusherClient.SubscribeDepths();
					}
					else
					{
						_subscribedDepths.Remove(mdMsg.SecurityId);

						if (_subscribedDepths.Count == 0)
							_pusherClient.UnSubscribeDepths();
					}

					break;
				}
				case MarketDataTypes.Trades:
				{
					if (mdMsg.IsSubscribe)
					{
						if (mdMsg.From == DateTime.Today)
						{
							_httpClient.RequestTransactions().Select(t => new ExecutionMessage
							{
								ExecutionType = ExecutionTypes.Tick,
								SecurityId = _btcUsd,
								TradeId = t.Id,
								TradePrice = (decimal)t.Price,
								Volume = (decimal)t.Amount,
								ServerTime = t.Time.ApplyTimeZone(TimeZoneInfo.Utc)
							}).ForEach(SendOutMessage);
						}

						_subscribedTicks.Add(mdMsg.SecurityId);

						if (_subscribedTicks.Count == 1)
							_pusherClient.SubscribeTrades();
					}
					else
					{
						_subscribedTicks.Remove(mdMsg.SecurityId);

						if (_subscribedTicks.Count == 0)
							_pusherClient.UnSubscribeTrades();
					}

					break;
				}
				default:
				{
					SendOutMarketDataNotSupported(mdMsg.TransactionId);
					return;
				}
			}

			var reply = (MarketDataMessage)mdMsg.Clone();
			reply.OriginalTransactionId = mdMsg.OriginalTransactionId;
			SendOutMessage(reply);
		}
开发者ID:reddream,项目名称:StockSharp,代码行数:75,代码来源:BitStampMessageAdapter_MarketData.cs


示例12: ProcessMarketDataMessage

		private void ProcessMarketDataMessage(MarketDataMessage mdMsg)
		{
			var secCode = mdMsg.SecurityId.SecurityCode;
			var boardCode = mdMsg.SecurityId.BoardCode;

			switch (mdMsg.DataType)
			{
				case MarketDataTypes.Level1:
				{
					if (mdMsg.IsSubscribe)
						_client.Session.subscribe(boardCode, secCode, SubscriptionFlags.All & ~(SubscriptionFlags.Prints | SubscriptionFlags.PrintsCond | SubscriptionFlags.Quotes), mdMsg.TransactionId);
					else
						_client.Session.unsubscribe(boardCode, secCode);

					break;
				}
				case MarketDataTypes.MarketDepth:
				{
					if (mdMsg.IsSubscribe)
					{
						_client.Session.rebuildBook(boardCode, secCode, mdMsg.TransactionId);
						_client.Session.subscribe(boardCode, secCode, SubscriptionFlags.Quotes, mdMsg.TransactionId);
					}
					else
						_client.Session.unsubscribe(boardCode, secCode);

					break;
				}
				case MarketDataTypes.Trades:
				{
					if (mdMsg.From == null || mdMsg.To == null)
					{
						if (mdMsg.IsSubscribe)
							_client.Session.subscribe(boardCode, secCode, SubscriptionFlags.Prints | SubscriptionFlags.PrintsCond, mdMsg.TransactionId);
						else
							_client.Session.unsubscribe(boardCode, secCode);
					}
					else
						_client.Session.replayTrades(boardCode, secCode, mdMsg.From.Value.ToSsboe(), mdMsg.To.Value.ToSsboe(), mdMsg.TransactionId);

					break;
				}
				//case MarketDataTypes.OrderLog:
				//	break;
				//case MarketDataTypes.News:
				//	break;
				case MarketDataTypes.CandleTimeFrame:
				{
					if (mdMsg.From == null || mdMsg.To == null)
					{
						if (mdMsg.IsSubscribe)
							_client.Session.subscribeTimeBar(boardCode, secCode, mdMsg.TransactionId);
						else
							_client.Session.unsubscribeTimeBar(boardCode, secCode);
					}
					else
						_client.Session.replayTimeBars(boardCode, secCode, mdMsg.From.Value.ToSsboe(), mdMsg.To.Value.ToSsboe(), mdMsg.TransactionId);

					break;
				}
				default:
				{
					SendOutMarketDataNotSupported(mdMsg.TransactionId);
					return;
				}
			}

			var reply = (MarketDataMessage)mdMsg.Clone();
			reply.OriginalTransactionId = mdMsg.TransactionId;
			SendOutMessage(reply);
		}
开发者ID:zjxbetter,项目名称:StockSharp,代码行数:71,代码来源:RithmicMessageAdapter_MarketData.cs


示例13: RaiseMarketDataMessage

		private void RaiseMarketDataMessage(MarketDataMessage message, Exception error)
		{
			var reply = (MarketDataMessage)message.Clone();
			reply.OriginalTransactionId = message.TransactionId;
			reply.Error = error;
			SendOutMessage(reply);
		}
开发者ID:RakotVT,项目名称:StockSharp,代码行数:7,代码来源:HistoryMessageAdapter.cs


示例14: ProcessMarketDataMessage

		private void ProcessMarketDataMessage(MarketDataMessage message)
		{
			var securityId = message.SecurityId;
			var security = SecurityProvider.LookupById(securityId.ToStringId());

			if (security == null)
			{
				RaiseMarketDataMessage(message, new InvalidOperationException(LocalizedStrings.Str704Params.Put(securityId)));
				return;
			}

			if (StorageRegistry == null)
			{
				RaiseMarketDataMessage(message, new InvalidOperationException(LocalizedStrings.Str1117Params.Put(message.DataType, securityId)));
				return;
			}

			var history = message as HistorySourceMessage;

			Exception error = null;

			switch (message.DataType)
			{
				case MarketDataTypes.Level1:
				{
					if (message.IsSubscribe)
					{
						if (history == null)
						{
							BasketStorage.AddStorage(StorageRegistry.GetLevel1MessageStorage(security, Drive, StorageFormat));

							BasketStorage.AddStorage(new InMemoryMarketDataStorage<ClearingMessage>(security, null, date => new[]
							{
								new ClearingMessage
								{
									LocalTime = date.Date + security.Board.ExpiryTime,
									SecurityId = securityId,
									ClearMarketDepth = true
								}
							}));
						}
						else
						{
							BasketStorage.AddStorage(new InMemoryMarketDataStorage<Level1ChangeMessage>(security, null, history.GetMessages));
						}
					}
					else
					{
						BasketStorage.RemoveStorage<IMarketDataStorage<Level1ChangeMessage>>(security, MessageTypes.Level1Change, null);
						BasketStorage.RemoveStorage<InMemoryMarketDataStorage<ClearingMessage>>(security, ExtendedMessageTypes.Clearing, null);
					}

					break;
				}

				case MarketDataTypes.MarketDepth:
				{
					if (message.IsSubscribe)
					{
						if (history == null)
							BasketStorage.AddStorage((IMarketDataStorage<QuoteChangeMessage>)StorageRegistry.GetMarketDepthStorage(security, Drive, StorageFormat));
						else
							BasketStorage.AddStorage(new InMemoryMarketDataStorage<QuoteChangeMessage>(security, null, history.GetMessages));
					}
					else
						BasketStorage.RemoveStorage<IMarketDataStorage<QuoteChangeMessage>>(security, MessageTypes.QuoteChange, null);
					
					break;
				}

				case MarketDataTypes.Trades:
				{
					if (message.IsSubscribe)
					{
						if (history == null)
							BasketStorage.AddStorage((IMarketDataStorage<ExecutionMessage>)StorageRegistry.GetTradeStorage(security, Drive, StorageFormat));
						else
							BasketStorage.AddStorage(new InMemoryMarketDataStorage<ExecutionMessage>(security, null, history.GetMessages));
					}
					else
						BasketStorage.RemoveStorage<IMarketDataStorage<ExecutionMessage>>(security, MessageTypes.Execution, ExecutionTypes.Tick);
					
					break;
				}

				case MarketDataTypes.OrderLog:
				{
					if (message.IsSubscribe)
					{
						if (history == null)
							BasketStorage.AddStorage((IMarketDataStorage<ExecutionMessage>)StorageRegistry.GetOrderLogStorage(security, Drive, StorageFormat));
						else
							BasketStorage.AddStorage(new InMemoryMarketDataStorage<ExecutionMessage>(security, null, history.GetMessages));
					}
					else
						BasketStorage.RemoveStorage<IMarketDataStorage<ExecutionMessage>>(security, MessageTypes.Execution, ExecutionTypes.OrderLog);

					break;
				}

//.........这里部分代码省略.........
开发者ID:RakotVT,项目名称:StockSharp,代码行数:101,代码来源:HistoryMessageAdapter.cs


示例15: LookupCandles

		public void LookupCandles(MarketDataMessage message)
		{
			if (message.From == null || message.To == null)
				throw new ArgumentException("message");

			var placeCode = _adapter.SecurityClassInfo.GetSecurityClass(message.SecurityType, message.SecurityId.BoardCode);
			_adapter.AddDebugLog("Candles SC={0} PC={1} TF={2} F={3} T={4}", message.SecurityId.SecurityCode, placeCode, message.Arg, message.From, message.To);

			if (placeCode == null)
				throw new InvalidOperationException(LocalizedStrings.Str2279);

			var timeFrame = (AlfaTimeFrames)(TimeSpan)message.Arg;
			//to = timeFrame.GetCandleBounds(series.Security).Min;

			var data = _ad.GetArchiveFinInfoFromDB(placeCode, message.SecurityId.SecurityCode, timeFrame.Interval, message.From.Value.ToLocalTime(TimeHelper.Moscow), message.To.Value.ToLocalTime(TimeHelper.Moscow));

			if (_ad.LastResult != StateCodes.stcSuccess)
				ThrowInError((tagStateCodes)_ad.LastResult);

			_adapter.AddDebugLog("Candles DT={0}", data);

			DoInSysCulture(() => ProcessCandles.SafeInvoke(message, data.ToRows()));
		}
开发者ID:xyicheng,项目名称:StockSharp,代码行数:23,代码来源:AlfaWrapper.cs


示例16: SubscribeCandles

		/// <summary>
		/// Subscribe to receive new candles.
		/// </summary>
		/// <param name="series">Candles series.</param>
		/// <param name="from">The initial date from which you need to get data.</param>
		/// <param name="to">The final date by which you need to get data.</param>
		public void SubscribeCandles(CandleSeries series, DateTimeOffset from, DateTimeOffset to)
		{
			var transactionId = TransactionIdGenerator.GetNextId();

			var mdMsg = new MarketDataMessage
			{
				//SecurityId = GetSecurityId(series.Security),
				DataType = MarketDataTypes.CandleTimeFrame,
				TransactionId = transactionId,
				From = from,
				To = to,
				Arg = series.Arg,
				IsSubscribe = true,
			}.FillSecurityInfo(this, series.Security);

			_candleSeries.Add(transactionId, series);

			SendInMessage(mdMsg);
		}
开发者ID:vikewoods,项目名称:StockSharp,代码行数:25,代码来源:RithmicTrader.cs


示例17: ProcessMarketDataMessage

		private void ProcessMarketDataMessage(MarketDataMessage message)
		{
			switch (message.DataType)
			{
				case MarketDataTypes.Level1:
				{
					if (message.SecurityId.Native is int)
					{
						if (message.IsSubscribe)
							Wrapper.RegisterLevel1((int)message.SecurityId.Native);
						else
							Wrapper.UnRegisterLevel1((int)message.SecurityId.Native);
					}
					else
						throw new InvalidOperationException(LocalizedStrings.Str2253Params.Put(message.SecurityId));

					break;
				}
				case MarketDataTypes.MarketDepth:
				{
					if (message.SecurityId.Native is int)
					{
						if (message.IsSubscribe)
							Wrapper.RegisterMarketDepth((int)message.SecurityId.Native);
						else
							Wrapper.UnRegisterMarketDepth((int)message.SecurityId.Native);
					}
					else
						throw new InvalidOperationException(LocalizedStrings.Str2253Params.Put(message.SecurityId));

					break;
				}
				case MarketDataTypes.Trades:
				{
					if (message.SecurityId.Native is int)
					{
						if (message.IsSubscribe)
							Wrapper.RegisterTrades((int)message.SecurityId.Native);
						else
							Wrapper.UnRegisterTrades((int)message.SecurityId.Native);
					}
					else
						throw new InvalidOperationException(LocalizedStrings.Str2253Params.Put(message.SecurityId));

					break;
				}
				case MarketDataTypes.News:
				{
					if (!message.NewsId.IsEmpty())
						throw new NotSupportedException(LocalizedStrings.Str1617);

					if (message.IsSubscribe)
						Wrapper.StartExportNews();
					else
						Wrapper.StopExportNews();

					break;
				}
				case MarketDataTypes.CandleTimeFrame:
				{
					if (message.IsSubscribe)
					{
						Wrapper.LookupCandles(message);
					}

					break;
				}
				default:
				{
					SendOutMarketDataNotSupported(message.TransactionId);
					return;
				}
			}

			var reply = (MarketDataMessage)message.Clone();
			reply.OriginalTransactionId = message.TransactionId;
			SendOutMessage(reply);
		}
开发者ID:zjxbetter,项目名称:StockSharp,代码行数:78,代码来源:AlfaDirectMessageAdapter_MarketData.cs


示例18: ProcessMarketDataMessage

		private void ProcessMarketDataMessage(MarketDataMessage mdMsg)
		{
			switch (mdMsg.DataType)
			{
				case MarketDataTypes.Level1:
				case MarketDataTypes.Trades:
				{
					var key = Tuple.Create(MarketDataTypes.Level1, mdMsg.SecurityId, (object)null);

					if (mdMsg.IsSubscribe)
					{
						_requestIds.Add(key, mdMsg.TransactionId);
						SubscribeMarketData(mdMsg, Fields, false, false);
					}
					else
						UnSubscribeMarketData(_requestIds[key]);

					break;
				}
				case MarketDataTypes.MarketDepth:
				{
					var key = Tuple.Create(mdMsg.DataType, mdMsg.SecurityId, (object)null);

					if (mdMsg.IsSubscribe)
					{
						_requestIds.Add(key, mdMsg.TransactionId);
						SubscribeMarketDepth(mdMsg);
					}
					else
						UnSubscriveMarketDepth(_requestIds[key]);

					break;
				}
				case MarketDataTypes.News:
				{
					if (mdMsg.IsSubscribe)
						SubscribeNewsBulletins(true);
					else
						UnSubscribeNewsBulletins();

					break;
				}
				case MarketDataTypes.CandleTimeFrame:
				{
					var isRealTime = mdMsg.To == null;
					var key = Tuple.Create(mdMsg.DataType, mdMsg.SecurityId, (object)Tuple.Create(mdMsg.Arg, isRealTime));

					if (mdMsg.IsSubscribe)
					{
						_requestIds.Add(key, mdMsg.TransactionId);

						if (isRealTime)
							SubscribeRealTimeCandles(mdMsg);
						else
							SubscribeHistoricalCandles(mdMsg, CandleDataTypes.Trades);
					}
					else
					{
						var requestId = _requestIds[key];

						if (isRealTime)
							UnSubscribeRealTimeCandles(mdMsg, requestId);
						else
						{
							ProcessRequest(RequestMessages.UnSubscribeHistoricalData, 0, ServerVersions.V1,
								socket => socket.Send(requestId));
						}
					}

					break;
				}
				case ExtendedMarketDataTypes.Scanner:
				{
					var scannerMsg = (ScannerMarketDataMessage)mdMsg;

					var key = Tuple.Create(mdMsg.DataType, mdMsg.SecurityId, (object)scannerMsg.Filter);

					if (mdMsg.IsSubscribe)
					{
						_requestIds.Add(key, mdMsg.TransactionId);
						SubscribeScanner(scannerMsg);
					}
					else
						UnSubscribeScanner(_requestIds[key]);

					break;
				}
				case ExtendedMarketDataTypes.FundamentalReport:
				{
					var reportMsg = (FundamentalReportMarketDataMessage)mdMsg;

					var key = Tuple.Create(mdMsg.DataType, mdMsg.SecurityId, (object)reportMsg.Report);

					if (reportMsg.IsSubscribe)
					{
						_requestIds.Add(key, mdMsg.TransactionId);
						SubscribeFundamentalReport(reportMsg);
					}
					else
						UnSubscribeFundamentalReport(_requestIds[key]);
//.........这里部分代码省略.........
开发者ID:EricGarrison,项目名称:StockSharp,代码行数:101,代码来源:InteractiveBrokersMessageAdapter_MarketData.cs


示例19: OnProcessCandles

		private void OnProcessCandles(MarketDataMessage mdMsg, string[] data)
		{
			var index = 0;

			foreach (var candle in data)
			{
				var details = candle.ToColumns();
				var closeTime = details[0].To<DateTime>().ApplyTimeZone(TimeHelper.Moscow);

				SendOutMessage(new TimeFrameCandleMessage
				{
					SecurityId = mdMsg.SecurityId,
					OpenPrice = details[1].To<decimal>(),
					HighPrice = details[2].To<decimal>(),
					LowPrice = details[3].To<decimal>(),
					ClosePrice = details[4].To<decimal>(),
					TotalVolume = details[5].To<decimal>(),
					// из терминала приходит время закрытия свечи
					OpenTime = closeTime - mdMsg.Arg.To<TimeSpan>(),
					CloseTime = closeTime,
					OriginalTransactionId = mdMsg.TransactionId,
					State = CandleStates.Finished,
					IsFinished = ++index != data.Length
				});
			}
		}
开发者ID:zjxbetter,项目名称:StockSharp,代码行数:26,代码来源:AlfaDirectMessageAdapter_MarketData.cs


示例20: SubscribeHistoricalCandles

		/// <summary>
		/// Подписаться на получение исторических значений инструмента с заданной периодичностью.
		/// </summary>
		/// <param name="message">Сообщение о подписке или отписки на маркет-данные.</param>
		/// <param name="field">Поле маркет-данных. Поддерживаются следующие значения:
		/// <list type="number">
		/// <item>
		/// <description><see cref="CandleDataTypes.Trades"/>.</description>
		/// </item>
		/// <item>
		/// <description><see cref="CandleDataTypes.Bid"/>.</description>
		/// </item>
		/// <item>
		/// <description><see cref="CandleDataTypes.Ask"/>.</description>
		/// </item>
		/// <item>
		/// <description><see cref="CandleDataTypes.Midpoint"/>.</description>
		/// </item>
		/// <item>
		/// <description><see cref="CandleDataTypes.BidAsk"/>.</description>
		/// </item>
		/// <item>
		/// <description><see cref="CandleDataTypes.ImpliedVolatility"/>.</description>
		/// </item>
		/// <item>
		/// <description><see cref="CandleDataTypes.HistoricalVolatility"/>.</description>
		/// </item>
		/// </list></param>
		/// <param name="useRth">Получать данные только по торговому времени. По-умолчанию используется торговое время.</param>
		private void SubscribeHistoricalCandles(MarketDataMessage message, Level1Fields field, bool useRth = true)
		{
			if (message == null)
				throw new ArgumentNullException("message");

			//if (message.CandleType != typeof(TimeFrameCandle))
			//	throw new ArgumentException("Interactive Brokers не поддерживает свечи типа {0}.".Put(series.CandleType), "series");

			if (!(message.Arg is TimeSpan))
				throw new ArgumentException(LocalizedStrings.WrongCandleArg.Put(message.Arg), "message");

			var timeFrame = (TimeSpan)message.Arg;

			//var security = SessionHolder.Securities[message.SecurityId];

			ProcessRequest(RequestMessages.SubscribeHistoricalData, ServerVersions.V16, ServerVersions.V6,
				socket =>
				{
					socket
						.Send(message.TransactionId)
						.SendIf(ServerVersions.V68, s => socket.SendContractId(message.SecurityId))
						.SendSecurity(message)
						.SendIf(ServerVersions.V68, s => socket.Send(message.Class))
						.SendIncludeExpired(message.ExpiryDate)
						.SendEndDate(message.To ?? DateTimeOffset.MaxValue)
						.SendTimeFrame(timeFrame)
						.Send(ConvertPeriodtoIb(message.From ?? DateTimeOffset.MinValue, message.To ?? DateTimeOffset.MaxValue))
						.Send(useRth)
						.SendLevel1Field(field);

					if (socket.ServerVersion > ServerVersions.V16)
					{
						//Send date times as seconds since 1970
						socket.Send(2);
					}

					// TODO
					WeightedIndexSecurity indexSecurity = null;//security as WeightedIndexSecurity;
					if (indexSecurity != null)
						socket.SendCombo(indexSecurity);

					if (socket.ServerVersion >= ServerVersions.V70)
					{
						//StringBuilder chartOptionsStr = new StringBuilder();
						//int chartOptionsCount = chartOptions == null ? 0 : chartOptions.size();
						//if (chartOptionsCount > 0)
						//{
						//	for (int i = 0; i < chartOptionsCount; ++i)
						//	{
						//		TagValue tagValue = (TagValue)chartOptions.get(i);
						//		chartOptionsStr.append(tagValue.m_tag);
						//		chartOptionsStr.append("=");
						//		chartOptionsStr.append(tagValue.m_value);
						//		chartOptionsStr.append(";");
						//	}
						//}
						//send(chartOptionsStr.toString());
						socket.Send(string.Empty);
					}
				});
		}
开发者ID:EricGarrison,项目名称:StockSharp,代码行数:90,代码来源:InteractiveBrokersMessageAdapter_MarketData.cs



注:本文中的StockSharp.Messages.MarketDataMessage类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# Xaml.OrderWindow类代码示例发布时间:2022-05-26
下一篇:
C# Messages.ExecutionMessage类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap