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;
            }
        }
Esempio n. 2
0
        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;
            }
        }