finsight / QUIKSharp

QUIK# (QUIK Sharp) is the QUIK Lua interface ported to .NET.
Other
230 stars 134 forks source link

Видео первого подключения. #155

Closed Prival1 closed 5 years ago

Prival1 commented 6 years ago

Создал видео как скачать и первый раз запустить этот проект. Надеюсь что оно поможет тем кто первый раз это делает. Добавит популярности проекту и меньше будет вопросов к разработчикам... Еще раз спасибо авторам за работу.

  1. На видео есть несколько ошибок (неточностей работы). Надеюсь что у разработчика найдется время воспроизвести их и поправить.
  2. Если не затруднит покажите как получить в C# данные озвученные в конце видео. Ссылка на видео. https://youtu.be/DKkCvKeSFoc
buybackoff commented 6 years ago

Спасибо! Положу ссылку в РидМи. Демо приложение делал @Pr0phet1c, если честно я его даже не открывал кроме как проверить, что окно открывается нормально, - мне API достаточно.

По основному вопросу как получить параметры: насколько я понимаю, они не транслируются, их нужно получать через GetParamEx (#128). Пересмотрел документацию QLUA быстро и не нашел функции обратного вызова с этими данными. Логика мне кажется такая: если вы можете получить стакан, то зачем вам всё останое посчитанное непонятно на какой момент, если в коде это высчитывается легко из стакана.

Prival1 commented 6 years ago

Из стакана не получиться. Квик транслирует в зависимости от настроек сервера брокера глубину +-10 или +- 20, для вычисления этих параметров необходим весь стакан, а это Plaza и orderLog. ОИ вообще невозможно вычислить, его транслирует биржа. Это уникальная вещь. Не многие биржы в мире могут делать это реал тайм. Этими данными можно легко пользоваться, это приносит прибыль. Много и долго объяснять. Просто посмотрите мой скрин я думаю Вы как трейдер оцените эти данные и поймете как они для меня важны. Вот ссылка на описание моей ТС https://www.mql5.com/ru/forum/105740/page85 к ней есть пояснения.

buybackoff commented 6 years ago

Я просто из головы не помню как их получать в реальном времени, еще посмотрю позже.

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 .

buybackoff commented 6 years ago

Из доков QLua: image Всё же эти параметры не транслируются, а транслируется событие об их обновлении. Потом нужно вызывать GetParamsEx. Это наверное нужно обернуть внутри Lua, чтобы не было лишних round trips.

Pr0phet1c commented 6 years ago

Добрый день. Когда я делал демо-приложения, то не столкнулся с проблемой доступа к элементам формы из других потоков (именно в данных приложениях), поэтому не стал заморачиваться с "обходом" этой проблемы, Главное было сделать максимально простое приложение, с работой которого сможет разобраться даже начинающий. Замечание про нестандартный код класса - весьма интересное. Я демо-квиком уже много лет не пользовался и не предполагал, что этот параметр подменяют. Именно поэтому в моем списке классов такого нет, но в обычной работе этого списка хватает для 90% реально используемых инструментов. и ОИ, и количество заявок действительно необходимо получать через qetParamEx. Делать это можно или через колбэк onParam, или отправляя запрос на получение соответствующего параметра тогда, когда это требуется. Причем, ОИ будет именно текущим значением, а не историческими данными (в квике ОИ можно отобразить в виде индикатора)

Prival1 commented 6 years ago

Спасибо за ответы и ваши подсказки. Сделал вот так ` 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

Pr0phet1c commented 6 years ago

Экономней не получится (во всяком случае я другого способа не знаю). Единственное, что можно тут посоветовать - вынести получение данных в отдельный метод, в котором можно будет применить конструкцию await ... .ConfigureAwait(false), вместо Result. Но можно оставить как есть, если проблем не возникает. log("Futures holding returns nil", 3) - я у себя тоже закомментил, но сейчас уже не вспомню почему не сделал это в мастер-ветке.

Nikolaev-Nikolay commented 5 years ago

У меня вроде все заработало и соединяется - но таблицу не выводит и зависает. Просто мрак короче. Есть ли пример конфигурационного файла VS - что бы он однозначно компилировался и выводил все нормально. Поему таблица вывода подвисает?!

buybackoff commented 5 years ago

@Prival1 если все еще пользуетесь Q#, может сделаете update для 1.0 или пишите в #195 что еще не хватает.