public SendSecuritiesAPI(bool cme) { if (cme) { var span = DateTime.Now; if (Span == null || Span.AddMilliseconds(0x3ED).CompareTo(span) < 0) { Convey = cme; Span = span; } else { Convey = span; } } else { Convey = cme; } }
public override void OnReceiveBalance(string[] param) { var cme = param.Length > 0x1C; var span = DateTime.Now; if (param[cme ? 0x33 : 0xB].Length == 8 && int.TryParse(param[cme ? 0x53 : 0xE], out int quantity) && double.TryParse(param[cme ? 0x52 : 0xD], out double current) && int.TryParse(param[cme ? 0x2D : 9], out int number) && OrderNumber.Remove(number.ToString())) { var gb = param[cme ? 0x37 : 0x14]; Current = current; Purchase = gb.Equals("2") && Quantity >= 0 ? ((Purchase ?? 0D) * Quantity + current * quantity) / (quantity + Quantity) : (gb.Equals("1") && Quantity <= 0 ? (current * quantity - (Purchase ?? 0D) * Quantity) / (quantity - Quantity) : (Purchase ?? 0D)); Quantity += gb.Equals("1") ? -quantity : quantity; Revenue = (long)(current - Purchase) * Quantity * transactionMultiplier; Rate = (Quantity > 0 ? current / (double)Purchase : Purchase / (double)current) - 1; } SendBalance?.Invoke(this, new SendSecuritiesAPI(new Tuple <string, string, int, dynamic, dynamic, long, double>(param[cme ? 0x33 : 0xB], param[cme ? 0x34 : 0xB], Quantity, Purchase, Current, Revenue, Rate))); if (Span == null || Span.AddMilliseconds(0x3ED).CompareTo(span) < 0) { SendBalance?.Invoke(this, new SendSecuritiesAPI(true)); Span = span; } }