Виталий (Автор тем)

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

Страницы: 1
Очередное прояснение тонкостей CreateDataSource и SetUpdateCallback
 
Создаю источник данных с интервалом INTERVAL_M1. Назначаю ему коллбэк и SetUpdateCallback возвращает true. В открытой таблице сделок вижу, что нужные сделки идут, но коллбэк не вызывается. Он также не вызывается при формировании новой минутной свечи, т.е. он вообще не вызывается. Правильно ли понял, что нужно явно CreateDataSource c тиковым интервалом вызвать, чтобы обновления получать или еще какая тонкость имеется?
Определение экземпляра терминала в скрипте в офлаине
 
Есть два терминала от разных брокеров. Они запускают один и тот же скрипт. Когда терминалы онлаин, скрипт определяет брокера по функции getInfoParam и полю userid. В офлаине она не работает.  Можно ли как-то определять брокера, когда терминал в офлаине?
Что нужно сделать перед запуском функции CreateDataSource?
 
Создал gui-таблицу обезличенных сделок. Добавил в нее нужный инструмент. Вижу данные пошли в gui-таблице. Но функция CreateDataSource возвращает qlua таблицу нулевого размера. Если же помимо таблицы обезличенных сделок открыть еще и график инструмента, то возвращается qlua таблица с правильным размером. Вопрос. Как все-таки правильно запускать функцию CreateDataSource? Неужели нужно для каждого инструмента график рисовать?
Еще один вопрос про потоки
 
Известно, что функция main и колбэки (напр. OnTransReply) выполняются в разных потоках. Далее к проекту подключена с++ либа и функции из нее вызываются как и из функции main так и из колбэков. Далее, я понимаю механику следующим образом:
- Функция main и колбэки отправляют в с++ либу разные lua_state, и поэтому в данном случае обращение к ним из либы в принципе не может пересечься  поэтому потокобезопасно.
- А вот разные колбэки сами по себе отправляют в либу одно и тоже lua_state и поэтому работа с ними в либе уже требует синхронизации.

Правильно ли я понял механизм?
Поиск инструмента по названию
 
Необходимо каждый день находить код обновляемого инструмента. Из данных имеется только лишь его префикс от короткого имени. Обычно делается следующим кодом:
Код
function findSecurity()
    local mdt = 0
    local now = os.time()
    local foundcode = ""
    for i = 0,getNumberOf("SECURITIES") - 1 do
        local row = getItem("SECURITIES", i)
        if(row.class_code == "PSAU") and (autolib.CheckAssetName(row.short_name) == true) then
            --message(row.short_name)
            local info = getSecurityInfo(row.class_code, row.code)
            if info ~= nil then
                local expdt = strDateToEpoch(info.mat_date)
                --message(tostring(info) .. " " .. tostring(expdt) .. " " .. tostring(now))
                if expdt > mdt and expdt > now then 
                    mdt = info.mat_date
                    foundcode = row.code
                    --message(tostring(info.mat_date) )
                end
            end
        end
    end
    if foundcode ~= "" then
        autobuyerlib.LogU8(string.format("Найден инструмент %s", foundcode))
    end
end   
Проблема в том, что часто (процентов 20% случаев) запуск кода дает ошибку ACCESS VIOLATION. Есть ли иной способ решить задачу?
Несколько вызовов CreateDataSource
 
Lua скрипт выступает в роли сервера, в котором несколько клиентов могут вызвать CreateDataSource с одинаковыми параметрами. Вопрос в том, будет ли каждый новый вызов заново требовать данные с сервера?
Уточнение принципа работы OnParam, RequestParams и GetParamEx2
 
Допустим, есть открытая таблица с множеством обновляемых параметров. И все они мне в колбэке скрипта OnParam не нужны, а нужен только один. Можно ли каким-то образом ограничить количество вызовов колбэка предварительной настройкой интересующих параметров? Если нет, то можно ли зарегистрировать пожелание на такой функционал.
Получение списка возможных полей возвращаемых GetParamEx
 
Есть один способ через DDE. Но хотелось бы без этого. Есть ли другие способы?
Параметр теоретической цены для getParamEx, Теоретическая цена опциона из таблицы текущих торгов
 
В таблице текущих торгов доступно поле теоретическая цена, как получить его из qlua через getPramEx?
Не найден модуль в файле .dll
 
При запуске модуля с подключением dll выдается ошибка
Код
error loading module 'connectorlib' from file 'C:\SBERBANK\QUIK\_mplattform\_connectorlib\build\release\connectorlib.dll':
    Не найден указанный модуль.

Cpath и path настроены как следует
Код
package.cpath = package.cpath .. ";C:\\SBERBANK\\QUIK\\_mplattform\\_connectorlib\\build\\release\\?.dll"
package.path = package.path .. ";C:\\SBERBANK\\QUIK\\_mplattform\\_connectorlib\\luascripts\\?.lua"
Dependency walker показывает доступность всех компонентов



Либа собрана под x32 как и сам quik. Версия квика - 7.19.3.1
Появилось это вероятно после сегодняшнего принудительного обновления винды.

До этого подключал аналогично boost к либе - все работало.
Страницы: 1
Наверх