тот самый (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Вопросы к разработчикам. Всегда хотел спросить...., на все мои вопросы в данной теме - требуется обязательный ответ
 
1. Вот ту, у себя https://arqatech.com/ru/products/quik/modules/infrastructure-solutions/quik-matching-engine/
Вы пишите, что
Цитата
Тесты показали, что такой программно-аппаратный комплекс позволяет по  одному финансовому инструменту обрабатывать более 5000 транзакций в  секунду со средним временем выполнения транзакции менее 200 микросекунд.  Средняя задержка распространения рыночной информации составляет менее  500 микросекунд.
Спрашивается, каким образом Вы измеряли задержку? Ведь в Windows - не существует стабильных микросекундных счётчиков, уж неговоря и про нанотаймеры (о которых так часто любят хвастать "линуксоиды"). Все эти так называемые "измерения" - это чистой воды развод.

2. Вот тут, у себя https://arqatech.com/ru/products/quik/tech-features/general-information/
Вы пишите:
Цитата
Задержка трансляции данных на сервере брокера, обслуживающего клиентов, составляет не более 1 секунды.
чуть ниже:
Цитата
Время постановки заявки в торговую систему ASTS
800 в секунду с одного сервера
т.е. получается, Вы признаёте, что никакого "HFT" с QUIK-ом не "сваришь"?

3. Вот тут, у себя https://arqatech.com/ru/products/quik/tech-features/general-information/
Вы пишите, что
Цитата
Программный комплекс QUIK создан с применением инструментальных средств разработки Microsoft Visual Studio C++ и Borland Delphi.
Стесняюсь спросить....
Уж не тот ли этот Ваш "неубиваемый/неотключаемый" WINROS (и...соответственно iwr.dll ) Вы причислили "к своим" разработкам с применением Borland Delphi? :lol:
news.log
 
Выставил такие настройки:

Новости - сохраняются ТОЛЬКО за текущий день.
Межпроцессное взаимодействие (IPC)
 
Пожалуй, одна из самых лучших статей по этой теме с примерами:
http://www.frolov-lib.ru/books/bsp.old/v27/ch2.htm
base64 image decode
 
Уважаемые разработчики.
Честно говоря, уже давно перестал удивляться Вашей профессиональной пригодности...
Глядя на то как Вы вот уже 16 лет "допиливаете" и никак не можете допилить QUIK до товарного вида - то, и о работе этого форума - нечему удивляться.
Такое ощущение, что Вы взяли человека с улицы - и дали ему задание освоить HTML, основы jscript и сделать уже наконец нормальный форум - а он в итоге... чтоб зря не заморачиваться малость "допилил" для ваших нужд форум на Битриксе....
и тут.. пошлО....:
Код
[img]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoIAAAEZCAYAAAADuUQIAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJc
EhZcwAADsMAAA7DAcdvqGQAADHISURBVHhe7d15uBTF+ejxl99zn98fufe6JW64gZi4AApuuEVBIy4xuMcYF9QYt7jFqFGTqBjjvoBLJNGIoqgoUSQu
CApHXHEDA6hRRMB91yRP/vg9yeVWdVfNvF2nu2fmnJk5M6e/n+dUT71V1dXdM3P6vPQs9Fk4//kVAgAAgEI5+fRzJEoEB24xzDUBAACgtxszZox0dHS
UE8FFr851XQAAAOjNpkyd3jkR3Pagia678fr0iZZR3UrE5kb1JGMzsNxn6NhVSi06TjaZSlyLluVFTmyZmUr1KFJ9ppocnIzNTVxzS9ccMYEOE3FUSc
Zx3bXouNwUcxuJluVFIlbNkc7HpAIjDuO2cldKHP+UmU4dJ+YtjXVtOi43xUsdu4VrSsaqMRmbqtp23BfGpUXymOxSxfoQrM7HFMaJSiJ2TaZSao1Flf
xjim/MUsdqXzrFpWrKvOVhRhCbulsjpuOo7sVBZuwmLcf2x0WlmzC2CxcYOo7rpYWuGsExdIpNi54

Очевидно, додуматься, как вставлять и хранить закодированные в формате base64 картинки на форум - это выше ваших сил....
Вам самим-то? не стыдно за свои жалкие поделки?

Если уж не умеете отображать правильно такой контент то, хотя б фильтровали бы его теми же регекспами, а не заставляли других пользователей любоваться на эту "порнографию" размеров в 2 экрана по вертикали.

Суть....
Если не можете - то, хоть воспользуйтесь тем же vBulletin или легковесным но, по крайней мере более функциональным чем ваш текущий форумный движок - punBB. К тому же он ещё и бесплатный.

<развёрнутый ответ - обязателен>
"Доступные параметры" vs "Выбранные параметры"
 


Предложение:
Сделать так, чтоб когда мы выбираем какой-нибудь параметр из "Доступные параметры" -> в "Выбранные параметры" - то, этот параметр - исчезал из "Доступных параметров".
А то, получается, можно 2 и более раз добавить один и тот же параметр в "Выбранные ..." и, следовательно - и в получаемую таблицу.

Данное предложение - справедливо и для других диалоговых окон QUIK-а.
СПРАВКА ПО QLUA. ВЫЧИТКА (Версия 7.4)
 
Решил, раз уж разработчики невсостоянии сделать нормальный "хелп" к QLUA и QUIK-у - им немного помочь.

Все ссылки на файлы - получены правой кнопкой мыши в разделе "Свойства".

Итак...
начнём..
Цитата
QLUA.chm::/ch2.htm
QLua является дополнительным компонентом Рабочего места QUIK.
QLua является дополнительным компонентом Рабочего места QUIK. Данный компонент - может быть отключен Вашим брокером. Если это так - обращайтесь в его службу техподдержки.
Цитата
QLUA.chm::/ch4_1_5.htm
Значение параметра Описание
  1. Дополнить ещё третьей колонкой "Пример"
  2. Колонку "Описание" - сделать ввиде гиперссылки на подробное описание
NUMRECORDS  Число записей   - каких записей? Где хранятся/находятся эти записи?
ORG  Организация   - что за организация? Брокер? Биржа?
MEMORY  Занято памяти  - Кем/чем занято? Под что занято? Что за память - где она располагается: ОЗУ/винчестер?
LOCALTIME  Текущее время  - время на компьютере пользователя?
MESSAGESSENT  Передано сообщений  - Что за сообщения? По какому протоколу?
BYTESRECV  Принято полезных байт  - Что ещё за "полезные" байты? А где, в таком случае, смотреть потери?
AVGSENT  Средняя скорость передачи  - средняя в секунду? в час?
LASTPINGDURATION  Задержка данных при обмене с сервером  - в чём измеряется?
MAXPINGTIME  Время максимальной задержки  - в смысле даты или сама величина интервала?
MAXPINGDURATION  Максимальная задержка данных  - за сессию? В чём измеряется?
Цитата
QLUA.chm::/ch4_1_3.htm
Функцию sleep не рекомендуется использовать в функциях обратного вызова.
  1. Что будет, если задать "0"?
  2. Какое число задавать? Целое или дробное тоже можно?
Цитата
QLUA.chm::/ch4_1_7.htm
Функция для вывода отладочной информации.
Куда именно выводится эта отладочная информация?
Цитата
QLUA.chm::/ch4_2.htm
(в рамках умного заказа или вручную через диалог Система/Заказ данных)
Что ещё за "умный" заказ? Где на него ссылка?
Цитата
QLUA.chm::/ch4_2_2.htm
Функция вызывается терминалом QUIK при получении обезличенной сделки.
Как насчёт внесистемных сделок? Входят ли они в поток и срабатывает ли на них этот коллбек?
Цитата
QLUA.chm::/ch4_2_21.htm
Под сменой сессии подразумевается изменение идентификатора сессии при подключении к серверу QUIK.
Где ссылка на этот идентификатор? Какой у него формальный заголовок?
Цитата
QLUA.chm::/ch4_2_20.htm
при этом параметр вызова flag принимает значение «false».
QLUA.chm::/ch4_2_20.htm
при этом параметр вызова flag принимает значение «false».
QLUA.ORG
 
Отличный русскоязычный сайт и форум по QLUA - его украинские владельцы окончательно похоронили. Вычистили все кеши в поисковых системах. Контент более недоступен, а сам домен - выставлен на продажу.
http://ww1.qlua.org/

аукцион о продаже:
https://sedo.com/search/details/?partnerid=14460&language=ru&et_cid=15&et_lid=16727&domain=qlua.org&...

Желающие - налетайте. Для меня - дорогова-то... :sad:
Проблемы с форумом
 
Начиная с сегодняшнего числа - начались проблемы с авторизацией на форуме и (особенно часто) - с просмотром некоторых страниц на форуме.
  1. Файл "hosts" - в порядке.
  2. DNS-сервера в интернет соединении - настроены на GOOGLE-овские.
  3. В файерволле - нет никаких запретов.
  4. кеш браузера - чистил. Изредка, помогает - но, не надолго.
  5. Доступ на ВСЕ другие интернет-ресурсы по протоколам FTP/HTTP/UDP - нормально.

AJAX
 
Планируется ли поддержка обновления комментов на основе AJAX?
то есть, чтоб не надо было нажимать кнопку в браузере "Обновить", чтоб увидеть новые комменты и т. п.
встраивание "этого" форумного "чата" в сам QUIK
 
Есть возможность встроить в сам QUIK этот (forum.quik.ru) официальный форум в формате чата, чтоб не держать открытым браузер и в свободное время параллельно торгам его просматривать и, возможно комментировать.

Вопрос к разработчикам,

Это можете сделать для пользователей Вы сами (как это делают Ваши конкуренты)
Это могут сделать другие пользователи. В таком случае, хотелось бы тогда просто получить от Вас, как от владельцев материалов форума - официального согласия.

<ответ - обязателен>
Вопросы по версии QUIK 7.0.1.5
 
Признаться, такие "обновления" начинают уже порядком бесить.

Итак, поехали:
после данного обновления - отвалилась напрочь QLUA. Да-да, именно эта ваша.
"Опытным" путём установлено:
Скрытый текст

Скрытый текст
Полагаю, что надо сделать, чтоб этого позорного бага не было - разработчики уже догадались...
Вопросы по версии QUIK 7.0.0.289
 
После "обновления" с версии 6.3.х.х. перестали сохраняться (как-либо) местоположения свёрнутых MDI-окон на "главной" форме вкладки:

Скрытый текст
если принудительно перетащить свёрнутое окно - "туда куда надо" и потом сохранить настройки окон в файл - местоположение свёрнутых окон - не сохраняется.
если после того как перемести какое-нибудь свёрнутое окно, попытаться открыть другое свёрнутое - старое свёрнутое - вновь меняет своё местоположение на привязку к нижнему горизонтальному ряду.
Вопросы по QTABLE
 
Простенький минимально достаточный для создания окна скрипт:

Код
is_run = true

function OnInit()

   t_id = AllocTable()
   CreateWindow(t_id)
   SetWindowCaption(t_id, "thats my table")
  
end

function main()
  
  while is_run do
    sleep(100)
  end
    
end

function OnStop()
DestroyTable(t_id)
is_run = false
return 1000
end
 
После его работы - создаётся большущее окно без названия и только потом - окно в один столбец но, очень длинное по вертикали. При этом, если передёрнуть скрипт несколько раз - положение окна будет всё время меняться в сторону приращения координат левого верхнего угла по X и по Y.
Про функцию SetWindowPos - знаю. И о ней мне говорить не надо.
Вопрос:
  1. получается, что на самом деле, при создании окна - собирается какой-то мусор от предыдущих экземпляров - хотя, при остановке скрипта - его LUA VM должна быть полностью разрушена, равно как и переменные ею занимаемые/устанавливаемые.
  2. Почему при создании окна таблицы вылазиет ещё одно большое окно? Внешне это выглядит, как неприятное единовременное мерцание. подозреваю, что это одно и тоже окно но, заданное с большими дефолтными размерами и только потом, они почему-то опять меняются непонятным образом.
  3. Значит ли это, что внутри функции CreateWindow(t_id) - снова меняются размеры окна?
QLua-Indicators SandBox Internals
 
Как уже много раз было сказано и подтверждено разработчиками - виртуальные машины, используемые для QLua-скриптов и QLua-индикаторов - разные. В том числе, у них разный состав глобальных переменных, функций и т. п.

Ниже, с помощью простенького скрипта запущенного в режиме фейк-индикатора мне удалось получить более полный (по сравнению со штатной документацией) список всего того, что поддерживается в окружении QLua-Indicators VM:
Скрытый текст
Среди этого списка - есть некоторые вещи, которые я хотел бы прояснить у разработчиков:
  1. Что такое function getQuoteLevel2Ex . У нас, как бы ведь уже есть не "Ex"
  2. Что такое function newproxy
Вопрос по метатаблицам.
 
Есть:

Код
--...

function AddOnParamListener(cls,sec,fn)

return table.insert(OnParamEventListeners,{classcode = cls, seccode = sec, notifier = fn})
end


  sim5ticker = Ticker.new("SPBFUT", "SiM5")
AddOnParamListener("SPBFUT","SiM5",sim5ticker:Update())



function OnParam(a, b)

   if OnParamEventListeners[1].classcode == a and OnParamEventListeners[1].seccode == b then 
      OnParamEventListeners[1].notifier()
   end
   
end
 

--...
Вопрос[ы]:
  1. Как правильно сохранить метод экземпляра класса в совершенно постороннюю таблицу, чтоб потом его вызвать из неё.
  2. Возможно ли и правильно ли хранить ссылку (или даже список ссылок) в конструкторе (new) на экземпляры класса и, если "Да" - то как?
Примечание: код черновой - пишу на ходу по ходу мысли.
Примеры классов на основе метатаблиц и closure на QLUA
 
Перерыл и старый и новый форум в поисках толковых примеров с использованием метатаблиц и closure но, ничего не нашёл, кроме вариаций стандартных примеров на основе QTable из "хелпов" квика.
Таким образом, в этой теме хотелось бы исправить столь досадное недоразумение.
Обращение ко всем кому не жалко и кто не считает, что "палит грааль" - поделиться информацией в теме.


Начну со своего маленького перевода одной интересной статьи по теме. -> http://quik2dde.ru/viewtopic.php?id=135
Счётчик числа сделок в секунду по одному тикеру
 
Решил выделить из другой темы: https://forum.quik.ru/forum10/topic536/

Сам код:
Скрытый текст
В общем, бывают моменты - когда он в течении продолжительного времени вполне стабильно и правильно считает, но потом - "всё портится". Такое ощущение, что это как-то связано с кешированием или докачкой данных.
если бы код "был неправильным" - он бы даже частично правильно не считал.

У кого есть какие идеи?
Вопросы по OnAllTrade
 
тестовый скрипт:
Код
local is_run = true
local date_time= ""

function OnAllTrade(alltrade)
date_time = tostring(alltrade.datetime.hour) .. ":" .. tostring(alltrade.datetime.min) .. ":" .. tostring(alltrade.datetime.sec)
message(date_time)
end

function main()
while is_run 
do
sleep(100)
end

end

function OnStop()
is_run = false
return 1000
end
Действия:
Запускаю простенький тестовый скрипт и... вижу, что время перепрыгивает назад и потом возвращается. Но, всё бы ничего - да только отключение галочки "Получать пропущенные данные" - не спасает.
LuaVM closed with error
 

Действия:

1. Запустил широкоизвестный (в определённых кругах...) скрипт.
2. Добавил в нём 3 фьючерса: GZM5, SiM5, SRM5
3. Закрыл скрипт через меню квика кнопкой "Остановить". Окно скрипта удалилось, далее QUIK завис секунд на 10. После чего в "ошибках выполнения скрипта" собственно то, что выползло. НИкаких минидампов, разумеется и логов  - нет.

Инфо:

Сам скрипт - взят отсюда: http://mycreditcard.ru/programs/intraday-lua.html (последняя версия)
До этого, такой проблемы не возникало.

Разработчикам квика:

если это сообщение штатное - вам следует задуматься над тем, что одного "сухого" LuaVM closed with error - чтоб однозначно определить причину бага.
Пожелания по развитию файлов СПРАВКИ к системе QUIK и QLUA
 
1. Ввиду того, что "нормальный" "хелп" разработчики ленятся делать, мотивируя свои бездействия тем, что "... это займёт свыше 200 страниц" - прошу: дополнить каждый пункт из справки "кликабельной" ссылкой на соответствующую релевантную статью с этого форума - дабы, если у пользователя вдруг возникнет в очередной раз непонимание (очередных размытых формулировок из хелпа) - он всегда мог быстро уточнить по ссответствующей ссылке.
2. Если разработчики опять упадут "в лирику", что мол де, people итак схавает и что вообще, "зачем это нужно", хочу спросить: могу ли, в таком случае я декомпилировать файл справки (*.chm) с тем, чтобы самому соответствующим образом дополнить контент и функционал хелпов, а также потом свободно (и не очень... ) его распространять. т.е. даёте ли Вы, разработчики на это своё официальное согласие?
3. Могу ли я использовать части контента с официального хелпа в качестве распространяемого ресурса в своих платных скриптах?
Пожелания по Таблице Текущих Параметров (ТТП)
 

Без обсуждения и всяких "может/возможно будет реализовано..."
Юридическая сторона вопроса. (ГК РФ Глава 70)
 
Скрытый текст
Прошу "Арку" дать развёрнутый комментарий по каждому пункту этой статьи на предмет легальности исследования системы QUIK. А также, значит ли это, что знания полученные из анализа квика можно на вполне законных основаниях (что доказано выше) использовать в своих проектах при условии, что они не будут сильно внешне похожи на квик/либо его модули/плагины?
Одновременная работа с несколькими брокерами из одного квика
 
Прошу реализовать возможность одновременной работы с различными брокерами и, соответственно, зарегистрированными у них счетами из одного квика не перелогиниваясь.
Я - понимаю, что это потребует значительной переделки самого квика НО! я думаю, многие бы по достоинству оценили бы эту возможность. К тому же, в иностранных терминалах - такая возможность повсеместно используется.

если непонятно о чём это я:
пользователь при входе в квик вводит учётные данные по каждому брокеру, далее, - при выставлении какой-либо заявки - он выбирает соответствующий номер счёта, привязанный к определённому брокеру.

и не надо мне говорить, что это к сожалению не возможно. всё это успешно программируется.
---------------------------------------------

таким образом, прошу:
  • либо зарегистрировать данное пожелание
  • либо ответить аргументированным отказом на него
никакие пространственные рассуждения/обсуждения на манер: "а зачем это надо" и т. п. - меня не интересуют.
6.17.0.58 bugs collection, разработчикам на заметку. (все остальные - прошу проходить мимо и не засорять топик)
 
В этой теме буду выкладывать переходящие из версии к версии баги QUIK и QLUA. Для себя уже давно составил коллекцию уязвимостей скриптов на QLUA и скриптов QLUA-индикаторов. Для справки: QLUA-индикаторов в QUIK используется отдельная усечённая sandbox-реализация LUA VM.

Итак, вот "код", а точнее, BUG в формате OnePageLesson:

Код
--testBUG#0001

Settings=
{
Name = "test Labels",
ChartID1 = "rima",
line =
      {
         {
         Name = "test Labels",
         Color = RGB(0,0,255),
         Type = TYPE_LINE,
         Width = 1
         }
      }
}
labelparams1 = {
            TEXT = "",
            IMAGE_PATH = getScriptPath() .. "заведомо отсутствующий файл и путь", 
            ALIGNMENT = "RIGHT",
            YVALUE = 0,
            DATE = "19000101",
            TIME = "100000",
            R = 0,
            G = 0,
            B = 255,
            TRANSPARENCY = 0,
            TRANSPARENT_BACKGROUND = 0,
            FONT_FACE_NAME = "Arial",
            FONT_HEIGHT = 18,
            HINT = ""
            }

function Init()
lab1 = AddLabel(Settings.ChartID1, labelparams1)
return 1
end            
function OnCalculate(index)
return nil
end 

function OnDestroy()
DelAllLabels(Settings.ChartID1)
end
 
Действия:

  1. при успешно загруженном квике создаю график RIM5 с идентификатором "rima"
  2. накладываю на него этот "индикатор". Индикатор успешно наложился, что подтверждается добавлением подписи на pane чарта. (то, что сам индикатор "пустой" - в данном случае, не суть)
  3. сохраняем настройки окон (и, соответственно индикаторов) в файл info.wnd (стандартными средствами через соответствующий пункт меню)
  4. отключаемся от сервера и выключаем квик
  5. пытаемся вновь запустить квик  и, ... ждём. долго так ждём, потом опять ждём. а тем временем, на экране:


старина QUIK нам каГбе намекает, что ждать можно чуть меньше чем (ну вы поняли...  :) )) )

