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); }
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); }
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); }
public void GetAllCandlesTest() { Quik quik = new Quik(); //Получаем месячные свечки по инструменту "Северсталь" List<Candle> candles = quik.Candles.GetAllCandles("TQBR", "CHMF", CandleInterval.MN).Result; Trace.WriteLine("Candles count: " + candles.Count); }
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); } }
public void GetAllCandlesTest() { Quik quik = new Quik(); //Получаем месячные свечки по инструменту "Северсталь" List <Candle> candles = quik.Candles.GetAllCandles("TQBR", "CHMF", CandleInterval.MN).Result; Trace.WriteLine("Candles count: " + candles.Count); }
//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; }
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); }
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); } } }
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("Открыта позиция по сбербанку."); }
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); }
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); }
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 }
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("Неудачная попытка получить статус соединения с сервером."); } } }
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("Открыта позиция по сбербанку."); } }
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 }
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."); } }
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); } } }
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); } } }
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); } } }
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); } }
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(); }
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()); }
/// <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); }
/// <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); }