/// <summary> /// Extension method for the Spark.Event struct that generates new trade from order event if there is an /// event type match, otherwise returns NULL. /// </summary> internal static Trade ToTrade(this Spark.Event eventItem, string symbol, string exchange, DateTime observationTime) { int price = eventItem.Price; int volume = (int)eventItem.Volume; DateTime timeStamp = DateTimeFromUnixTimestampSeconds(eventItem.Time); string conditionCodes = Spark.ConditionCodesToStr(eventItem.ConditionCodes, eventItem.Exchange); return(new Trade(timeStamp, symbol, exchange, price, volume, conditionCodes, observationTime)); }
/// <summary> /// Convert Spark.Event struct into tab-separted human readable string /// </summary> /// <param name="eventItem">Spark event item</param> internal static string ToOutputString(this Spark.Event eventItem) { System.Text.StringBuilder result = new StringBuilder(); result.Append(DateTimeFromUnixTimestampSeconds(eventItem.Time).ToMarketDateTime() + "\t"); result.Append(Spark.EventTypeToStr(eventItem.Type) + "\t"); result.Append(eventItem.Code + "\t"); result.Append(eventItem.Exchange + "\t"); result.Append(ApiFunctions.GetMarketSide(eventItem.Flags).ToString() + "\t"); result.Append(eventItem.Price.ToPriceString() + "\t"); result.Append(eventItem.Volume + "\t"); result.Append(Spark.ConditionCodesToStr(eventItem.ConditionCodes, eventItem.Exchange) + "\t"); result.Append(eventItem.Flags + "\t"); result.Append(Spark.StateToStr(eventItem.State) + "\t"); result.Append(eventItem.Position + "\t"); result.Append(Spark.QuoteBasesToStr(eventItem.QuoteBases, eventItem.Exchange) + "\t"); result.Append(eventItem.Reference + "\t"); result.Append(eventItem.Count + "\t"); return(result.ToString()); }
/// <summary> /// Convert condition codes to text format /// </summary> /// <param name="conditionCodes">Condition code long value</param> /// <param name="exchange">Exchange</param> internal static string ConvertToConditionCodeText(ulong conditionCodes, string exchange) { return(Spark.ConditionCodesToStr(conditionCodes, exchange)); }