Closed Prival1 closed 5 years ago
Спасибо! Положу ссылку в РидМи. Демо приложение делал @Pr0phet1c, если честно я его даже не открывал кроме как проверить, что окно открывается нормально, - мне API достаточно.
По основному вопросу как получить параметры: насколько я понимаю, они не транслируются, их нужно получать через GetParamEx (#128). Пересмотрел документацию QLUA быстро и не нашел функции обратного вызова с этими данными. Логика мне кажется такая: если вы можете получить стакан, то зачем вам всё останое посчитанное непонятно на какой момент, если в коде это высчитывается легко из стакана.
Из стакана не получиться. Квик транслирует в зависимости от настроек сервера брокера глубину +-10 или +- 20, для вычисления этих параметров необходим весь стакан, а это Plaza и orderLog. ОИ вообще невозможно вычислить, его транслирует биржа. Это уникальная вещь. Не многие биржы в мире могут делать это реал тайм. Этими данными можно легко пользоваться, это приносит прибыль. Много и долго объяснять. Просто посмотрите мой скрин я думаю Вы как трейдер оцените эти данные и поймете как они для меня важны. Вот ссылка на описание моей ТС https://www.mql5.com/ru/forum/105740/page85 к ней есть пояснения.
Я просто из головы не помню как их получать в реальном времени, еще посмотрю позже.
On Mon, Apr 30, 2018, 11:37 PM Prival notifications@github.com wrote:
Из стакана не получиться. Квик транслирует в зависимости от настроек сервера брокера глубину +-10 или +- 20, для вычисления этих параметров необходим весь стакан, а это Plaza и orderLog. ОИ вообще невозможно вычислить, его транслирует биржа. Это уникальная вещь. Не многие биржы в мире могут делать это реал тайм. Этими данными можно легко пользоваться, это приносит прибыль. Много и долго объяснять. Просто посмотрите мой скрин я думаю Вы как трейдер оцените эти данные и поймете как они для меня важны. Вот ссылка на описание моей ТС https://www.mql5.com/ru/forum/105740/page85 к ней есть пояснения.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/finsight/QUIKSharp/issues/155#issuecomment-385521232, or mute the thread https://github.com/notifications/unsubscribe-auth/AAd5fK-BbIswvo_cq5bnhOTsEXvhneiDks5tt3YfgaJpZM4TtCgH .
Из доков QLua: Всё же эти параметры не транслируются, а транслируется событие об их обновлении. Потом нужно вызывать GetParamsEx. Это наверное нужно обернуть внутри Lua, чтобы не было лишних round trips.
Добрый день. Когда я делал демо-приложения, то не столкнулся с проблемой доступа к элементам формы из других потоков (именно в данных приложениях), поэтому не стал заморачиваться с "обходом" этой проблемы, Главное было сделать максимально простое приложение, с работой которого сможет разобраться даже начинающий. Замечание про нестандартный код класса - весьма интересное. Я демо-квиком уже много лет не пользовался и не предполагал, что этот параметр подменяют. Именно поэтому в моем списке классов такого нет, но в обычной работе этого списка хватает для 90% реально используемых инструментов. и ОИ, и количество заявок действительно необходимо получать через qetParamEx. Делать это можно или через колбэк onParam, или отправляя запрос на получение соответствующего параметра тогда, когда это требуется. Причем, ОИ будет именно текущим значением, а не историческими данными (в квике ОИ можно отобразить в виде индикатора)
Спасибо за ответы и ваши подсказки. Сделал вот так ` private void Events_OnParam(Param par) {
//NUMCONTRACTS NUMERIC Количество открытых позиций
//NUMBIDS NUMERIC Количество заявок на покупку
//NUMOFFERS NUMERIC Количество заявок на продажу
//BIDDEPTHT NUMERIC Суммарный спрос
//OFFERDEPTHT NUMERIC Суммарное предложение
//список возможных идентефикаторов
//https://quikluacsharp.ru/quik-qlua/poluchenie-dannyh-iz-tablits-quik-v-qlua-lua/
if (par.SecCode == "RIM8")
{
var OI = _quik.Trading.GetParamEx(par.ClassCode, par.SecCode, "NUMCONTRACTS").Result;
var Kol_pok = _quik.Trading.GetParamEx(par.ClassCode, par.SecCode, "NUMBIDS").Result;
var Kol_pro = _quik.Trading.GetParamEx(par.ClassCode, par.SecCode, "NUMOFFERS").Result;
Console.WriteLine("OB={0} Пок={1} Прод={2}",OI.ParamImage,Kol_pok.ParamImage,Kol_pro.ParamImage);
}
}`
Данные приходят.Но как-то неправильно мне кажется. Чисто интуитивно кажеться, я какраз из тех начинающих для кого вы писали эти примеры. Можно ли как-то более красиво (экономно) получить эти данные ? Заранее спасибо
З.Ы. В файле qsfunctions.lua закоментировал --log("Futures holding returns nil", 3)
Постоянно шло это сообщение в лог Квика. Надоело. Не знаю правильно вырезал или нет. Удивлён что так часто идет проверка getFuturesHolding
Экономней не получится (во всяком случае я другого способа не знаю). Единственное, что можно тут посоветовать - вынести получение данных в отдельный метод, в котором можно будет применить конструкцию await ... .ConfigureAwait(false), вместо Result. Но можно оставить как есть, если проблем не возникает. log("Futures holding returns nil", 3) - я у себя тоже закомментил, но сейчас уже не вспомню почему не сделал это в мастер-ветке.
У меня вроде все заработало и соединяется - но таблицу не выводит и зависает. Просто мрак короче. Есть ли пример конфигурационного файла VS - что бы он однозначно компилировался и выводил все нормально. Поему таблица вывода подвисает?!
@Prival1 если все еще пользуетесь Q#, может сделаете update для 1.0 или пишите в #195 что еще не хватает.
Создал видео как скачать и первый раз запустить этот проект. Надеюсь что оно поможет тем кто первый раз это делает. Добавит популярности проекту и меньше будет вопросов к разработчикам... Еще раз спасибо авторам за работу.