-----------------------------------

Пояснения: сам файл скрипта-индикатора находится в стандартном месте, в папке LuaIndicators.
-----------------------------------

Возможные причины:
Индикаторная "песочница" LUA VM слабо устойчива к параметрам и их корректности в функции AddLabel. И похоже даже использование pcall - не спасает.
Кроме того, перед запуском QUIK, а точнее QLUA парсит всю папку и подпапки LuaIndicators, пытаясь запустить каждый, находящийся в ней скрипт (а это уже повод для использования в вирусописательстве).
-----------------------------------

Методы устранения:
все, абсолютно все параметры передаваемые из пользовательских скриптов обязаны проверяться на валидность прежде чем целиком и полностью заглатывать таблицу (в данном случае). То есть, внутри AddLabel (qlua-side) сперва должна быть проверка на валидность параметров. Уверен, что она у вас итак есть. так что спишем на недочёт.
Кроме того, для скриптов просто обязан быть watchdog-таймер (даже в интернет-браузерах это есть и пользователю всегда предлагается отключить тормозной скрипт)
-----------------------------------

Когда в первый раз была озвучена проблема (и технично похе..рена проигнорирована):
http://forum.quik.ru/messages/forum10/message586/topic113/#message586

Советую обратить внимание на фразу, что даже если у нас индикатор не наложен ни на один график НО! присутствует в папке индикаторов - баг (зависание) обеспечен.
Пропущен topic_id
 
