Esempio n. 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);
        }
Esempio n. 2
0
        long NewOrder(Quik _quik, Tool _tool, Operation operation, decimal price, int qty)
        {
            long res = 0;

            if (settings.RobotMode == "Боевой")
            {
                Order order_new = new Order();
                order_new.ClassCode = _tool.ClassCode;
                order_new.SecCode   = _tool.SecurityCode;
                order_new.Operation = operation;
                order_new.Price     = price;
                order_new.Quantity  = qty;
                order_new.Account   = _tool.AccountID;
                try
                {
                    res = _quik.Orders.CreateOrder(order_new).Result;
                }
                catch
                {
                    Console.WriteLine("Неудачная попытка отправки заявки");
                }
            }
            else
            {
                res = 0;
                position.entranceOrderNumber = 8888888;
            }
            return(res);
        }
Esempio n. 3
0
        public void CandlesSubscriptionTest()
        {
            Quik quik = new Quik();

            quik.Candles.NewCandle += OnNewCandle;

            // На всякий случай вначале нужно отписатся (иначе может вылететь Assert)
            // TODO: Вообще у библиотеки огромная проблема - Lua скрипт не отписывается от того к чему он подписался при отключении клиента.
            // В результате при следующем подключении клиент начинает получать сразу кучу CallBack'ов, на которые он не подписывался в текущей сессии.
            // По большому счету сейчас клиент должен сам заботаться о том, что бы гарантированно отписываться от всего к чему подписался при выходе.
            bool isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;

            if (isSubscribed)
            {
                quik.Candles.Unsubscribe("TQBR", "SBER", CandleInterval.M1).Wait();
            }

            // Проверяем что мы действительно отписались
            isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            Assert.AreEqual(false, isSubscribed);

            quik.Candles.Subscribe("TQBR", "SBER", CandleInterval.M1).Wait();
            isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            Assert.AreEqual(true, isSubscribed);

            // Раскомментарить если необходимо получать данные в функции OnNewCandle 2 минуты. В течении этих двух минут должна прийти еще одна свечка
            //Thread.Sleep(120000);//must get at leat one candle as use minute timeframe

            quik.Candles.Unsubscribe("TQBR", "SBER", CandleInterval.M1).Wait();
            isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            Assert.AreEqual(false, isSubscribed);
        }
        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("Открыта позиция по сбербанку.");
            }
        }
        public void CandlesSubscriptionTest()
        {
            Quik quik = new Quik();
            quik.Candles.NewCandle += OnNewCandle;

            // На всякий случай вначале нужно отписатся (иначе может вылететь Assert)
            // TODO: Вообще у библиотеки огромная проблема - Lua скрипт не отписывается от того к чему он подписался при отключении клиента.
            // В результате при следующем подключении клиент начинает получать сразу кучу CallBack'ов, на которые он не подписывался в текущей сессии.
            // По большому счету сейчас клиент должен сам заботаться о том, что бы гарантированно отписываться от всего к чему подписался при выходе.
            bool isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            if (isSubscribed)
                quik.Candles.Unsubscribe ("TQBR", "SBER", CandleInterval.M1).Wait ();

            // Проверяем что мы действительно отписались
            isSubscribed = quik.Candles.IsSubscribed ("TQBR", "SBER", CandleInterval.M1).Result;
            Assert.AreEqual(false, isSubscribed);

            quik.Candles.Subscribe("TQBR", "SBER", CandleInterval.M1).Wait ();
            isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            Assert.AreEqual(true, isSubscribed);

            // Раскомментарить если необходимо получать данные в функции OnNewCandle 2 минуты. В течении этих двух минут должна прийти еще одна свечка
            //Thread.Sleep(120000);//must get at leat one candle as use minute timeframe

            quik.Candles.Unsubscribe("TQBR", "SBER", CandleInterval.M1).Wait ();
            isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            Assert.AreEqual(false, isSubscribed);
        }
Esempio n. 6
0
        public void GetAllCandlesTest()
        {
            Quik quik = new Quik();

            //Получаем месячные свечки по инструменту "Северсталь"
            List<Candle> candles = quik.Candles.GetAllCandles("TQBR", "CHMF", CandleInterval.MN).Result;
            Trace.WriteLine("Candles count: " + candles.Count);
        }
