Kolossi написал: Если я пишу скрипты на Lua и пользуюсь вашей документацией для этого каким чудом я должен догадаться, что параметры к getParamEx мне нужно искать в документации к QPILE которым я вообще не пользуюсь?
Можно просто спросить. Все параметры ТТТ мы описать не можем, т.к. QUIK работает далеко не с одной биржей, а у каждой биржи свой набор параметров. Достаточно вывести по DDE с галкой "Формальные заголовки" любой параметр из ТТТ, чтобы понять какое значение указать в getParamEx
Nikolay написал: У нас есть pdf документ по языку, справка chm по языку, справка chm по терминалу. Параметры функции (причем здесь терминал) описаны в справке к терминалу. Замечу при этом, что раздел "Значения параметров функций" расположен в части "Алгоритмический язык QPILE". Уверены что это дублирование информации? Формально, описания параметров для функции языка qlua getParam(Ex) нет.
1) В терминале QUIK есть так называемые формальные заголовки (их видно при выводе по DDE) 2) В терминале QUIK есть язык QPILE, в котором есть функция GET_PARAM_EX, которая принимает значения из п.1 3) В терминале QUIK есть язык QLUA, в котором есть функция getParamEx, которая тоже принимает значения из п.1
все это одно и то же. Уверены что это НЕ дублирование информации?
Kolossi написал: Что то я не нашел параметра TRADINGPHASE у GetParamEx. Откуда это вообще?Приведенный мной протокол был сделан по параметру TRADINGSTATUS.
Выше написано
Цитата
Sergey Gorokhov написал: значит брокер его у себя не настроил.
TGB написал: Есть предложение от 12.08.2020 18:36:39
Цитата
TGB написал: Я понимаю, что отказаться от перевода QUIK на Lua 5.3… для ARQU практически невозможно, но, если ориентироваться на результат, то имело бы смысл «заморозить» перевод QUIK на Lua 5.3… и перенести накопленные нормально работающие фичи версий >=8.5… (в том числе длину номеров заявок = 19 ) в последнюю версию 8.4…… В противном случае, скорее всего, нас ждет длительное шоу новых версий QUIK.
Leonid написал: Насколько я понял, в качестве ххх можно взять совершенно любую цифру.Как правильно тогда?
Вы говорите: "когда стакан возвращает nil код не работает" Вам говорят "добавьте проверку когда стакан возвращает nil то ничего не делать" ИЛИ (на ваш вкус) "добавьте проверку когда стакан возвращает НЕ nil то делать то что надо"
Leonid, очевидно Вы не поняли рекомендации. Вы говорите
Цитата
Leonid написал: функции возвращает Nil, скрипт отключается
Вам было сказано
Цитата
Sergey Gorokhov написал: добавить проверку на nil вида:если nil то ничего не делать
Вы же просто указали непонятное условие if xxx>0 then где xxx всегда при любых вариантах равно 100 и никогюда не изменится рекомендуем еще раз более внимательно прочитать рекомендацию
Не убедительно. Просто если Вы не знаете как сделать по другому, это не значит что нужно делать вслепую как у нас. тем более несколько глубин вложений одно в другом Вот мы например сделали вложения в индикаторах, чтобы можно было делать несколько функций расчета индикатора.
local FCMO1 = CMO() local FCMO2 = CMO() local FCMO3 = CMO() и т.п.
У Вас же абсолютно бессмысленное вложение во вложении во вложении. Почему теряются переменные, не понятно, возможно какая-то особенность lua, но совершенно точно сам индикатор тут не причем ибо даже на A+B подобное может повториться.
Kaavan, Не видим причин делать вложенные функции внутри вложенных функций внутри вложенной функции. Зачем? Каков смысл? Если хотите разобраться, выкладываейте полный код а не часть (или это и есть полный код? тогда проблема в этом т.к. нет нужных функций)
Здравствуйте, Зависит от того что должен делать скрипт. Если Вы хотите запустить QLUA скрипт по аналогии как в терминале QUIK, то такой возможности нет. Если это какой-то посторонний скрипт (без функции main и колбеков), то в принципе можно функцией dofile Тут речь о том что скрипт выполненный через dofile будет выполняться в той же области видимости что и основной скрипт его запустивший. Т.е. если например в дополнительном скрипте есть функция main, то она может помешать работе функции main из основного скрипта и на оборот.
Действительно в ПО QLUA есть ошибка так же иногда приводящая к завистанию терминала при вызове Lua функции DestroyTable. Мы исправим её в очередном обновлении ПО. Приносим извинения за доставленные неудобства.
Leonid, Это уже от Вас зависит, вернее от Вашей идеи реализации алгоритма. Условие можно добавить перед циклом так чтобы сам цикл запускался только при исполнении условия и если условие не выполнится то все quantity заявок на биржу не будут отправлены Если же добавите во внутрь цикла, можно придумать такое условие при котором только несколько заявок из quantity на биржу не будут отправлены
Leonid, Цикл тут не причем, еще раз посмотрете Ваш код на предмет ошибок Подсказка, регистр символов в lua имеет значение и id это не тоже самое что ID
Kaavan написал: Т.е. в моем случае нужно будет циклом от 1 до I просчитать CMO, поместить результаты в массив и работать далее с ним как с источником данных?
да
Цитата
Kaavan написал: Получается таблица sum накапливает данные с каждым вызовом?
Kaavan написал: Я предположил, что для этого мне нужно создать массив, в который вызвать функцию СМО для значений индекса от I до I-20
В readme_LuaIndicators.txt четко сказано:
Цитата
Все функции требуют предварительного расчета начиная с индекса 1. Т.е. даже если нужен только последний индекс, все равно требуется провести цикл расчета начиная с самого первого индекса.
настоятельно рекомендуем читать инструкции прежде чем что-то делать
Старатель, К сожалению у нас проблема не повторяется. Проверяли на версии 8.8.0 Просьба воспроизвести проблему с зависанием, после чего снять дамп процесса info.exe (через диспетчер задач Windows) и прислать его нам на quiksupport@arqatech.com