когда хочешь просмотреть свои сообщения - не работают линки (отправляет на корневой форум).
собственно, сама ошибка:

сам переход осуществляется через: профиль->сообщения->выбираем сообщение для перехода

Софья, займись уже наконец движком форума, либо воспользуйся бесплатным но, не менее функциональным PunBB или любым другим.
info.exe
 
Вопрос[ы]:
1. Для чего в главном файле квика info.exe секция экспорта?
2. значит ли это, что это сделано для того, что часть кода/плагинов писалась независимыми разработчиками и, соответственно, компания просто не стала раскрывать все исходники, а ограничилась лишь интерфейсом взаимодействия лишь с самыми необходимыми функциями?
3. значит ли это, что так сказать, IPluginContext - не совершенен?
вопрос по коллбекам, к разработчикам (ONLY)
 
Такая ситуация:
1. имеем некую внешнюю C-библиотеку подключенную через "require". В ней создаётся объект и в "вечном" цикле идёт работа с его свойствами/методами.
2. в основном скрипте есть коллбеки в которых идёт своя работа
3. также, в основном скрипте есть код, который не находится в коллбеках и в "майне".
---------------------
а теперь, вопросы:
а)правильно ли я понимаю порядок выполнения этой программы:
Сначала выполняется п.3, потом, п.1. если есть/приходит колбек то, выполнение п.1 приостанавливается на время обработки коллбека и далее возобновляется?
б) если сделать "вечный" цикл в одном из коллбеков - то, работа "другого вечного цикла в библиотеке" приостановится на неопределённое время?