Esempio n. 7
0
    void GetBaseParam(Quik quik, string secCode, string _classCode)
    {
        try
        {
            securityCode = secCode;
            classCode    = _classCode;
            if (quik != null)
            {
                if (classCode != null && classCode != "")
                {
                    try
                    {
                        name          = quik.Class.GetSecurityInfo(classCode, securityCode).Result.ShortName;
                        accountID     = quik.Class.GetTradeAccount(classCode).Result;
                        firmID        = quik.Class.GetClassInfo(classCode).Result.FirmId;
                        step          = Convert.ToDecimal(quik.Trading.GetParamEx(classCode, securityCode, "SEC_PRICE_STEP").Result.ParamValue.Replace('.', separator));
                        priceAccuracy = Convert.ToInt32(Convert.ToDouble(quik.Trading.GetParamEx(classCode, securityCode, "SEC_SCALE").Result.ParamValue.Replace('.', separator)));
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Tool.GetBaseParam. Ошибка получения наименования для " + securityCode + ": " + e.Message);
                    }

                    if (classCode == "SPBFUT")
                    {
                        Console.WriteLine("Получаем 'guaranteeProviding'.");
                        lot = 1;
                        guaranteeProviding = Convert.ToDouble(quik.Trading.GetParamEx(classCode, securityCode, "BUYDEPO").Result.ParamValue.Replace('.', separator));
                    }
                    else
                    {
                        Console.WriteLine("Получаем 'lot'.");
                        lot = Convert.ToInt32(Convert.ToDouble(quik.Trading.GetParamEx(classCode, securityCode, "LOTSIZE").Result.ParamValue.Replace('.', separator)));
                        guaranteeProviding = 0;
                    }
                }
                else
                {
                    Console.WriteLine("Tool.GetBaseParam. Ошибка: classCode не определен.");
                    lot = 0;
                    guaranteeProviding = 0;
                }
            }
            else
            {
                Console.WriteLine("Tool.GetBaseParam. quik = null !");
            }
        }
        catch (NullReferenceException e)
        {
            Console.WriteLine("Ошибка NullReferenceException в методе GetBaseParam: " + e.Message);
        }
        catch (Exception e)
        {
            Console.WriteLine("Ошибка в методе GetBaseParam: " + e.Message);
        }
    }
Esempio n. 8
0
        public void GetAllCandlesTest()
        {
            Quik quik = new Quik();

            //Получаем месячные свечки по инструменту "Северсталь"
            List <Candle> candles = quik.Candles.GetAllCandles("TQBR", "CHMF", CandleInterval.MN).Result;

            Trace.WriteLine("Candles count: " + candles.Count);
        }
Esempio n. 9
0
    //public decimal CouponPeriod
    //{
    //    get
    //    {
    //        //couponPeiod = 0;
    //        couponPeiod = Convert.ToInt32(Convert.ToDecimal(_quik.Trading.GetParamEx(classCode, securityCode, "COUPONPERIOD").Result.ParamValue.Replace('.', separator)));
    //        return couponPeiod;
    //    }
    //}



    #endregion

    /// <summary>
    /// Конструктор класса
    /// </summary>
    /// <param name="_quik"></param>
    /// <param name="securityCode">Код инструмента</param>
    /// <param name="classCode">Код класса</param>
    public Tool(Quik quik, Security sec, int koefSlip)
    {
        _quik = quik;
        GetBaseParam(quik, sec.SecCode, sec.ClassCode, koefSlip);
        goalACY = sec.goalACY;
        currACY = 0;
        offer   = 0;
        bid     = 0;
        rank    = sec.Rank;
    }
Esempio n. 10
0
        public void GetCandlesTest()
        {
            Quik quik = new Quik();
            string graphicTag = "SBER2M";//В квике должен быть открыт график с этим (SBER2M) идентификатором.

            List<Candle> allCandles = quik.Candles.GetAllCandles(graphicTag).Result;
            Console.WriteLine("All candles count: " + allCandles.Count);

            List<Candle> partCandles = quik.Candles.GetCandles(graphicTag, 0, 100, 250).Result;
            Console.WriteLine("Part candles count:" + partCandles.Count);
        }
Esempio n. 11
0
 private void ButtonStart_Click(object sender, EventArgs e)
 {
     try
     {
         textBoxLogsWindow.AppendText("Подключаемся к терминалу Quik..." + Environment.NewLine);
         if (checkBoxRemoteHost.Checked)
         {
             _quik = new Quik(Quik.DefaultPort, new InMemoryStorage(), textBoxHost.Text);                                // инициализируем объект Quik с использованием удаленного IP-адреса терминала
         }
         else
         {
             _quik = new Quik(Quik.DefaultPort, new InMemoryStorage());     // инициализируем объект Quik с использованием локального расположения терминала (по умолчанию)
         }
         //// Отладочный вариант подключения
         //if (checkBoxRemoteHost.Checked) _quik = new Quik(34136, new InMemoryStorage(), textBoxHost.Text);    // инициализируем объект Quik с использованием удаленного IP-адреса терминала
         //else _quik = new Quik(34136, new InMemoryStorage());    // инициализируем объект Quik с использованием локального расположения терминала (по умолчанию)
     }
     catch
     {
         textBoxLogsWindow.AppendText("Ошибка инициализации объекта Quik..." + Environment.NewLine);
     }
     if (_quik != null)
     {
         textBoxLogsWindow.AppendText("Экземпляр Quik создан." + Environment.NewLine);
         try
         {
             textBoxLogsWindow.AppendText("Получаем статус соединения с сервером...." + Environment.NewLine);
             isServerConnected = _quik.Service.IsConnected().Result;
             if (isServerConnected)
             {
                 textBoxLogsWindow.AppendText("Соединение с сервером установлено." + Environment.NewLine);
                 buttonRun.Enabled   = true;
                 buttonStart.Enabled = false;
             }
             else
             {
                 textBoxLogsWindow.AppendText("Соединение с сервером НЕ установлено." + Environment.NewLine);
                 buttonRun.Enabled   = false;
                 buttonStart.Enabled = true;
             }
             // временный код
             Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
             Trace.Listeners.Add(new TextWriterTraceListener(Application.StartupPath + "\\TraceLogging.log"));
             // временный код
         }
         catch
         {
             textBoxLogsWindow.AppendText("Неудачная попытка получить статус соединения с сервером." + Environment.NewLine);
         }
     }
 }
Esempio n. 12
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("Открыта позиция по сбербанку.");
        }
Esempio n. 13
0
        public void GetLastCandlesTest()
        {
            Quik quik = new Quik();

            int Days = 7;
            List<Candle> candles = quik.Candles.GetLastCandles("TQBR", "SBER", CandleInterval.D1, Days).Result;
            Assert.AreEqual(Days, candles.Count);

            Days = 77;
            candles = quik.Candles.GetLastCandles("TQBR", "SBER", CandleInterval.D1, Days).Result;
            Assert.AreEqual(Days, candles.Count);

            Days = 1;
            candles = quik.Candles.GetLastCandles("TQBR", "SBER", CandleInterval.D1, Days).Result;
            Assert.AreEqual(Days, candles.Count);
        }
Esempio n. 14
0
        public void GetLastCandlesTest()
        {
            Quik quik = new Quik();

            int           Days    = 7;
            List <Candle> candles = quik.Candles.GetLastCandles("TQBR", "SBER", CandleInterval.D1, Days).Result;

            Assert.AreEqual(Days, candles.Count);

            Days    = 77;
            candles = quik.Candles.GetLastCandles("TQBR", "SBER", CandleInterval.D1, Days).Result;
            Assert.AreEqual(Days, candles.Count);

            Days    = 1;
            candles = quik.Candles.GetLastCandles("TQBR", "SBER", CandleInterval.D1, Days).Result;
            Assert.AreEqual(Days, candles.Count);
        }
Esempio n. 15
0
        public void CandlesSubscriptionTest()
        {
            Quik quik = new Quik();
            quik.Candles.NewCandle += OnNewCandle;

            bool isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            Assert.AreEqual(false, isSubscribed);

            quik.Candles.Subscribe("TQBR", "SBER", CandleInterval.M1);
            isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            Assert.AreEqual(true, isSubscribed);

            quik.Candles.Unsubscribe("TQBR", "SBER", CandleInterval.M1);
            isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            Assert.AreEqual(false, isSubscribed);

            Thread.Sleep(120000);//must get at leat one candle as use minute timeframe
        }
Esempio n. 16
0
        private void ButtonConnect_Click(object sender, RoutedEventArgs e) // подключение к Quik
        {
            try
            {
                Log("Подключаемся к терминалу Quik...");

                // инициализируем объект Quik с использованием локального расположения терминала (по умолчанию)
                _quik = new Quik(Quik.DefaultPort, new InMemoryStorage());
            }
            catch
            {
                Log("Ошибка инициализации объекта Quik...");
            }
            if (_quik != null)
            {
                Log("Экземпляр Quik создан.");
                try
                {
                    Log("Получаем статус соединения с сервером....");
                    _isServerConnected = _quik.Service.IsConnected().Result;
                    if (_isServerConnected)
                    {
                        Log("Соединение с сервером установлено.");
                        ButtonConnect.Content    = "OK";
                        ButtonConnect.Background = Brushes.Aqua;
                        ButtonConnect.IsEnabled  = false;

                        //  buttonRun.Enabled = true;
                        //  buttonStart.Enabled = false;
                    }
                    else
                    {
                        Log("Соединение с сервером НЕ установлено.");
                        //  buttonRun.Enabled = false;
                        //  buttonStart.Enabled = true;
                    }
                }
                catch
                {
                    Log("Неудачная попытка получить статус соединения с сервером.");
                }
            }
        }
Esempio n. 17
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("Открыта позиция по сбербанку.");
            }
        }
Esempio n. 18
0
        public void CandlesSubscriptionTest()
        {
            Quik quik = new Quik();

            quik.Candles.NewCandle += OnNewCandle;

            bool isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;

            Assert.AreEqual(false, isSubscribed);

            quik.Candles.Subscribe("TQBR", "SBER", CandleInterval.M1);
            isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            Assert.AreEqual(true, isSubscribed);

            //quik.Candles.Unsubscribe("TQBR", "SBER", CandleInterval.M1);
            //isSubscribed = quik.Candles.IsSubscribed("TQBR", "SBER", CandleInterval.M1).Result;
            //Assert.AreEqual(false, isSubscribed);

            Thread.Sleep(120000);//must get at leat one candle as use minute timeframe
        }
Esempio n. 19
0
        long NewOrder(Quik _quik, Tool _tool, Operation operation, decimal price, int qty)
        {
            long  res       = 0;
            Order order_new = new Order();

            order_new.ClassCode = _tool.ClassCode;
            order_new.SecCode   = _tool.SecurityCode;
            order_new.Operation = operation;
            order_new.Price     = price;
            order_new.Quantity  = qty;
            order_new.Account   = _tool.AccountID;
            try
            {
                res = _quik.Orders.CreateOrder(order_new).Result;
            }
            catch
            {
                Console.WriteLine("Неудачная попытка отправки заявки");
            }
            return(res);
        }
        public void GetOrderTest()
        {
            Quik quik = new Quik();

            //Заведомо не существующая заявка.
            long orderId = 123456789;
            Order order = quik.Orders.GetOrder("TQBR", orderId).Result;
            Assert.IsNull(order);

            //Заявка с таким номером должна присутствовать в таблице заявок.
            orderId = 14278245258;//вставьте свой номер
            order = quik.Orders.GetOrder("TQBR", orderId).Result;
            if (order != null)
            {
                Console.WriteLine("Order state: " + order.State);
            }
            else
            {
                Console.WriteLine("Order doesn't exsist.");
            }
        }
Esempio n. 21
0
        public void GetOrderTest()
        {
            Quik quik = new Quik();

            //Заведомо не существующая заявка.
            long  orderId = 123456789;
            Order order   = quik.Orders.GetOrder("TQBR", orderId).Result;

            Assert.IsNull(order);

            //Заявка с таким номером должна присутствовать в таблице заявок.
            orderId = 14278245258;//вставьте свой номер
            order   = quik.Orders.GetOrder("TQBR", orderId).Result;
            if (order != null)
            {
                Console.WriteLine("Order state: " + order.State);
            }
            else
            {
                Console.WriteLine("Order doesn't exsist.");
            }
        }
