https://forum.alpaca.markets/t/data-streaming-api-issues-with-c-sdk-v-3-8-0-beta2/2270
_dataStreamingClient = Alpaca.Markets.Environments.Paper.GetAlpacaDataStreamingClient(securityKey);
//_dataStreamingClient = Alpaca.Markets.Environments.Live.GetAlpacaDataStreamingClient(oAuthKey);
Console.WriteLine($"Hooking to OnError event ...");
_dataStreamingClient.OnError += (Exception ex) =>
{
Console.WriteLine($"OnError event => Exception: {ex}");
};
Console.WriteLine($"Hooking to Connected event ...");
_dataStreamingClient.Connected += (AuthStatus authStatus) =>
{
Console.WriteLine($"Connected event => AuthStatus: {authStatus}");
};
Console.WriteLine($"Hooking to SocketClosed event ...");
_dataStreamingClient.SocketClosed += () =>
{
Console.WriteLine("SocketClosed event => Socket closed.");
};
Console.WriteLine($"Hooking to SocketOpened event ...");
_dataStreamingClient.SocketOpened += () =>
{
Console.WriteLine("SocketOpened event => Socket opened.");
};
await _dataStreamingClient.ConnectAndAuthenticateAsync();
if (!string.IsNullOrWhiteSpace(symbol))
{
var tradeSubscription = _dataStreamingClient.GetTradeSubscription(symbol);
Console.WriteLine($"Hooking to trade subscription for symbol {symbol} event ...");
tradeSubscription.Received += (IStreamTrade trade) =>
{
Console.WriteLine($"Trade Streaming: {trade.Symbol}, Exchange: {trade.Exchange}, Price: {trade.Price}, Size: {trade.Size}, TimeUtc: {trade.TimeUtc}, TradeId: {trade.TradeId}, Current Time: {DateTime.UtcNow}");
};
Console.WriteLine($"Subscribing to trade for symbol {symbol} ...");
_dataStreamingClient.Subscribe(tradeSubscription);
//Quote
var quoteSubscription = _dataStreamingClient.GetQuoteSubscription(symbol);
Console.WriteLine($"Hooking to quote subscription for symbol {symbol} event ...");
quoteSubscription.Received += (IStreamQuote quote) =>
{
Console.WriteLine($"Quote Streaming: {quote.Symbol}, Exchange: {quote.AskExchange}, AskPrice: {quote.AskPrice}, AskSize: {quote.AskSize}, BidExchange: {quote.BidExchange}, BidPrice: {quote.BidPrice}, BidSize: {quote.BidSize}, TimeUtc: {quote.TimeUtc}, Current Time: {DateTime.UtcNow}");
};
Console.WriteLine($"Subscribing to quotes for symbol {symbol} ...");
_dataStreamingClient.Subscribe(quoteSubscription);
//Minute aggregated data for symbol
var minAggrSubscription = _dataStreamingClient.GetMinuteAggSubscription(symbol);
Console.WriteLine($"Hooking to minute aggregated data subscription for symbol {symbol} event ...");
minAggrSubscription.Received += (IStreamAgg agg) =>
{
Console.WriteLine($"Minute Aggregation Streaming: {agg.Symbol}, Open: {agg.Open}, High: {agg.High}, Low: {agg.Low}, Close: {agg.Close}, Average: {agg.Average}, StartTimeUtc: {agg.StartTimeUtc}, EndTimeUtc: {agg.EndTimeUtc}, Volume: {agg.Volume}, Current Time: {DateTime.UtcNow}");
};
Console.WriteLine($"Subscribing to minute aggregated data for symbol {symbol} ...");
_dataStreamingClient.Subscribe(minAggrSubscription);
}
int waitTime = 60000;
Console.WriteLine($"Keeping the data streaming alive for {((float)waitTime) / 60000} minutes ...");
await Task.Delay(waitTime);
Console.WriteLine($"Exiting data streaming after {((float)waitTime) / 60000} minutes ...");created