---------------
вопросы на самом деле - не глупые, но просто требуют окончательного уточнения
Plugin API
 
В целях уменьшения задавания "глупых" вопросов на форуме, а также для всесторонней поддержки независимых разработчиков и самого квика, предлагаю раскрыть на коммерческой основе интерфейс системы плагинов в квик (QUIK Plugin API), как это сделано в wealth-lab и других раскрученных торговых системах, ставших де-факто стандартом. Например, цена в 50 000 руб. на мой взгляд, устроила бы обе стороны.
Это позволило бы самим пользователям сделать квик более гибким, не быть привязанным к qpile или qlua, несмотря на в принципе, достаточно сильный её (qlua) потенциал, избавило бы от использования всевозможных связок: QUIK-QLUA-"что-то там ещё" QUIK-"что-то там ещё", отчасти, упростило бы решение проблем с многопоточностью и синхронизацией.

Если такая цена для Вас приемлема и Вы, как разработчики, считаете её обоснованной за возможную незначительную упущенную выгоду от потери монопольного создания и продажи плагинов к квику, прошу зарегистрировать данное пожелание.
Библиотека QCtrls.dll
 
В связи с тем, что секция экспорта в библиотеке пользовательских контролов имеет открытый интерфейс, могу ли я, сделав к ней QLUA-бинд использовать её в своих программах на qlua?
Индикаторы в QUIK на LUA
 
Вопрос к разработчикам (это значит, что мнение других - меня не интересует): какой смысл был создавать отдельный класс в квике под это дело и свою "песочницу" (sandbox)? Почему когда даже если индикатор не наложен ни на один график НО!!! присутствует в папке "Luaindicators" - он может угробить всю систему, если в нём есть неявные ошибки? Почему бы просто не объединить класс индикаторов и его виртуальную машину с классом скриптов? Вы бы тем самым значительно расширили бы их функциональность и не плодили бы не нужных промежуточных функций, которые работают в одном классе и не работают в другом. Или, вы так сильно боитесь/переживаете за стабильность своего плагина qchart.dll, который отвечает за рисование графиков в квике? Ответ, мол то, что это скажется на общей стабильности самого квика - не принимается - т.к. у вас используются и более опасные конструкции и в большем количестве.
Пожелания по квику и LUA
 
1. qchart.dll. Прошу раскрыть API этого контрола.

Это облегчит участь многим и облегчит задачу поддержки визуализации в скриптах.

2. Также, прошу сделать доступ к нативным контролам квика из LUA. Это решит сразу 2 проблемы: использование нестабильных сторонних библиотек для визуализации, наманер, vclua и отчасти, проблему с многопоточностью, т.к. основная писанина её поддержки ляжет на Ваши плечи, а не на наши.