Esempio n. 22
0
        private void ButtonConnect_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                TextBoxLogsWindow.AppendText("Подключаемся к терминалу Quik..." + Environment.NewLine);
                _quik = new Quik(Quik.DefaultPort, new InMemoryStorage()); // инициализируем объект Quik с использованием локального расположения терминала (по умолчанию)
            }
            catch
            {
                TextBoxLogsWindow.AppendText("Ошибка инициализации объекта Quik..." + Environment.NewLine);
            }

            if (_quik != null)
            {
                TextBoxLogsWindow.AppendText("Экземпляр Quik создан." + Environment.NewLine);
                try
                {
                    TextBoxLogsWindow.AppendText("Получаем статус соединения с сервером...." + Environment.NewLine);
                    isServerConnected = _quik.Service.IsConnected().Result;
                    if (isServerConnected)
                    {
                        TextBoxLogsWindow.AppendText("Соединение с сервером установлено." + Environment.NewLine);
                        ButtonConnect.IsEnabled = false;
                        ButtonRun.IsEnabled     = true;
                    }
                    else
                    {
                        TextBoxLogsWindow.AppendText("Соединение с сервером НЕ установлено." + Environment.NewLine);
                        ButtonConnect.IsEnabled = false;
                        ButtonRun.IsEnabled     = true;
                    }
                }
                catch
                {
                    TextBoxLogsWindow.AppendText("Неудачная попытка получить статус соединения с сервером." + Environment.NewLine);
                }
            }
        }
Esempio n. 23
0
        private void connectToQuik_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Log("Подключаемся к терминалу Quik...");
                _quik = new Quik(Quik.DefaultPort, new InMemoryStorage());
            }
            catch
            {
                Log("Ошибка инициализации объекта Quik...");
            }

            if (_quik != null)
            {
                Log("Экземпляр Quik создан.");
                try
                {
                    Log("Получаем статус соединения с сервером....");
                    isServerConnected = _quik.Service.IsConnected().Result;
                    if (isServerConnected)
                    {
                        Log("Соединение с сервером установлено.");
                        //RunBtn.IsEnabled = true;
                        RunBtn.IsEnabled = true;
                    }
                    else
                    {
                        Log("Соединение с сервером НЕ установлено.");
                        //RunBtn.IsEnabled = false;
                        RunBtn.IsEnabled = false;
                    }
                }
                catch
                {
                    textBoxLogsWindow.AppendText("Неудачная попытка получить статус соединения с сервером." + Environment.NewLine);
                }
            }
        }
Esempio n. 24
0
 private void buttonStart_Click(object sender, EventArgs e)
 {
     try
     {
         textBoxLogsWindow.AppendText("Подключаемся к терминалу Quik..." + Environment.NewLine);
         _quik = new Quik(Quik.DefaultPort, new InMemoryStorage());    // инициализируем объект Quik
         //_quik = new Quik(34136, new InMemoryStorage());    // отладочное подключение
     }
     catch
     {
         textBoxLogsWindow.AppendText("Ошибка инициализации объекта Quik..." + Environment.NewLine);
     }
     if (_quik != null)
     {
         textBoxLogsWindow.AppendText("Экземпляр Quik создан." + Environment.NewLine);
         try
         {
             textBoxLogsWindow.AppendText("Получаем статус соединения с сервером...." + Environment.NewLine);
             isServerConnected = _quik.Service.IsConnected().Result;
             if (isServerConnected)
             {
                 textBoxLogsWindow.AppendText("Соединение с сервером установлено." + Environment.NewLine);
                 buttonRun.Enabled   = true;
                 buttonStart.Enabled = false;
             }
             else
             {
                 textBoxLogsWindow.AppendText("Соединение с сервером НЕ установлено." + Environment.NewLine);
                 buttonRun.Enabled   = false;
                 buttonStart.Enabled = true;
             }
         }
         catch
         {
             textBoxLogsWindow.AppendText("Неудачная попытка получить статус соединения с сервером." + Environment.NewLine);
         }
     }
 }
Esempio n. 25
0
    void GetBaseParam(Quik quik, string secCode, string _classCode, int _koefSlip)
    {
        try
        {
            securityCode = secCode;
            classCode    = _classCode;
            if (quik != null)
            {
                if (classCode != null && classCode != "")
                {
                    try
                    {
                        name          = quik.Class.GetSecurityInfo(classCode, securityCode).Result.ShortName;
                        accountID     = quik.Class.GetTradeAccount(classCode).Result;
                        firmID        = quik.Class.GetClassInfo(classCode).Result.FirmId;
                        step          = Convert.ToDecimal(quik.Trading.GetParamEx(classCode, securityCode, "SEC_PRICE_STEP").Result.ParamValue.Replace('.', separator));
                        priceAccuracy = Convert.ToInt32(Convert.ToDouble(quik.Trading.GetParamEx(classCode, securityCode, "SEC_SCALE").Result.ParamValue.Replace('.', separator)));

                        coupon      = Convert.ToDecimal(_quik.Trading.GetParamEx(classCode, securityCode, "COUPONVALUE").Result.ParamValue.Replace('.', separator));
                        couponPeiod = Convert.ToInt32(Convert.ToDecimal(_quik.Trading.GetParamEx(classCode, securityCode, "COUPONPERIOD").Result.ParamValue.Replace('.', separator)));

                        sectype     = Convert.ToString(quik.Trading.GetParamEx(classCode, securityCode, "SECTYPE").Result.ParamValue.Replace('.', separator));
                        mat_date    = Convert.ToInt32(Convert.ToDecimal(quik.Trading.GetParamEx(classCode, securityCode, "MAT_DATE").Result.ParamValue.Replace('.', separator)));
                        days_to_mat = Convert.ToInt32(Convert.ToDecimal(quik.Trading.GetParamEx(classCode, securityCode, "DAYS_TO_MAT_DATE").Result.ParamValue.Replace('.', separator)));

                        value = Convert.ToInt32(Convert.ToDouble(quik.Trading.GetParamEx(classCode, securityCode, "SEC_FACE_VALUE").Result.ParamValue.Replace('.', separator)));
                        if (couponPeiod != 0)
                        {
                            couponPercent = Convert.ToDouble(Math.Round((coupon * (Math.Round(DAYS_YEAR / Convert.ToDecimal(couponPeiod)))) / value, 4)) * 100;
                        }
                        else
                        {
                            couponPercent = 0;
                            Console.WriteLine("Tool.GetBaseParam. Ошибка вычисления рамзера купона в процентах." + securityCode);
                        }
                        slip = _koefSlip * step;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Tool.GetBaseParam. Ошибка получения наименования для " + securityCode + ": " + e.Message);
                    }

                    if (classCode == "SPBFUT")
                    {
                        Console.WriteLine("Получаем 'guaranteeProviding'.");
                        lot = 1;
                        guaranteeProviding = Convert.ToDouble(quik.Trading.GetParamEx(classCode, securityCode, "BUYDEPO").Result.ParamValue.Replace('.', separator));
                    }
                    else
                    {
                        Console.WriteLine("Получаем 'lot'.");
                        lot = Convert.ToInt32(Convert.ToDouble(quik.Trading.GetParamEx(classCode, securityCode, "LOTSIZE").Result.ParamValue.Replace('.', separator)));
                        guaranteeProviding = 0;
                    }
                }
                else
                {
                    Console.WriteLine("Tool.GetBaseParam. Ошибка: classCode не определен.");
                    lot = 0;
                    guaranteeProviding = 0;
                }
            }
            else
            {
                Console.WriteLine("Tool.GetBaseParam. quik = null !");
            }
        }
        catch (NullReferenceException e)
        {
            Console.WriteLine("Ошибка NullReferenceException в методе GetBaseParam: " + e.Message);
        }
        catch (Exception e)
        {
            Console.WriteLine("Ошибка в методе GetBaseParam: " + e.Message);
        }
    }
