S#

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


Получение времени сервера для QUIK.
Atom Reply
6/9/2010


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

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

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

C# + WinApi

Tags:


Thanks:




14 Answers
Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 6/9/2010
Reply


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

Thanks:

HaMMeR

Avatar
Date: 6/9/2010
Reply


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;
}
}

Topic starter
Thanks:

HaMMeR

Avatar
Date: 6/9/2010
Reply


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

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

Topic starter
Thanks:

takanaev

Avatar
Date: 6/10/2010
Reply


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

Thanks:

HaMMeR

Avatar
Date: 6/10/2010
Reply


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

Topic starter
Thanks:

ddd888

Avatar
Date: 6/10/2010
Reply


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

Thanks:

HaMMeR

Avatar
Date: 6/10/2010
Reply


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

Topic starter
Thanks:

ddd888

Avatar
Date: 6/10/2010
Reply


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

Thanks:

HaMMeR

Avatar
Date: 6/10/2010
Reply


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

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

Topic starter
Thanks:

ddd888

Avatar
Date: 6/10/2010
Reply


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

Thanks:

takanaev

Avatar
Date: 6/10/2010
Reply


Сейчас если открыта закладка, в которой нет таблицы экспорта (они в
другой закладке), то возникает ошибка.
Очень полезно будет создать механизм открытия той закладки, которая
необходима типа new QuikTrader(quikPath, zakladkaName, ddeServer,
dllName);

Thanks:

HaMMeR

Avatar
Date: 6/11/2010
Reply


Какая закладка?
Вы имейте ввиду закладка в QIUK-е , они в принцыпе фальшивые и не
имеет значение какя закладка выбрана.
Какую именно ошибка у вас вазникает?

Topic starter
Thanks:

E G

Avatar
Date: 7/8/2010
Reply


В вашем примере используется директива using ManagedWinapi.Windows

Я что-то не могу найти библиотек такую, не подскажите где ее можно
скачать?

Thanks:

E G

Avatar
Date: 7/8/2010
Reply


Все нашел, спасибо.

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy