Александр Волфовиц написал: Подскажите, пожалуйста, как перекомпилировать *.dll для работы с lua под новую версию QUIK, старая не работает по причине своей 32-битности, я правильно понимаю?
Все колбеки LUA работают в главном потоке терминала. Следовательно пока колбек не завершит работу, терминал будет висеть. Чтобы убедиться в этом, можете для эксперимента, добавить в любой колбек бесконечный цикл и терминал повиснет намертво. Вам нужно максимально минимизировать время обработки колбека OnQuote, как минимум убрать повторения одинаковых циклов и рассмотреть варианты минимизации записи в файл, например в цикле формировать переменную а записывать в файл уже после цикла.
Здравствуйте, Посмотрите визуально какой тип клиента указан в терминале в таблице купить/продать. Указанные параметры будут работать только для клиентов с типом МД.
Let_it_go написал: Мне мерещится, или колбек OnTrade срабатывает три раза на каждую сделку? Один за другим приходят три отчёта о совершении одной сделки.
так и должно быть. Этому вопросу уже много лет и он не однократно поднимался на форуме.
Цитата
Let_it_go написал: И ещё вопрос. Можно ли факт заключения сделки отслеживать через OnTransReply или он только для отправки ордеров?
Не всегда. OnTransReply содержит только ответы на транзакции. Если в ответе на транзакцию биржа указала исполнение (например если заявка рыночная) то Вы увидите примерно такой текст "заявка зарегистрирована _номер_ исполненное количество _столько-то_ не исполненное _столько-то_"
Илья написал: Позвольте тогда чуть чуть переформулировать вопрос. Как можно реализовать pre-trade контроль заявок выставляемых в терминале через стороннее приложение находящееся на удаленном сервере?
Можно реализовать только через:
Цитата
Илья написал: "создать кастом форму для новой заявки"
Олег написал: Может кто подскажет, экспорт в метасток кто-нибудь предоставляет, может модуль есть какой?
Попробуйте воспользоваться документацией: -Раздел 6. Совместная работа с другими приложениями --Экспорт данных в системы технического анализа с использованием внешних программ
Александр написал: Это коллекция? Ассоциативный массив?
Это просто строка, самая обычная.
Цитата
Александр написал: Как вычленить из строки отдельные коды инструментов средствами QPILE?
Через цикл FOR Пример:
Код
SecuritiesList = GET_CLASS_SECURITIES ("TQBR")
FOR Sec IN SecuritiesList
MESSAGE(Sec,0)
END FOR
Обращаем внимание что QPILE является устаревшим языком и оставлен только для поддержки обратной совместимости. В связи с чем, рекомендуем использовать язык QLUA.
Let_it_go написал: Как с помощью колбека OnTrade понять, что заявка с известным номером исполнилась полностью или частично?
Именно такой информации в таблице сделок нет. Но там есть количество в сделках. Следовательно можно подсчитать сумму в сделках и сравнить ее с количеством в заявке. Например в заявке продажа 5 бумаг, пришли сделки с количеством 1 и 2, сумма равна 3м, что меньше 5, значит заявка исполнена частично.
Цитата
Let_it_go написал: Как то же самое узнать с помощью колбека OnOrder?
Тут проще, там есть параметр balance, который определяет не исполненный остаток. Еще есть параметр ext_order_status, в котором значение 2 соответствует частичному исполнению.
Валентин написал: Необходимо узнать текущий остаток средств в сроке расчетов Тх (там именно та сумма, на которую я могу сейчас закупаться). Соответственно ставим параметр limit_kind в значение 2 (0 - Т0, 1 - Т1, 2 - Т2)
новичок написал: как Вы уже поняли, вопросы задаются не от праздного любопытства, а по причине разночтений в информации, когда брокеры информируют о прекращении исправления ошибок с 7-ой версией с июляа вы (саппорт) болеее, чем неуверенно высказываетесь о перспективах 8-ой версии
Нет никаких разночтений. Брокера говорят то же что и мы. А точных сроков релиза 8й версии никто не знает.
биржа штрафует за ошибочные транзакции. хочу уточнить - если я вижу такое сообщение, значит моя транзакция не долетела до биржи и отбита сервером брокера?
Да верно, это диагностика сервера QUIK, а не биржи. Значит до биржи транзакция не дошла.
Дмитрий написал: Спасибо, не стояла галка, что нужно показывать сообщения. А что понимается под фразой "только для важных сообщений" - какие сообщения квик считает важными, а какие нет?
Те у которых высокий приоритет, посмотрите документацию по функции message, там есть параметр который отвечает за приоритет сообщений.
Проблема точно не в коде. Возможно у Вас просто отключено появление окна с сообщением (Система - Настройки - Основные настройки - Сообщения - При получении показывать в окне сообщения)? Кроме окна, посмотреть сообщения можно в таблице сообщений (Создать окно - Все типы окон - Таблица сообщений)
Denis написал: Пытаюсь запустить test_trans из указанного мануала, используя номер клиентского счета из регистрационного мейла, но получаю сообщения
Вам запрещена торговля по указанному счету.
Для начала рекомендуем вообще забыть про программирование и разобраться с тем какие именно параметры транзакций надо использовать. Для этого через обычный терминал QUIK отправьте нужную Вам транзакцию. Если транзакция успешно выполнится, значит в коде Вы указали не те параметры. Посмотрите в терминале какие нужно указать. Если будет та же ошибка, значит нужно разбираться с настройками на стороне сервера.
Максим написал: Параметр называется "Дата размещения". Просьба добавить этот параметр.
Согласно описанию биржевого интерфейса, Московская биржа не транслирует такой параметр "Дата размещения". (описание интерфейса, размещёно на сайте Московской Биржи).
Максим ААА написал: Доделал другой скрипт. Работает, но не выводит среднюю и рси вместе.
исправьте функцию 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
Анатолий написал: Получается что для 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й. и так далее.
Анатолий написал: Период расчета выставлен 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*)
rpns, Уберите код из OnInit Все колбеки выполняются в основном потоке терминала, т.е. пока колбек не завершит работу, терминал будет висеть и ничего не делать.
Виктор Столетов написал: Есть еще один вопрос по линиям индикатора: Если задать тип линии TYPE_DASH или TYPE_POINT, то штрихи и точки идут очень близко друг к другу. Когда сжимаешь график, то они сливаются в сплошную линию. Можно ли как-то регулировать ширину пробелов между точками или штрихами, чтобы сделать их реже?
Sergey написал: так что это не то что нужно =(( мне нужна текущая цена текущей позиции.
Что Вы понимаете под "текущая цена текущей позиции"? биржа транслирует то что Вам нужно, если да в каком параметре? Следует понимать что на срочном рынке (в отличии от фондового и валютного рынков), позиции ведет и транслирует биржа, а не QUIK. Следовательно если биржа не транслирует нужную Вам цифру то и в QUIK ее нет.
Sergey, Этот параметр считает и транслирует биржа, можете поинтересоваться у нее какая формула расчета. В биржевом потоке это параметр waprice из таблицы position потока FORTS_POS_REPL
Дмитрий написал: 1)в архиве также лежат две DLL-ки, они устанавливаются опционально, в ту же папку, что и exe-шник или если на компе установлена какая-то Visual C++ (какая именно?) это не нужно?
Рекомендуем не экспериментировать, есть дистрибутив и все файлы из дистрибутива должны быть на месте, если это не так, гарантировать стабильную работу мы не можем.
Цитата
Дмитрий написал: 2) После запуска программа будет одинаково работать с dat-файлами квик 6.16 и квик 7.12?