Баги 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 аналогичного параметра:
Код |
---|
Идентификатор эксперта. Позволяет организовать аналитическую обработку торговых ордеров. Каждый эксперт может выставлять свой собственный идентификатор при отправке торгового запроса |