Roffild (Автор тем)

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

Страницы: 1
Библиотека для QLua от Roffild'a
 
https://github.com/Roffild/qlua

QLua спроектирован кошмарно!

После освоении основ QLua можете попробовать мою библиотеку, в которой я пытаюсь устранить часть проблем QLua.
QLua подстановка с описанием для редакторов Lua
 
https://github.com/Roffild/qlua-annotations

Я проверил в редакторах Lua:

Visual Studio Code с Lua от sumneko (рекомендую).

PyCharm с EmmyLua (плохо отображаются многострочные описания).

Код
---@type qlmoney_limits
local tbl = getItem("money_limits", 2)



Описание поля при наводке мыши:


Ну, и... звездани на ГитХабе...
Win-1251 на GitHub
 
https://github.com/Roffild/charset-github

В имени файла кодировка работает.
QUIK QLua подстановка с описанием для редакторов Lua
 
https://github.com/Roffild/qlua-annotations

Я проверил в редакторах Lua: Visual Studio Code и PyCharm

Этот форум картинки не переваривает..

Ну, и... звездани на ГитХабе...
Баги QUIK 8.13
 
Баги QUIK 8.13:
* Нет хоткея для показа Lua-скриптов.
* У окна стоп-заявок нет якоря, хотя у обычных заявок он есть.
* Сделки тоже без якоря.
* Если в Настройки=>"Получение данных" снять галку "Запрашивать данные раз в … сек.", то ParamRequest() вернет true, но данные не придут.
* Забавно, но "Смена операции клавишей Пробел" не позволяет пробелом ставить галку, например, "Рыночная".
* Нужна панель с индикаторами (с значками) запущенных скриптов.
* Ошибка о нехватки средств на срочном рынке вылезает из-за расчета ГО мин/макс цены для рыночной заявки. QUIK считает "рыночное" ГО для +500 пунктов и вылезает за лимит без отправки заявки на сервер, когда по стакану достаточно +20 пунктов с запасом на VTB и на ГО депо хватает.
Код
Ошибка создания заявки. [GW][332] "Нехватка средств по лимитам клиента.".

* "Ошибку создания заявки" sendTransaction() не возвращает, как ошибку. Да, эту ошибку нельзя заблокировать! В заявках тоже пусто! Только OnTransReply() её ловит на позднем этапе.
   Вообще все транзакции с статусом==4 можно через sendTransaction() вернуть, а не беспокоить пользователя.
   Ну превысил в скрипте QTY... ну, верните ошибку скрипту! Юзер тут причем?

* Нужна sendTransactionSync() с гарантированным возвратом последнего trans_reply:
   - ошибка (БЕЗ ПОКАЗА ОШИБКИ ЮЗЕРУ)
   - заявка в очереди (PUT_IN_QUEUE)
   - заявка исполнена или отклонена (FILL_OR_KILL и KILL_BALANCE)

* isConnected() == nil возможно! Похоже это происходит когда QUIK при запуске сразу стартует Lua-скрипт, но функция isConnected() еще не прошла иницилизацию.
Я не вижу другого объяснения, почему этот цикл иногда при старте не срабатывает:
Код
function main()
    ISRUN = true
    while ISRUN and isConnected() == 0 do
        sleep(1000)
    end
    -- код
end


* Нужна галка на авто-перезапуск скрипта, потому при неожиданном разрыве некоторые функции могут вернуть nil и убить скрипт. В Lua нет try-catch. Например:
Код
local minstep = getSecurityInfo("SPBFUT", sec_code).min_price_step


* В 2021г без Unicode?! Сам Unicode по BOM определяется. И давно уже научились отличать Win-1251 от UTF-8.
Сам файл можно в любой кодировки читать, а компилировать в Win-1251, если это так важно.

* Возвращаемое значение из OnCalculate() должно быть table, а сейчас такой бред:
Код
function OnCalculate(index)
    -- код
    return r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23]
end

А вот такой код обрабатывает оба варианта возврата:
Код
function OnCalculate(index)
    local result
    result = {7, 9}
    return result[1], result[2], result
end
function main()
    str = "R: "
    for k, v in pairs({OnCalculate()}) do
        if type(v) == "table" then
            for k0, v0 in pairs(v) do
                str = str.." tbl "..tostring(k0).."="..tostring(v0)
            end
        else
            str = str.." "..tostring(k).."="..tostring(v)
        end
    end
    message(str)
end


И хватит распространять миф об уникальности TRANS_ID. Он почему-то должен быть объявлен, хотя Таблица Заявок утверждает, что nil тоже норм.
А уникальным он точно может не быть - просто дополнительное число для фильтрации заявок. Описание в MQL5 аналогичного параметра:
Код
Идентификатор эксперта. Позволяет организовать аналитическую обработку торговых ордеров. Каждый эксперт может выставлять свой собственный идентификатор при отправке торгового запроса
Страницы: 1
Наверх