Всё это можно достичь созданием классов-обёрток в квике, а из LUA дёргать уже готовые объекты и методы. То есть LUA должен быть абстрагирован от "классо-писательства. Это реально облегчит многим жизнь. Думаю многим интересна будет такая схема абстракции:

Код
myButton = CreateControlByName("QButton");
myButton.Caption = "Кнопка";

MyButton.OnClick()
do smth work
end

CreateTimer(10, "timerEvent");

OntimerEvent
do smth work;
end 

3. Также нужна поддержка хуков событий (Events):
Я не прошу создания и регистрацию нативных событий, т.к. это далеко нетривиальная задача для квика и LUA. Поэтому прошу лишь на развитой поддержки событий в квике. Те, что есть - этого мало. Смысл в том, чтоб в LUA пользоваться уже готовыми зарегистрированными квиком и в квике колбеками, а не писать это всё дело через псевдомногопоточность на LUA.
Код
HookEvent("OnConnectPre", OnConnectPre); //название события взято для примера и не отражает конкретно именно это событие

OnConnectPre

do smth work

return 0; //если мы хотим, чтобы этот эвент обрабатывался другими скриптами;
return 1;//если мы хотим, чтоб после обработки этого эвента другие скрипты его не обрабатывали
return 2;//если мы хотим, чтоб скрипт остановил свою работу
end;


