private void Log(string str) // потоки { try { this.Dispatcher.Invoke(() => { TextBoxLogsWindow.AppendText(DateTime.Now.ToString("HH:mm:ss.fff") + " " + str + Environment.NewLine); TextBoxLogsWindow.ScrollToLine(TextBoxLogsWindow.LineCount - 1); // прокрутка scroll }); } catch (Exception e) { Console.WriteLine(e); } }
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); } } }
void Run() { comment = TextBoxName.Text; stop = Int32.Parse(TextBoxStopLoss.Text); take = Int32.Parse(TextBoxTakeProfit.Text); delta = Int32.Parse(TextBoxDelta.Text); try { secCode = TextBoxSecCode.Text; TextBoxLogsWindow.AppendText("Определяем код класса инструмента " + secCode + ", по списку классов..." + Environment.NewLine); try { classCode = _quik.Class.GetSecurityClass("SPBFUT,TQBR,TQBS,TQNL,TQLV,TQNE,TQOB,QJSIM", secCode).Result; } catch { TextBoxLogsWindow.AppendText("Ошибка определения класса инструмента. Убедитесь, что тикер указан правильно" + Environment.NewLine); } if (classCode != null && classCode != "") { TextBoxLogsWindow.AppendText("Определяем код клиента..." + Environment.NewLine); clientCode = _quik.Class.GetClientCode().Result; TextBoxLogsWindow.AppendText("Создаем экземпляр инструмента " + secCode + "|" + classCode + "..." + Environment.NewLine); _tool = new Tool(_quik, secCode, classCode); if (_tool != null && _tool.Name != null && _tool.Name != "") { TextBoxLogsWindow.AppendText("Инструмент " + _tool.Name + " создан." + Environment.NewLine); } ButtonRun.IsEnabled = false; ButtonTrailingStop.IsEnabled = true; ButtonAuto.IsEnabled = true; ButtonTest.IsEnabled = true; TextBoxLogsWindow.AppendText("Подписываемся на колбэк 'OnOrder'..." + Environment.NewLine); _quik.Events.OnOrder += Events_OnOrder; TextBoxLogsWindow.AppendText("Подписываемся на колбэк 'OnStopOrder'..." + Environment.NewLine); _quik.Events.OnStopOrder += Events_OnStopOrder; TextBoxLogsWindow.AppendText("Подписываемся на колбэк 'OnParam'..." + Environment.NewLine); _quik.Events.OnParam += Events_OnParam; TextBoxLogsWindow.AppendText("Подписываемся на колбэк 'OnTransReply'..." + Environment.NewLine); _quik.Events.OnTransReply += Events_OnTransReply; /* * TextBoxLogsWindow.AppendText("Подписываемся на колбэк 'OnTrade'..." + Environment.NewLine); * _quik.Events.OnTrade += Events_OnTrade; */ TextBoxSecCode.IsEnabled = false; TextBoxName.IsEnabled = false; TextBoxStopLoss.IsEnabled = false; TextBoxTakeProfit.IsEnabled = false; TextBoxDelta.IsEnabled = false; } } catch { TextBoxLogsWindow.AppendText("Ошибка получения данных по инструменту." + Environment.NewLine); } }