Esempio n. 26
0
        static void Main(string[] args)
        {
            //Выводим в лог приветствие
            Console.WriteLine(" - Вы готовы дети?");
            Thread.Sleep(1500);
            Console.WriteLine(" - Дааа, капитаааан!");
            Thread.Sleep(1500);
            Console.WriteLine(" - Я не слышуу!");
            Thread.Sleep(1500);
            Console.WriteLine(" - ТАК ТОЧНО, КАПИТААААН!");
            Thread.Sleep(1500);


            for (int i = 1; i < 10; i++)
            {
                Thread.Sleep(100);
                Console.Write(" - У");
            }

            Console.WriteLine();


            //ИТАК, ПОЕХАЛИ

            // Объявляем колоссальную переменую _quik. Она будет нашим главным связующим узлом с терминалом
            Quik _quik = null;

            bool isServerConnected = false;

            // Создаём экземпляр и записываем его в переменную _quik
            try
            {
                Console.WriteLine("Подключаемся к терминалу Quik..." + Environment.NewLine);

                _quik = new Quik(Quik.DefaultPort, new InMemoryStorage());     // инициализируем объект Quik с использованием локального расположения терминала (по умолчанию)
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message + ". Ошибка инициализации объекта Quik..." + Environment.NewLine);
            }
            if (_quik != null)
            {
                Console.WriteLine("Экземпляр Quik создан." + Environment.NewLine);
                try
                {
                    Console.WriteLine("Получаем статус соединения с сервером...." + Environment.NewLine);
                    isServerConnected = _quik.Service.IsConnected().Result;

                    if (isServerConnected)
                    {
                        Console.WriteLine("Соединение с сервером установлено." + Environment.NewLine);
                    }
                    else
                    {
                        Console.WriteLine("Соединение с сервером НЕ установлено." + Environment.NewLine);
                    }
                }
                catch
                {
                    Console.WriteLine("Неудачная попытка получить статус соединения с сервером." + Environment.NewLine);
                }
            }



            Console.WriteLine("Подписываемся на получение исторических данных..." + Environment.NewLine);
            _quik.Candles.Subscribe("SPBFUT", "SiU0", CandleInterval.M1).Wait();


            var isSubscribedToolCandles = _quik.Candles.IsSubscribed("SPBFUT", "SiU0", CandleInterval.M1).Result;


            if (isSubscribedToolCandles)
            {
                var toolCandles = _quik.Candles.GetAllCandles("SPBFUT", "SiU0", CandleInterval.M1).Result;


                Console.WriteLine("Подтянули торт и {0} свечек!", toolCandles.Count);
                Console.WriteLine("Последняя свечка:  Open = {0}   Close = {1}  Low = {2}  High = {3} ", toolCandles.Last().Open, toolCandles.Last().Close, toolCandles.Last().Low, toolCandles.Last().High);

                _quik.Candles.NewCandle += OnNewCandleDo;
            }

            Console.Read();
        }
Esempio n. 27
0
 public StrategyService(IAdvisorService advisorService, Client config)
 {
     this.advisorService = advisorService;
     this.config         = config;
     this.quik           = new Quik(config.Port == 0 ? Quik.DefaultPort : config.Port, new InMemoryStorage());
 }
Esempio n. 28
0
 /// <summary>
 /// Конструктор класса
 /// </summary>
 /// <param name="_quik"></param>
 /// <param name="securityCode">Код инструмента</param>
 /// <param name="classCode">Код класса</param>
 /// <param name="koefSlip">Коэффициент проскальзывания</param>
 public Tool(Quik quik, string securityCode_, string _classCode, int koefSlip)
 {
     _quik = quik;
     GetBaseParam(quik, securityCode_, _classCode, koefSlip);
 }
Esempio n. 29
0
 /// <summary>
 /// Конструктор класса
 /// </summary>
 /// <param name="_quik"></param>
 /// <param name="securityCode">Код инструмента</param>
 /// <param name="classCode">Код класса</param>
 public Tool(Quik quik, string securityCode_, string _classCode)
 {
     _quik = quik;
     GetBaseParam(quik, securityCode_, _classCode);
 }