QUIK 8.0 x64: что нужно знать перед обновлением на новую версию
Пользователь
Сообщений: Регистрация: 23.01.2015
16.07.2019 04:50:56
Цитата
Александр Волфовиц написал: Подскажите, пожалуйста, как перекомпилировать *.dll для работы с lua под новую версию QUIK, старая не работает по причине своей 32-битности, я правильно понимаю?
Почитайте обсуждение по ссылке
Не работает .dll в новой версии QUIK, просит увеличить файл подкачки
Пользователь
Сообщений: Регистрация: 23.01.2015
16.07.2019 04:49:31
Здравствуйте, luacdll не является нашей разработкой, в связи с чем затруднимся с ответом о причинах такого поведения.
Получать обновления стакана без его открытия в КВИКе
Все колбеки LUA работают в главном потоке терминала. Следовательно пока колбек не завершит работу, терминал будет висеть. Чтобы убедиться в этом, можете для эксперимента, добавить в любой колбек бесконечный цикл и терминал повиснет намертво. Вам нужно максимально минимизировать время обработки колбека OnQuote, как минимум убрать повторения одинаковых циклов и рассмотреть варианты минимизации записи в файл, например в цикле формировать переменную а записывать в файл уже после цикла.
Mikhail Ran, Нужно обновить терминал QUIK до версии 8.0 или выше
getBuySellInfoEx
Пользователь
Сообщений: Регистрация: 23.01.2015
09.07.2019 12:28:58
Здравствуйте, Посмотрите визуально какой тип клиента указан в терминале в таблице купить/продать. Указанные параметры будут работать только для клиентов с типом МД.
реализация идеи в коде - периодическое обновление цены инструмента для сравнения
Пользователь
Сообщений: Регистрация: 23.01.2015
08.07.2019 05:51:08
Цитата
Duke2 написал: local FixedPriceRTSBuy = FixedPriceRTSBuyNew
Уберите local из этой строки
Критерий исполнения заявки OnTrade
Пользователь
Сообщений: Регистрация: 23.01.2015
03.07.2019 15:52:16
Цитата
Let_it_go написал: Или они приходят строго очередями? Сначала три по одной бумаге, потом три по другой?
нет, порядок не гарантируется
onConnected() OnCleanUp()
Пользователь
Сообщений: Регистрация: 23.01.2015
03.07.2019 12:14:35
Здравствуйте, Описанная проблема у нас не воспроизводится
Просьба уточнить более подробно сценарий по которому мы могли бы повторить проблему.
Вопрос по написанию индикатора.
Пользователь
Сообщений: Регистрация: 23.01.2015
02.07.2019 17:23:25
В таком случае решить задачу не получится.
Критерий исполнения заявки OnTrade
Пользователь
Сообщений: Регистрация: 23.01.2015
02.07.2019 16:01:42
Цитата
Let_it_go написал: Мне мерещится, или колбек OnTrade срабатывает три раза на каждую сделку? Один за другим приходят три отчёта о совершении одной сделки.
так и должно быть. Этому вопросу уже много лет и он не однократно поднимался на форуме.
Цитата
Let_it_go написал: И ещё вопрос. Можно ли факт заключения сделки отслеживать через OnTransReply или он только для отправки ордеров?
Не всегда. OnTransReply содержит только ответы на транзакции. Если в ответе на транзакцию биржа указала исполнение (например если заявка рыночная) то Вы увидите примерно такой текст "заявка зарегистрирована _номер_ исполненное количество _столько-то_ не исполненное _столько-то_"
Получать обновления стакана без его открытия в КВИКе
Пользователь
Сообщений: Регистрация: 23.01.2015
02.07.2019 09:37:12
Здравствуйте, Если getQuoteLevel2 вызывать в колбеке OnQuote, то цикл гонять не потребуется
Custom кнопка в стандартном окне и работа с системными событиями
Пользователь
Сообщений: Регистрация: 23.01.2015
01.07.2019 14:03:40
Цитата
Илья написал: Позвольте тогда чуть чуть переформулировать вопрос. Как можно реализовать pre-trade контроль заявок выставляемых в терминале через стороннее приложение находящееся на удаленном сервере?
Можно реализовать только через:
Цитата
Илья написал: "создать кастом форму для новой заявки"
по другому никак
QUIK 8.0 x64: что нужно знать перед обновлением на новую версию
Пользователь
Сообщений: Регистрация: 23.01.2015
01.07.2019 14:02:37
Цитата
Олег написал: Может кто подскажет, экспорт в метасток кто-нибудь предоставляет, может модуль есть какой?
Попробуйте воспользоваться документацией: -Раздел 6. Совместная работа с другими приложениями --Экспорт данных в системы технического анализа с использованием внешних программ
Уточните какая именно информация нужна в таблице обезличенных сделок?
GET_CLASS_SECURITIES, Как работать с возвращаемым значением
Пользователь
Сообщений: Регистрация: 23.01.2015
01.07.2019 09:19:06
Цитата
Александр написал: Это коллекция? Ассоциативный массив?
Это просто строка, самая обычная.
Цитата
Александр написал: Как вычленить из строки отдельные коды инструментов средствами QPILE?
Через цикл FOR Пример:
Код
SecuritiesList = GET_CLASS_SECURITIES ("TQBR")
FOR Sec IN SecuritiesList
MESSAGE(Sec,0)
END FOR
Обращаем внимание что QPILE является устаревшим языком и оставлен только для поддержки обратной совместимости. В связи с чем, рекомендуем использовать язык QLUA.
Критерий исполнения заявки OnTrade
Пользователь
Сообщений: Регистрация: 23.01.2015
27.06.2019 19:55:52
Цитата
Let_it_go написал: Как с помощью колбека OnTrade понять, что заявка с известным номером исполнилась полностью или частично?
Именно такой информации в таблице сделок нет. Но там есть количество в сделках. Следовательно можно подсчитать сумму в сделках и сравнить ее с количеством в заявке. Например в заявке продажа 5 бумаг, пришли сделки с количеством 1 и 2, сумма равна 3м, что меньше 5, значит заявка исполнена частично.
Цитата
Let_it_go написал: Как то же самое узнать с помощью колбека OnOrder?
Тут проще, там есть параметр balance, который определяет не исполненный остаток. Еще есть параметр ext_order_status, в котором значение 2 соответствует частичному исполнению.
Локальность переменной
Пользователь
Сообщений: Регистрация: 23.01.2015
27.06.2019 15:33:24
Цитата
Let_it_go написал: является ли в этом примере row локальной?
да
Цитата
Let_it_go написал: Строка row=getItem("orders",i) не превращает ли её в глобальную? Ведь здесь идёт повторное объявление.
Нет не превращает, и там не объявление, а присвоение значения
Custom кнопка в стандартном окне и работа с системными событиями
Пользователь
Сообщений: Регистрация: 23.01.2015
26.06.2019 15:49:27
Цитата
Илья написал: Необходимо добавить кнопку в уже существующую в системе форму подачи заявки по нажатию на которую будет что-то происходить.
Такой возможности нет.
Цитата
Илья написал: (причем по возможности это должно происходить после нажатия на существующую кнопку для подачи заявки)
такой возможности нет.
getMoney
Пользователь
Сообщений: Регистрация: 23.01.2015
24.06.2019 16:14:26
Цитата
Валентин написал: Необходимо узнать текущий остаток средств в сроке расчетов Тх (там именно та сумма, на которую я могу сейчас закупаться). Соответственно ставим параметр limit_kind в значение 2 (0 - Т0, 1 - Т1, 2 - Т2)
А можно озвучить что именно вы зарегистрировали? В чем состоит пожелание клиента?
Просто ошиблись кнопкой, будем разбирать как проблему.
64-битная версия QUIK
Пользователь
Сообщений: Регистрация: 23.01.2015
18.06.2019 12:03:12
Цитата
новичок написал: и что мешает запустить бету для тестирования на демо-сервере?
К сожалению мы не предоставляем такой услуги. Возможно брокер сможет Вам ее предоставить.
64-битная версия QUIK
Пользователь
Сообщений: Регистрация: 23.01.2015
18.06.2019 11:49:44
Цитата
новичок написал: как Вы уже поняли, вопросы задаются не от праздного любопытства, а по причине разночтений в информации, когда брокеры информируют о прекращении исправления ошибок с 7-ой версией с июляа вы (саппорт) болеее, чем неуверенно высказываетесь о перспективах 8-ой версии
Нет никаких разночтений. Брокера говорят то же что и мы. А точных сроков релиза 8й версии никто не знает.
биржа штрафует за ошибочные транзакции. хочу уточнить - если я вижу такое сообщение, значит моя транзакция не долетела до биржи и отбита сервером брокера?
Да верно, это диагностика сервера QUIK, а не биржи. Значит до биржи транзакция не дошла.
Квик не выполняет скрипт
Пользователь
Сообщений: Регистрация: 23.01.2015
13.06.2019 11:45:47
Цитата
Дмитрий написал: Спасибо, не стояла галка, что нужно показывать сообщения. А что понимается под фразой "только для важных сообщений" - какие сообщения квик считает важными, а какие нет?
Те у которых высокий приоритет, посмотрите документацию по функции message, там есть параметр который отвечает за приоритет сообщений.
Проблема точно не в коде. Возможно у Вас просто отключено появление окна с сообщением (Система - Настройки - Основные настройки - Сообщения - При получении показывать в окне сообщения)? Кроме окна, посмотреть сообщения можно в таблице сообщений (Создать окно - Все типы окон - Таблица сообщений)
Отладчик, статистика для теста робота и непонятный висяк, C++ интеграция
Пользователь
Сообщений: Регистрация: 23.01.2015
11.06.2019 14:26:11
Цитата
Denis написал: Пытаюсь запустить test_trans из указанного мануала, используя номер клиентского счета из регистрационного мейла, но получаю сообщения
Вам запрещена торговля по указанному счету.
Для начала рекомендуем вообще забыть про программирование и разобраться с тем какие именно параметры транзакций надо использовать. Для этого через обычный терминал QUIK отправьте нужную Вам транзакцию. Если транзакция успешно выполнится, значит в коде Вы указали не те параметры. Посмотрите в терминале какие нужно указать. Если будет та же ошибка, значит нужно разбираться с настройками на стороне сервера.
Дата размещения облигаций, добавление столбца в облигациях
Пользователь
Сообщений: Регистрация: 23.01.2015
10.06.2019 19:00:47
Цитата
Максим написал: откуда тогда сайт rusbonds.ru берёт этот параметр?
Вы можете задать этот вопрос администрации сайта rusbonds.ru
Параметр "Дата эмиссии" в таблицу облигаций, Добавление дополнительного параметра при создании таблицы текущих торгов по облигациям
Пользователь
Сообщений: Регистрация: 23.01.2015
10.06.2019 18:05:59
Цитата
Максим написал: Параметр называется "Дата размещения". Просьба добавить этот параметр.
Согласно описанию биржевого интерфейса, Московская биржа не транслирует такой параметр "Дата размещения". (, размещёно на сайте Московской Биржи).
Мы не можем транслировать данные из ниоткуда.
Быстрая смена таймфрейма, Есть ли такая возможность?
Максим ААА написал: Доделал другой скрипт. Работает, но не выводит среднюю и рси вместе.
исправьте функцию OnCalculate вот так:
Код
function OnCalculate(Index)
local Out1,Out2 = ConvertValue(Settings, func(Index, Settings))
local HL = tonumber(Settings.Horizontal_line)
if HL then
return 50+HL,50-HL,Out1,Out2
else
return nil,nil,Out1,Out2
end
end
Вопрос по скрипту индикатора AD
Пользователь
Сообщений: Регистрация: 23.01.2015
03.06.2019 04:35:28
Цитата
Анатолий написал: за весь диапазон доступных с биржи свечей, от самой последней до самой первой,
Да верно
Цитата
Анатолий написал: однакож вам видимо трудно было об этом сразу сказать.. ))))
читайте внимательней
Цитата
Sergey Gorokhov написал: Нет никакого периода. n в формуле обозначает текущую свечку для которой происходит расчет.Например если свечек 5 значит n=5
Вопрос по скрипту индикатора AD
Пользователь
Сообщений: Регистрация: 23.01.2015
29.05.2019 11:57:01
Цитата
Анатолий написал: Получается что для 1ой свечи CumAD = ADn и он же будет CumADn-1 для 2ой свечи правильно?
Да правильно.
Цитата
Анатолий написал: т.е. в вашем индикаторе A/D и индикаторе Чайкина они рассчитываются от выбранного интервала (количества свечей взятых для рассчета)?
Если свечек 5 значит для расчета 5й свечки надо посчитать по 1й по 2й по 3й по 4й и наконец по 5й. Если свечек 6 значит для расчета 6й свечки надо посчитать по 1й по 2й по 3й по 4й по 5й и наконец по 6й. Если свечек 7 значит для расчета 7й свечки надо посчитать по 1й по 2й по 3й по 4й по 5й по 6й и наконец по 7й. и так далее.
Вопрос по скрипту индикатора AD
Пользователь
Сообщений: Регистрация: 23.01.2015
28.05.2019 15:54:45
Цитата
Анатолий написал: если говорите что CumADn-1 тоже для этой же свечи?
Никто такого не говорил. Было четко сказано:
Цитата
Sergey Gorokhov написал: n в формуле обозначает текущую свечку
Следовательно n-1 это предыдущая свечка.
Реальный период расчета скриптов, написанных на QPILE, Реальный период расчета скриптов, написанных на QPILE
Пользователь
Сообщений: Регистрация: 23.01.2015
23.05.2019 05:27:59
Цитата
Анатолий написал: Период расчета выставлен 1сек. у всех скриптов
Для начала, период в настройках это время между окончанием предыдущего расчета скрипта и началом нового расчета. Например если сам скрипт у Вас отрабатывает за 5 сек, то значит между запуском первой итерации и второй будет 5+1=6 сек.
Далее, если есть проблема с кодом, без самого кода разобраться не представляется возможным, как бы подробно Вы всё не описывали.
И наконец, QPILE мы уже давно не развиваем и развивать не будем, сейчас он существует только для поддержки обратной совместимости. Рекомендуем перейти на более современный язык QLUA. Да сложно, да долго, но это того стоит.
rpns написал: До вызова main в нем неинициализированной глобальной переменой sz_sr присваивается некоторое значение. OnInit завершается (в основном потоке). Затем (если я верно понял) в отдельном потоке запускается и нормально работает main. Никто, вроде, не висит больше. Но почему-то присвоенное значение -- это 0, что обнаруживается в самом же вызове OnInit. Причем лишь каждый ВТОРОЙ запуск скрипта (а иначе -- правильное значение).
Как уже было сказано и еще раз повторим, пока работает колбек, терминал QUIK просто ждет, ничего не делает. Вы в колбеке отправили заказ данных, а потом залип на цикле. Пока цикл не завершится, данные заказанные прошлой строкой не поедут, а пока данные не поедут, цикл согласно логике, не завершится. Получается замкнутый круг. При повторном запуске, данные УЖЕ приехали т.к. были заказаны при первом запуске скрипта, по этому второй запуск показывает числа. main работает в отдельном потоке, по этому там заказ данных и ожидание данных, работают параллельно с поступлением данных в терминал. по этому в main можно делать цикл, а в колбеке нет.
Цитата
rpns написал: Кстати, и без вызова SetEmptyCallback. Зачем он тогда?)
Он нужен для подписки на данные. Ровно эту же подписку можно выполнить через терминал, открыв нужный график. Если Вы откроете график то по сути SetEmptyCallback не нужен, данные и так будут поступать. Но не всем удобно открывать графики, по этому существует SetEmptyCallback.
Цитата
rpns написал: Что вообще стоит делать в OnInit? Можно, например, стакан заказать (Subscribe_Level_II_Quotes)?
Что угодно, лишь бы выход из колбека был максимально быстрым, и это касается не только OnInit, а вообще всех колбеков (функции с именем On*)
Не удаётся запустить даже тестовый Lua скрипт в Квике (версии 7.25.1.3), Всё делаю строго по инструкции, но скрипт не запускается.
Пользователь
Сообщений: Регистрация: 23.01.2015
17.05.2019 11:01:12
Цитата
Physic98 написал: Теперь скрипт запускается, но не срабатывает функция message() почему то?
Откройте таблицу текущих торгов по нужному инструменту с параметром Спрос, убедитесь что данные в этом параметре отображаются
CreateDataSource: задержка получения данных
Пользователь
Сообщений: Регистрация: 23.01.2015
17.05.2019 10:31:30
rpns, Уберите код из OnInit Все колбеки выполняются в основном потоке терминала, т.е. пока колбек не завершит работу, терминал будет висеть и ничего не делать.
Помогите получить цену по своей последней сделке по определенному инструменту
Еще вопрос, а как найти номер свечи этой последней сделки при использовании CreateDataSource ?
на графиках нет номеров сделок, так что только по времени и цене. Зная дату и время сделки, и ее цены, Вы можете найти ее на графике.
attempt to concatenate field '?' (a nil value)
Пользователь
Сообщений: Регистрация: 23.01.2015
16.05.2019 12:28:14
Цитата
Sergey Denegin написал: Исходя из чего луа будет опредялять что выводить?
Все просто, если левое выражение не nil и не false то будет выведено оно, в противном случае будет выведено правое выражение.
attempt to concatenate field '?' (a nil value)
Пользователь
Сообщений: Регистрация: 23.01.2015
16.05.2019 09:42:27
Позвольте немного поправить, лучше так:
Код
sd="..tostring(t_big[candle][6])
Если в tostring попадет nil то он сам преобразует его в строку "nil"
Функция SetRangeValue рисует лишнюю линию, Как убрать линию, соединяющую уровни, заданные SetRangeValue
Пользователь
Сообщений: Регистрация: 23.01.2015
15.05.2019 12:32:49
Цитата
Виктор Столетов написал: Есть еще один вопрос по линиям индикатора: Если задать тип линии TYPE_DASH или TYPE_POINT, то штрихи и точки идут очень близко друг к другу. Когда сжимаешь график, то они сливаются в сплошную линию. Можно ли как-то регулировать ширину пробелов между точками или штрихами, чтобы сделать их реже?
К сожалению такой возможности не предусмотрено
получить текущую эффективную цену позиции
Пользователь
Сообщений: Регистрация: 23.01.2015
15.05.2019 12:13:30
Sergey, нам и так понятно что Вам нужно, нет смысла это повторять.
ответ Вам уже был дан и не один раз.
Цитата
Sergey Gorokhov написал: Следовательно если биржа не транслирует нужную Вам цифру то и в QUIK ее нет.
получить текущую эффективную цену позиции
Пользователь
Сообщений: Регистрация: 23.01.2015
15.05.2019 12:01:16
Цитата
Sergey написал: так что это не то что нужно =(( мне нужна текущая цена текущей позиции.
Что Вы понимаете под "текущая цена текущей позиции"? биржа транслирует то что Вам нужно, если да в каком параметре? Следует понимать что на срочном рынке (в отличии от фондового и валютного рынков), позиции ведет и транслирует биржа, а не QUIK. Следовательно если биржа не транслирует нужную Вам цифру то и в QUIK ее нет.
получить текущую эффективную цену позиции
Пользователь
Сообщений: Регистрация: 23.01.2015
15.05.2019 10:28:47
Sergey, Этот параметр считает и транслирует биржа, можете поинтересоваться у нее какая формула расчета. В биржевом потоке это параметр waprice из таблицы position потока FORTS_POS_REPL
Дмитрий написал: 1)в архиве также лежат две DLL-ки, они устанавливаются опционально, в ту же папку, что и exe-шник или если на компе установлена какая-то Visual C++ (какая именно?) это не нужно?
Рекомендуем не экспериментировать, есть дистрибутив и все файлы из дистрибутива должны быть на месте, если это не так, гарантировать стабильную работу мы не можем.
Цитата
Дмитрий написал: 2) После запуска программа будет одинаково работать с dat-файлами квик 6.16 и квик 7.12?