예제 #1
0
        int GetPositionT2(Quik _quik, Tool instrument, string clientCode)
        {
            // возвращает чистую позицию по инструменту
            // для срочного рынка передаем номер счета, для спот-рынка код-клиента
            int qty = 0;

            if (instrument.ClassCode == "SPBFUT")
            {
                // фьючерсы
                try
                {
                    FuturesClientHolding q1 = _quik.Trading.GetFuturesHolding(instrument.FirmID, instrument.AccountID, instrument.SecurityCode, 0).Result;
                    if (q1 != null)
                    {
                        qty = Convert.ToInt32(q1.totalNet);
                    }
                }
                catch (Exception e) { Console.WriteLine("GetPositionT2: SPBFUT, ошибка - " + e.Message); }
            }
            else
            {
                // акции
                try
                {
                    DepoLimitEx q1 = _quik.Trading.GetDepoEx(instrument.FirmID, clientCode, instrument.SecurityCode, instrument.AccountID, 2).Result;
                    if (q1 != null)
                    {
                        qty = Convert.ToInt32(q1.CurrentBalance);
                    }
                }
                catch (Exception e) { Console.WriteLine("GetPositionT2: ошибка - " + e.Message); }
            }
            return(qty);
        }
        public void GetDepoLimitsTest()
        {
            Quik quik = new Quik();

            // Получаем информацию по всем лимитам со всех доступных счетов.
            List <DepoLimitEx> depoLimits = quik.Trading.GetDepoLimits().Result;

            Console.WriteLine($"Все лимиты со всех доступных счетов {depoLimits.Count}");
            if (depoLimits.Count > 0)
            {
                PrintDepoLimits(depoLimits);
            }

            // Получаем информацию по лимитам инструмента "Сбербанк"
            depoLimits = quik.Trading.GetDepoLimits("SBER").Result;
            Console.WriteLine($"Лимиты инструмента сбербанк {depoLimits.Count}");
            if (depoLimits.Count > 0)
            {
                PrintDepoLimits(depoLimits);
            }

            // Если информация по бумаге есть в таблице, это не значит что открыта позиция. Нужно проверять еще CurrentBalance
            DepoLimitEx depoLimit = depoLimits.SingleOrDefault(_ => _.LimitKind == LimitKind.T2 && _.CurrentBalance > 0);

            if (depoLimit != null)
            {
                Console.WriteLine("Открыта позиция по сбербанку.");
            }
        }
예제 #3
0
 void OnDepoLimitDo(DepoLimitEx depLimit)
 {
     AppendText2TextBox(textBoxLogsWindow, "Вызвано событие OnDepoLimit (изменение бумажного лимита)..." + Environment.NewLine);
     AppendText2TextBox(textBoxLogsWindow, "Заблокировано на покупку количества лотов - " + depLimit.LockedBuy + Environment.NewLine);
     //textBoxLogsWindow.AppendText("Вызвано событие OnDepoLimit (изменение бумажного лимита)..." + Environment.NewLine);
     //textBoxLogsWindow.AppendText("Заблокировано на покупку количества лотов - " + depLimit.LockedBuy + Environment.NewLine);
 }
예제 #4
0
        public async Task GetDepoLimitsTest()
        {
            // Получаем информацию по всем лимитам со всех доступных счетов.
            var depoLimits = await Quik.Functions.TableRows.GetDepoLimitsAsync();

            Console.WriteLine($"Все лимиты со всех доступных счетов {depoLimits.Count}");
            if (depoLimits.Count > 0)
            {
                PrintDepoLimits(depoLimits);
            }

            // Получаем информацию по лимитам инструмента "Сбербанк"
            depoLimits = await Quik.Functions.TableRows.GetDepoLimitsAsync("SBER");

            Console.WriteLine($"Лимиты инструмента сбербанк {depoLimits.Count}");
            if (depoLimits.Count > 0)
            {
                PrintDepoLimits(depoLimits);
            }

            // Если информация по бумаге есть в таблице, это не значит что открыта позиция. Нужно проверять еще CurrentBalance
            DepoLimitEx depoLimit = depoLimits.SingleOrDefault(_ => _.LimitKind == LimitKind.T2 && _.CurrentBalance > 0);

            if (depoLimit != null)
            {
                Console.WriteLine("Открыта позиция по сбербанку.");
            }
        }
예제 #5
0
        private void Events_OnDepoLimit(DepoLimitEx dLimit)
        {
            if (dLimit.LimitKindInt == 0)
            {
                Log("Изменилась позиция по бумагам: " + dLimit.SecCode + " " + dLimit.CurrentBalance);
            }
            if (dLimit.SecCode == secCode && dLimit.LimitKindInt == 0) // T0
            {
                _dep.CurrentBalance       = dLimit.CurrentBalance;
                _dep.AweragePositionPrice = dLimit.AweragePositionPrice;
            }

            //this.Dispatcher.Invoke(() =>
            //{
            //    DepoGrid.Items.Refresh();
            //});
        }
예제 #6
0
    /// <summary>
    /// Конструктор класса
    /// </summary>
    public Portfolio(Tool _tool, DepoLimitEx _depo)
    {
        if (_tool != null && _depo != null)
        {
            name         = _tool.Name;
            securityCode = _tool.SecurityCode;
            classCode    = _tool.ClassCode;

            toolQty = _depo.CurrentBalance;
            AweragePositionPrice = _depo.AweragePositionPrice;
            currentCoupon        = _tool.CouponPercent;
            sellACY = 0;
            currACY = 0;
            bid     = 0;

            lastPrice = _tool.LastPrice;
        }
    }
예제 #7
0
        public void GetDepoLimitsTest()
        {
            Quik quik = new Quik();

            //Получаем информацию по всем лимитам со всех доступных счетов.
            List <DepoLimitEx> depoLimits = quik.Trading.GetDepoLimits().Result;

            Console.WriteLine(depoLimits.Count);

            //Получаем информацию по лимитам инструмента "Сбербанк"
            depoLimits = quik.Trading.GetDepoLimits("SBER").Result;
            Console.WriteLine(depoLimits.Count);

            DepoLimitEx depoLimit = depoLimits.SingleOrDefault(_ => _.LimitKind == LimitKind.T2);

            if (depoLimit != null)
            {
                Console.WriteLine("Открыта позиция по сбербанку.");
            }
        }
예제 #8
0
 public void OnDepoLimit(DepoLimitEx dLimit)
 {
     DepoLimit?.Invoke(_quik, dLimit);
 }