4. Должна быть модель общей разделяемой памяти для всех скриптов для обмена общими данными. Это надо для систем где одновременно работают разные роботы на разных инструментах. То есть для корректного обмена данными между скриптами-роботами

5. Нужен системно-реализованный класс алертов (алармов или триггеров) и чтоб, его можно было отслеживать вызывать из LUA.
К примеру, есть бумага, есть условие по ней, оформленное в виде функции. При срабатывании условия квик вызывает коллбек.
На самом деле, это всё относится к п.3. Но, если это невозможно для Вас сделать - чтож, придётся писать далеко нетривиальные "велосипеды" на LUA.

6. Нужен класс TaskManager - для создания и управления параллельными задачами.
Можете не реализовывать но, выполните хотя бы остальные пункты.
7. Неплохо было бы иметь такой коллбек, как OnFrame. Скажем, 20-ти миллисекундный интервал устроил бы многих. Что можно делать и для чего он нужен - зависит от того. какие функции из этого списка Вы собираетесь исполнить. Вариантов много, равно, как и реализаций.
8. Неплохо было бы иметь профайлер скриптов и QLUA-дебаггер (исходники Decoda есть в общем доступе, что мешает заточить их, под QUIK как многие разработчики делают для своих программ)
----------------------------------------------------------------------------------------------------------------


Одним словом, нужно много нативных классов, всяких и разных, чтоб не изобретать их в LUA и не думать об их синхронизации. То есть, в идеале, программирование на LUA - должно и ОБЯЗАНО превратиться в callbacks-программирование. В противном случае, у него просто нет шансов. В индустрии 3d-игр - есть 2 основных направления или стиля работы 3d-движков с поддержкой скриптов на LUA:
  • движки, которые имеют развитую классовую структуру и тем самым, не заставляют скриптописателей писать многочисленные велосипеды. А дают им лишь возможность создавать, удалять, изменять свойства шаблонных классов, которых тьма. В результате,  с созданием скриптов может справится даже школьник, а игра - засчёт массовости имеет весьма приличный оборот.
  • и движки, которые имеют минимум классов, оставляя всё на откуп скриптописателей. Бесспорно, это даёт большую свободу в реализации возможностей и даже некоторые известные игры это используют НО!!! это требует неимоверной квалификации скриптописателя. И как показывает практика или жизнь - такие игры долго не живут. Так вот, QLUA - сейчас на этом уровне.
Страницы: 1
Наверх