Получение времени сервера для QUIK.
Atom
09.06.2010


У меня есть такое предложение.

А почему бы не получать время сервера из Статусбара QIUK?

Если кому интерсно, у меня это уже сделанно. И работает безотказно.

C# + WinApi

Теги:


Спасибо:


1 2  >
Mikhail Sukhov

Фотография
Дата: 09.06.2010
Ответить


Выкладывай. А какую проблему это решит?

Спасибо:

HaMMeR

Фотография
Дата: 09.06.2010
Ответить


using System;
using System.Diagnostics;
using System.Linq;
using System.Text.RegularExpressions;
using ManagedWinapi.Windows;

internal static class ServerTime
{
//Экземпляр Статусбара
private static readonly SystemWindow StatusBar;

static ServerTime()
{
//Поличаем список всех процессов
Process[] processlist = Process.GetProcesses();

//Находим процесс QUIK
Process infoExe = processlist.Single(process =>
(process.ProcessName == "info"));

//Получаем обработчик окна QUIK
var swnd = new SystemWindow(infoExe.MainWindowHandle); //
msctls_statusbar32

//Находим Статусбар
StatusBar = swnd.AllChildWindows.Single(window =>
(window.ClassName.Equals("msctls_statusbar32")));
}

public static DateTime GetServerTime()
{
//Начальная инициализация времени сервера
//Берем текушее время
DateTime serverTime = DateTime.Now;
DateTime wndSrvTime = serverTime;

//Текст статусбара
String srvTimeString = StatusBar.Content.LongDescription;
try
{
String dateTime = "";

//Успользуем регулярное выражение, чтобы найти время
var regexObj = new Regex(@"\d\d:\d\d:\d\d");
Match matchResult = regexObj.Match(srvTimeString);
if (matchResult.Success)
{
dateTime = matchResult.Value;
}

//Успользуем регулярное выражение, чтобы найти дату
regexObj = new Regex(@"\d\d[/.]\d\d[/.]\d\d\d\d");
matchResult = regexObj.Match(srvTimeString);
if (matchResult.Success)
{
dateTime = matchResult.Value + " " + dateTime;
}
wndSrvTime = DateTime.Parse(dateTime);
}
catch (ArgumentException)
{
// Syntax error in the regular expression
}
catch(FormatException)
{
//
}

return wndSrvTime;
}
}

Спасибо:

HaMMeR

Фотография
Дата: 09.06.2010
Ответить


Не надо будет волноваться о синхрнизации премени компютера с временем
на бирже.

А еще можно получить премя используя портфель и QPILE.

Спасибо:

takanaev

Фотография
Дата: 10.06.2010
Ответить


Так вроде QPILE-скрипт запускается каждые n секунд, думаю, не вариант.

Спасибо:

HaMMeR

Фотография
Дата: 10.06.2010
Ответить


Я согласен с вами и нашел алтернативный вариант. Который у меня
безотказно работает.

Спасибо:

ddd888

Фотография
Дата: 10.06.2010
Ответить


Интересно, а какую еще информацию можно "выудить" таким образом из
квика?

Спасибо:

HaMMeR

Фотография
Дата: 10.06.2010
Ответить


А что именно вам надо?

Спасибо:

ddd888

Фотография
Дата: 10.06.2010
Ответить


Если б знать, что возможно, то тогда и спрос соответствующий появился
бы. :) Да вопросов возникает куча, на самом деле. Хотя бы, например,
какие таблицы открыты или насколько корректно происходит обновление
информации - нет ли запаздываний в приеме данных. Каков статус
соединения с брокером и т.д.

Спасибо:

HaMMeR

Фотография
Дата: 10.06.2010
Ответить


Можно например получить
- какие таблицы открыты
- статус соединения с брокером

Да и много чего. Можно с примером поиграть. В режиме Debug постаь
точку остановки и посмотри swnd.AllChildWindows, думаю найдеш мнсого
чего интересного.

Спасибо:

ddd888

Фотография
Дата: 10.06.2010
Ответить


Супер! На досуге надо будет обязательно "поковыряться". :)

Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy