1

Тема: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Здесь обсуждаем визуальную библиотеку QVCLua.
Сама библиотека и описание в отдельной теме.

2 (2014-11-18 23:40:06 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Да, qvclua получился хорош, swerg, еще раз спасибо!
Мой первый бот на qlua+qvclua )

https://img-fotki.yandex.ru/get/15543/25113743.14/0_86947_5c9ebfa9_XXL

3

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

А можно пример кода? Или здесь используется QLua?

4

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Arhn, немного не понятен ваш вопрос.
Все это "нарисовано" с применением библиотеки QVCLua.

5

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Мне не понятен синтаксис языка

6 (2014-11-29 01:20:55 отредактировано Arhn)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Прошу прощения. Разобрался.

require "qvcl"
VCL = vcl

7 (2014-12-03 16:41:39 отредактировано gellerda)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Проблемка нарисовалась. Крестиком закрываю окно главной формы, окошко закрывается, но обработчик события  OnClose не вызывается. Что не так?

mainForm = vcl.Form("mainForm")
mainForm._= { caption="StakanMax", position="poDesigned", OnClose="OnMainFormClose" }

...

function OnMainFormClose(Sender, CloseAction)
    message("BYE 2",1);
    writeCfgFile("c:\\LUA\\stakan_max.cfg");
    OnStop();
end

В старой версии функция-обработчик вызывалась.

8 (2014-12-04 11:55:55 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Да, новая версия полна сюрпризов, теперь вот так

mainForm = vcl.Form({Name="mainForm", Caption="StakanMax", Position="poDesigned", OnClose=OnMainFormClose })
grid = vcl.StringGrid(mainForm, {Name="grid"})
...

function OnMainFormClose(Sender, CloseAction)
    message("BYE 2",1);
    writeCfgFile("c:\\LUA\\stakan_max.cfg");
    OnStop();
end

Или например вот так, сэкономим на ресурсах (готово к запуску)

local vcl=require "qvcl"
mainForm = vcl.Form({Caption="StakanMax", OnClose=function() message("BYE 2",1) mainForm:Release() vcl=nil end })
mainForm:Show()

function main() repeat sleep(1) until not vcl end

9

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Перепишите вашу программу  вот так:


local vcl=require "qvcl"
mainForm = vcl.Form{Caption="StakanMax", OnClose=OnFormClose }
mainForm:Show()

OnFormClose=function() message("BYE 2",1) mainForm:Release() vcl=nil end

function main()
    repeat sleep(1)
    until not vcl
end

И она перестает завершаться при закрытии окна.

10 (2014-12-04 23:02:57 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

s_mike пишет:

Перепишите вашу программу  вот так:


local vcl=require "qvcl"
mainForm = vcl.Form{Caption="StakanMax", OnClose=OnFormClose }
mainForm:Show()

OnFormClose=function() message("BYE 2",1) mainForm:Release() vcl=nil end

function main() 
    repeat sleep(1) 
    until not vcl
end

И она перестает завершаться при закрытии окна.

Попробуйте перенести обработчик выше определения его вызова, и ваш вариант заработает. Это же просто ссылка. )

local vcl=require "qvcl"

OnFormClose=function() message("BYE 2",1) mainForm:Release() vcl=nil end

mainForm = vcl.Form{Caption="StakanMax", OnClose=OnFormClose }
mainForm:Show()

function main() 
    repeat sleep(1) 
    until not vcl
end

11 (2014-12-05 10:57:00 отредактировано s_mike)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Ок, пусть будет так, хотя это не по правилам ))


Еще вопрос. Есть где-нибудь в природе описание всех доступных свойств и методов?

Пробую сейчас нарисовать на новой версии ComboBox и подсунуть ему список для выбора - и ничего подобного. На 0.35 работало.

12 (2015-11-19 21:47:34 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Всё работает, разница в нюансах

local vcl=require "qvcl"
local OnFormClose = function() message("BYE 2",1) mainForm:Release() vcl=nil end

mainForm = vcl.Form{Caption="StakanMax", OnClose=OnFormClose }
ComboBox = vcl.ComboBox(mainForm, {Name = "ComboBoxx", top=10, left=10, Width=100, Text="Выбрать...", 
  OnChange=function() message(ComboBox.Text) end, ShowHint=true, Hint="Всплыло вот..."})
for _,i in ipairs({"Текст 1","Текст 2","Текст 3"}) do    ComboBox.Items:Add(i) end

mainForm:Show()

function main() repeat sleep(1) until not vcl end

Или сразу задать

local vcl=require "qvcl"
Form=vcl.Form()
ComboBox = vcl.ComboBox(Form,{Text="Выбрать...", Items={"Текст 1","Текст 2"},
  OnChange=function() message(ComboBox.Text) end})
Form.Visible=true

function main() repeat sleep(1) until not vcl end

13 (2014-12-05 15:33:17 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

В этом сообщении будет баг-лист (вылет QUIK)
1. Передача nil в значения контролов
2. Пробел в имени Name
3. Попытка записи или чтения из ячейки StringGrid вне заданного диапазона
4. Обращение к ранее (выше по коду) не определенному обработчику
5. Передача на контролы переменных недопустимого типа или значений вне докум. диапазона
6. Попытка повторного запуска скрипта после вылета с неизвестной ошибкой. Иногда поможет "Удалить - Добавить"заново скрипт в "Доступные скрипты", но чаще всего нужно "Удалить", перегрузить Квик, "Добавить", запуск. Причина известная - Квик не отпускает библиотеку и не освобождает память при вылете с неизвестной ошибкой.
...

14

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

GREEN_X5 пишет:

Всё работает, разница в нюансах )


О какой забавник автор ))

15 (2014-12-05 12:06:24 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

s_mike пишет:

Еще вопрос. Есть где-нибудь в природе описание всех доступных свойств и методов?

s_mike, предлагаю сотрудничество. ) Я вам кину комплект скрипта-образца со всеми доками что нарыл в сети, а вы мне расшифруете некоторые методы и свойства, с которыми я не разобрался (не до изучения delfi пока). Я их буду вносить в скрипт, так и доделаем нормальный мануал для народа. Если захотите и на свой сайт выложите. )
От бразильцев и в этот раз исчерпывающей документации нет. А в той, что есть - косяк на косяке синтаксический в примерах.
Если интересно - киньте мыло в личку.

16

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Отчего же не кинуть - кидайте.

Правда обещать, что я вот так сразу сяду и начну разбираться не могу. По мере надобности - не вопрос.

17

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Ок, понял, я тогда скоро выложу сюда в общий доступ, нужно только юзерфрендли файлопомойку найти, никогда ими не пользовался..

18

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

В QUIK 6.16 разработчики по просьбам пользователей сделали сделали жесткую выгрузку библиотек, не беда, просто изменим шаблоны )

local vcl=require "qvcl"
OnFormClose=function() message("BYE") vcl=nil end
mainForm = vcl.Form{Caption="StakanMax", OnClose=OnFormClose }
mainForm:Show()

function main() 
  while vcl do
    sleep (1)
  end
  sleep(100)
end

19 (2015-01-21 21:51:46 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Пример использования библиотеки. Положить в корень QUIK, рядом должна быть библиотека QVCLua. Запустить из-под QUIK.

Принтскрины
http://i.gyazo.com/b05a922b607da78c74d03312879f413b.png
http://i.gyazo.com/ffb3cbc9888140a6f48cb59ff1a63213.png
http://i.gyazo.com/ff95d85ecdbfd9280f6d98a080d70c76.png
http://i.gyazo.com/68d425fa623d17b3cd925f185d1d36db.png

20

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

sam063rus пишет:

А сам FlashCatcher? smile)) Это дельтахеджер,  я так понимаю? Какая задержка при обработке транзакций из-за VCLua?

Опционный бот для разных конструкций с дельта-хеджером.
К выводу через VCLua обращается уже после подготовки и отправки транзакции, поэтому задержек нет. Т.е. любой вывод на экран - в самом конце кода и на параллельном потоке.

21 (2015-01-17 16:09:41 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

sam063rus,
я про потоки qlua - основной и main. Если заведете тему типа "Потокобезопасность в qLua" в ветке Lua: учебники, общие вопросы, я с удовольствием поделюсь своей межпоточной моделью.
В целом, да, абсолютно разделить по времени потоки в рамках qlua может быть и не получится, контроллировать хотя бы на этапе проектирования нужно. Я оставил и в рабочем варианте, обратите внимание на этот участок формы:
http://i.gyazo.com/5c02e9a3e99347079ce64c1fb35ef478.png
Слева направо, сверху вниз:
1. Сколько инструментов ушло на вывод в VCLua
2. Сколько открыто позиций
3. Бегунок частоты цикла потока main (оказалось очень информативно визуально, стрелочка бегает)
4. Поступило из колбэков котировок фьючерсов в очередь в main-поток на обработку
5. Поступило из колбэков котировок опционов в очередь в main-поток на обработку
6. Толпа в очереди перед main
7. Толпа в очереди перед vclua
-- А теперь, внимание! )
8. Выключатель вывода в VCLua (во все элементы, кроме упомянутых здесь)
9. Частота вывода в vclua (выводится по таймеру) в секундах
10. Не имеет отношения к нашей теме.
11. RUN - не имеет отношения к нашей теме.

Таким образом достигнут пракически полный межпоточный "онлайн" ), при отключенном выводе в grid и memo - индикатор толпы в очереди всегда ноль. При включенном выводе - раз в три (или сколько зададите таймеру) секунды скопившаяся очередь разгребается примерно за полсекунды. Это много, поэтому - отходим от бота - отключаем вывод в vclua.
Обнаружена также зависимость от мощности видеокарты. Интегр Intel3000 разгребает максимальную толпу в очереди например за 0,5 сек, немощная, но дискретная - за 0.2 сек. Возможно хорошая видеокарта будет разгребать очередь на вывод вовсе "онлайн".

Код своего бота я выкладывать не буду, и не столько потому, что ухлопал на него почти пол-года своей жизни, и не столько потому, что просто выдернуть граф. часть чтобы она сходу самостоятельно заработала - непросто и долго, сколько потому что Вам имеет смысл написать её самому. За день напишите и ещё за неделю отладите баги (а они будут в работе в Квик даже при начальном безупречном синтаксисе VCLua). Поверьте, лучше написать своё.)
К тому же Вы писали на делфи, вам легче в 1000 раз, мой бот - первый опыт на Lua, делфи до сих пор не знаю. ) В пору мне у вас советов спрашивать. )

Добавлю, вся работа с vclua только из основного потока, иначе - вылет Квик.
У меня, ну, почти -  вся ), кое-что всё таки отдал в main, проверял экспериментальным путем, до каких пор vclua не подавится, удалось отвоевать вот этот grid, он заполняется из main в режиме реалтайм (если пришла новая котировка) кратно sleep(1). Квант в оси тоже переключен на 1 мсек.

http://i.gyazo.com/790b3eb0ba5909e1bdbffd77f26e8614.png

22

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Добрый день. Ждемс описания функционала qvcl.
Заранее благодарен

23

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

kalikazandr пишет:

Добрый день. Ждемс описания функционала qvcl.
Заранее благодарен

Нет его и вряд ли появится. Запускайте пример, задавайте вопросы.

24 (2015-01-19 23:04:38 отредактировано kalikazandr)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

GREEN_X5 пишет:

Нет его и вряд ли появится. Запускайте пример, задавайте вопросы.

Повторюсь, писал в другой ветке.
Запускаю Sample.lua, открывается красочное, информативное окно (как у вас на скриншотах), закрываю окно крестиком, скрипт останавливается. Переключаюсь на любую активную вкладку (хром, нотепад и т.д.) и квик падает с дампом.
Да, пробовал добавить в ваш скрипт
function OnStop()
    myForm:Release()
    is_run=false
end
При попытке остановить скрипт кнопкой "остановить" - квик просто падает (без onStop() просто должен упасть)
Арка отказывается помогать.
w.8.1x64
На выходных попробую на w.8 откатится м.б. поможет, хз.

25 (2015-01-19 23:19:52 отредактировано kalikazandr)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

sam063rus пишет:

я не буду здесь говорить о троллинге..........

переходи на FreeRTOS и не е...и людям мозг. сначала со своим ТУпайлом, теперь с несростом в луа.


p.s. это. так, лирика....

Нет времени на изучение английского/ С. Тупайл я перевел худо-бедно на lua.