Иван Ру (Все сообщения пользователя)

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

Страницы: Пред. 1 2 3 4 5 След.
Ошибка not enough memory, сегодня скрипт впервые упал с такой ошибкой -- как выявить причину?
 
Сегодня мой "боевой" скрипт LUA в ходе работы сегодня несколько раз падал с такой ошибкой.
Поначалу грешил на то, что вставил в другой скрипт анализ изменения стаканов по всем фьючам, но отключение модуля результата не дало.
По понятным, думаю, причинам, выложить его в открытый доступ не могу. В этой связи вопросы.
1. Подскажите, какова возможная причина проблемы?
2. У кого были похожие ситуации, с чем они связаны и как удалось избавиться от проблем?
3. Как самостоятельно попытаться идентифицировать источник проблемы  и оптимизировать код?
4. Есть ли возможность использовать для LUA какие-либо программы отладки, которые анализируют

П.С. Версия quik - 7.12 Windows 10 64 бит 32 гб RAM. Одновременно работает 4 скрипта из них два - ресурсоемких. Включены таблицы всех сделок по фьючам и российским акциям (все инструменты).
П.С.С. Вообще с переходом от 7.11 к 7.12 проблемы появляются одна за одной.
getFuturesLimit - параметры, не могу получить таблицу getFuturesLimit
 
Цитата
Stanislav Tvorogov написал:
Цитата
Иван Ру   написал:
Спасибо, решетка осталась еще с попыток считать всю таблицу, а не ее параметр .cbplimit
Я написал, что ошибка появляется не в строке с message, а в предыдущей строке FutLimit = getFuturesLimit... т.е. интерпретатор даже не доходит до строки, которую предлагается исправить. Ожидаемо, исправление не изменило результат.
При подстановке собственных данных в Ваш код он отработал корректно. Ошибка может быть только в заполнении значений параметров таблицы.
Также, в коде вы указываете фирму SPBFUT, в то время как в таблице - MC.
Если разобраться не удастся, просьба все же направить письмо на адрес:  quiksupport@arqatech.com  приложив скриншот таблицы и скриншот ошибки, указав в письме ссылку на данную ветку форума.
Проблема решена.
1. Первый параметр у меня должен был быть не  'SPFUT' как везде пишут, а иной код характерный для моего брокера (МС... у Финам).
2. Параметр "валюта расчетов" у меня в таблице пустой, здесь он должен быть в виде пустой строки "" (опускать его нельзя).


Однако, выяснилось что поставленную задачу я решить не могу. Мне нужно узнать объем свободных средств, которые я могу использовать для октрытия новых позиций (сопоставлю его с ГО).
В терминале Quik я вижу эту цифру в таблице "Состояние счета" на дату T2 внизу строки в поле "Свободно". Не подскажете, какой функционал Lua не необходимо использовать чтобы получить этот показатель программно.
getFuturesLimit - параметры, не могу получить таблицу getFuturesLimit
 
Спасибо, решетка осталась еще с попыток считать всю таблицу, а не ее параметр .cbplimit
Я написал, что ошибка появляется не в строке с message, а в предыдущей строке FutLimit = getFuturesLimit... т.е. интерпретатор даже не доходит до строки, которую предлагается исправить. Ожидаемо, исправление не изменило результат.  
getFuturesLimit - параметры, не могу получить таблицу getFuturesLimit
 
Цитата
Stanislav Tvorogov написал:
Цитата
Иван Ру   написал:
ACCOUNT  -- строковая переменная содержащая код моего аккаунта. У меня (Финам) он имеет вид 7...kb0
Есть еще код клиента вида 3...MYJ . НИ с одним, ни с другим функция не работает.
Просьба привести полный текст вызова функции, а также скриншот таблицы "Ограничений по клиентским счетам" с видимыми задаваемыми параметрами.
Ответил в личку.  
getFuturesLimit - параметры, не могу получить таблицу getFuturesLimit
 
Цитата
Stanislav Tvorogov написал:
Добрый день,

Значение всех параметров функции можно посмотреть в таблице "Ограничения по клиентским счетам":
Firmid - Фирма, trdaccid- Торговый счет, limit_type - Тип лимита. Коды возможных типов лимитов можно найти в документации QLUA.chm Раздел "Структуры данных/Лимиты по фьючерсам".
currcode - Валюта позиции.
Цитата
Иван Ру   написал:
Использовал строку вида
FutLimit = getFuturesLimit("SPBFUT", ACCOUNT, 0, "SUR").cbplimit
но она возвращает нулевые значения...
ACCOUNT вероятно, неверное значение параметра trdaccid, кроме того, значения счета нужно указывать в кавычках.
Убедитесь, что вводимые Вами параметры соответствуют тем, которые отображены в таблице Рабочего места QUIK.
ACCOUNT  -- строковая переменная содержащая код моего аккаунта. У меня (Финам) он имеет вид 7...kb0
Есть еще код клиента вида 3...MYJ . НИ с одним, ни с другим функция не работает.  
getFuturesLimit - параметры, не могу получить таблицу getFuturesLimit
 
В соответствии с инструкцией формат вызова функции TABLE getFuturesLimit(STRING firmid, STRING trdaccid, NUMBER
limit_type, STRING currcode)
Почитал форумы и не вполне понимаю какие аргументы подставлять и что они значат
Firmid - это SPBFUT или индекс фирмы вида MC0061...
trdaccid -- аккаунт? везде пишут что он должен иметь вид SPBFUT...TT, но у меня не так, я в lua использую аккаунт вида 76..0
limit_type -- какие типы лимита бывают, чт
currcode - это что вообще? код валюты?

Использовал строку вида
FutLimit = getFuturesLimit("SPBFUT", ACCOUNT, 0, "SUR").cbplimit
но она возвращает нулевые значения...
Версия 7.12 - жуткие тормоза, После обновления тормозит рабочее место Quik
 
Цитата
Отослал повторно.
Хочу сообщить еще об одном наблюдении.
Запускаю я скрипт LUA, который расставляет около сотни заявок. Квик тормозит, точнее перестает реагировать (значок мыши -- "занят"), где-то минуты две. Потом "чувствительность" возвращается, хотя и реагирует он на ввод с клавиатуры и мыши медленно, при этом по времени заявок я вижу, что они выставляются практически сразу же, -- когда был запущен скрипт. Т.е. в работе LUA тормозов вроде нет.
П.С. Еще раз -- серфинг в интернете и работа остальных программ -- все ОК. Проверял скорость speedtest oakl -- 10 мб на вход и выход.
Заявка FILL OR KILL на срочном рынке, можно ли сформировать такую заявку на срочном рынке FORTS
 
Цитата
Stanislav Tvorogov написал:
Добрый день,

Условие исполнения заявки задается в параметре "EXECUTION_CONDITION". Возможные значения:
 «PUT_IN_QUEUE» – поставить в очередь (по умолчанию),
 «FILL_OR_KILL» – немедленно или отклонить,
 «KILL_BALANCE» – снять остаток.
Благодарю, сейчас опробую
Ошибка field 'day' missing in date table, В последние дни скрипт постоянно вылетает из-за этой ошибки
 
Цитата
Sergey Gorokhov написал:
Цитата
Иван Ру   написал:
при отправке пакетных заявок
Что такое "пакетных заявок"?
Цитата
Иван Ру   написал:
Логгирование выглядит вот так:
По приведенному логу не понятно где запрошенный TRADEDATE
1. Пакетные -- когда код lua одномоментно посылает брокеру большое число заявок. Ну точнее не совсем одновременно, а с очень коротким интервалом времени необходимым для исполнения программного кода. Например, перебирая в цикле for ipairs do end помещенные в таблицу инструменты /позиции при каждом проходе цикла отправляется заявка. Эту проблему я УЖЕ РЕШИЛ вставив в цикл оператор sleep с периодом 1-2 мс.
Предполагаю, что брокер ввел какие-то ограничения или изменилось качество канала связи с пользователями: обращу внимание, что я регулярно пользуюсь разным интернетом в разных географических точках, проблема не с моей стороны, т.к. раньше (около месяца назад) ее ни при каких условиях не было, а потом она стала проявляться постоянно!!!

2. У меня регулярно в цикле считывается TRADEDATE И TRADETIME на основе которых рассчитывается время в формате posix. Пропуски в "напряженные" моменты времени возникают в разных полях, обычно сразу несколько пропусков и в TRADEDATE  и в полях TRADETIME. Т.е. я знаю (по опыту) если при данном проходе цикла main есть пропуски в одной таблице -- наверняка будут и в другой. В этом логе также -- здесь приведены последние его строки, только обнаружились прописку в полях таблицы серверного времени и сразу же исполнение кода оборвалось. (В лог я вывожу только время, т.к. дата не меняется в течение дня. )
Заявка FILL OR KILL на срочном рынке, можно ли сформировать такую заявку на срочном рынке FORTS
 
Сабж. Если да -- в каком поле и как прописывать такой тип заявки. Есть поле TYPE, но оно содержит только признаки лимитной и рыночной заявки...
Ошибка field 'day' missing in date table, В последние дни скрипт постоянно вылетает из-за этой ошибки
 
Цитата
Sergey Gorokhov написал:
Иван Ру  ,

Добавьте логирование в свой код:
message(tostring(getInfoParam('TRADEDATE')))
Это нужно чтобы мы могли увидеть в какой момент возникла проблема.
При возникновении ошибки, закройте терминал, пришлите нам на quiksupport@arqatech.com архив всей папки с терминалом (без ключей доступа).
В теме письма укажите ссылку на эту ветку форума.
Проблема возникает при отправке пакетных заявок и проходе через клиринг. Также не доходят и данные по времени (все поля или отдельные из них).
Логгирование выглядит вот так:
13:59:5910933,7519854fPriceCalcprice is out of diapasonALZ7
13:59:5910933,7519854killOrd()KILLEDALZ7
13:59:5910933,7619854fPriceCalcprice is out of diapasonMNZ7
13:59:5910933,7619854killOrd()KILLEDMNZ7
13:59:5910933,7619854fPriceCalcprice is out of diapasonMNZ7
13:59:5910933,7619854killOrd()KILLEDMNZ7
13:59:5910933,7619854fPriceCalcprice is out of diapasonMNZ7
13:59:5910933,7719854killOrd()KILLEDMNZ7
13:59:5910934,3319855PlaceOrder()OKALZ7
13:59:5910934,3319855PlaceOrder()OKALZ7
13:59:5910934,3319855PlaceOrder()OKALZ7
13:59:5910934,3519855PlaceOrder()OKMNZ7
13:59:5910934,3519855PlaceOrder()OKMNZ7
13:59:5910934,3619855PlaceOrder()OKMNZ7
14:00:0010937,8219861main()session finished
nil:nil:nil10938,4919861OnTransReply()Catched kill order
14:00:0410938,4919861main()no connection
14:00:0410938,4919861OnTransReply()Catched kill order
Версия 7.12 - жуткие тормоза, После обновления тормозит рабочее место Quik
 
Цитата
Иван Ру написал:
Цитата
Egor Zaytsev   написал:
Добрый день.

Без дополнительной информации понять причины будет затруднительно.
Просьба прислать архив проблемного рабочего места QUIK без ключей доступа и файла chm.
А также Ваш скрипт.
Скрипт не при делах, место тормозит и тогда, когда он не работает. (Сам, скрипт, кстати, несмотря на тормоза все же исправно работает). Еще для информации -- интернет и другие программы на ПК работают без проблем.
П.С. На какой е-мейл высылать?
Файл вложение -30 мб. Письма не доходят (см. ниже)


Это письмо создано автоматически сервером Mail.Ru, отвечать на него не нужно.

К сожалению, Ваше письмо не может быть доставлено одному или нескольким получателям:

 ezaytsev@arqatech.com
   SMTP error from remote mail server after end of data:
   host mx1.arqatech.com [80.89.133.133]: 550 5.7.1 Rejected by malware filter
 quiksupport@arqatech.com
   SMTP error from remote mail server after end of data:
   host mx1.arqatech.com [80.89.133.133]: 550 5.7.1 Rejected by malware filter
Версия 7.12 - жуткие тормоза, После обновления тормозит рабочее место Quik
 
Цитата
Egor Zaytsev написал:
Добрый день.

Без дополнительной информации понять причины будет затруднительно.
Просьба прислать архив проблемного рабочего места QUIK без ключей доступа и файла chm.
А также Ваш скрипт.
Скрипт не при делах, место тормозит и тогда, когда он не работает. (Сам, скрипт, кстати, несмотря на тормоза все же исправно работает). Еще для информации -- интернет и другие программы на ПК работают без проблем.
П.С. На какой е-мейл высылать?
Версия 7.12 - жуткие тормоза, После обновления тормозит рабочее место Quik
 
Даже при переключении между окнами возникает пауза. Пакетный запуск нескольких десятков заявок через Lua вешает квик приблизительно на минуту. До обновления никаких проблем не было.
Обновлялся через Финам. Система производительная, Windows 10.
Ошибка field 'day' missing in date table, В последние дни скрипт постоянно вылетает из-за этой ошибки
 
Точно не скажу, т.к. в этих случаях у меня обычно возникает ошибка прекращающая работу кода, но бывают похожие случаи, когда она все же логгируется.
Бывает вот так: nil:nil:nil, а бывает, что не возвращается лишь одно из значений, обычно день.
Ошибка field 'day' missing in date table, В последние дни скрипт постоянно вылетает из-за этой ошибки
 
В последние дни скрипт постоянно вылетает из-за этой ошибки
field 'day' missing in date table
Возникает она в разных частях кода и в разных ситуациях при попытке считать время сервера.

Для этих целей использую вот такую функцию
function fTimeTable()
dtServ = {};
dtServ.day,dtServ.month,dtServ.year,dtServ.hour,dtServ.min,dtServ.sec = string.match(getInfoParam('TRADEDATE')..' '..getInfoParam('SERVERTIME'),"(%d*).(%d*).(%d*) (%d*):(%d*):(%d*)")
for key,value in pairs(dtServ) do dtServ[key] = tonumber(value) end
return dtServ -- возвращает таблицу с элементами данных в последовательности: день-месяц-год час-мин-секунда
end

Как кажется, причиной проблемы может быть перегрузка канала связи и пропуск данных -- она чаще возникает при массированной отправке заявок на размещение или снятие ордеров. Но раньше такого не было.
Квик 7911 ФИНАМ

Кто сталкивался? В чем причина и как с ней бороться?
Как определить время вечерней сессии, Как определить время начала вечерней сессии на срочном рынке используя средства луа
 
Цитата
Николай Камынин написал:
иколай  Камынин
Не найду у себя такого раздела меню "Выбор принимаемых параметров и инструментов"  - подскажите где он?
Как определить время вечерней сессии, Как определить время начала вечерней сессии на срочном рынке используя средства луа
 
Любопытно... Я так понимаю картинка именно со срочного рынка?

Увы, у себя в меню "Доступные параметры" для инструментов срочного рынка я не вижу такого параметра "Начало вечерней сессии" и ничего аналогичного. Скажите какую версию терминала и какого брокера используете? (У меня 7911 финам)

В луа я (безуспешно) использовал такие параметры:

local STARTTIME =    getParamEx('SPBFUT',value.sec, 'STARTTIME').param_value              -- STRING   Начало основной сессии
local ENDTIME = getParamEx('SPBFUT',value.sec, 'ENDTIME').param_value                 -- STRING   Окончание основной сессии
local EVNSTARTTIME = getParamEx('SPBFUT',value.sec, 'EVNSTARTTIME').param_value           -- STRING   Начало вечерней сессии
local EVNENDTIME = getParamEx('SPBFUT',value.sec, 'EVNENDTIME').param_value             -- STRING   Окончание вечерней сессии
local MONSTARTTIME = getParamEx('SPBFUT',value.sec, 'MONSTARTTIME').param_value           -- STRING   Начало утренней сессии
local MONENDTIME   = getParamEx('SPBFUT',value.sec, 'MONENDTIME').param_value             -- STRING   Окончание утренней сессии
Как определить время вечерней сессии, Как определить время начала вечерней сессии на срочном рынке используя средства луа
 
Цитата
Николай Камынин написал:






#4
12.06.2017 15:54:43


ЦитатаИван Ру написал:
Сабж. Как известно иногда она начинается в 19.00, иногда - в 19.05
Пробовал разные средства - поля STATUS и TRAIDSTATUS всегда имеют значения 0.
Данные о последней сделке и стакане заявок в период клиринга прекрасно выдаются, по ним судить о времени начала и окончания этого периода нельзя :-(getParamEx
----------------------------------
Параметр
Начало вечерней сессии


Спасибо Николай, что напомнили.
Этот параметр я опробовал еще раньше, с тем же результатом - одни нули. Там куча аналогичных параметров (время начала и конца дневной сессии и т.п.) которые также возвращают всегда нулевые значения.
Как определить время вечерней сессии, Как определить время начала вечерней сессии на срочном рынке используя средства луа
 
Спасибо, этот вариант приходил в голову, хотя хотелось "прямой" индикатор. Не понимаю почему столь ценная информация не транслируется биржей и брокером???
Как определить время вечерней сессии, Как определить время начала вечерней сессии на срочном рынке используя средства луа
 
Сабж. Как известно иногда она начинается в 19.00, иногда - в 19.05
Пробовал разные средства - поля STATUS и TRAIDSTATUS всегда имеют значения 0.
Данные о последней сделке и стакане заявок в период клиринга прекрасно выдаются, по ним судить о времени начала и окончания этого периода нельзя :-(
Двухфакторная авторизация - насколько важна?
 
Двухфакторная авторизация мешает работе роботов. Каждый раз с 9.30 до 10.00 и только в этот промежуток надо авторизоваться в терминале. Подумываю о том, чтобы от нее отказаться Интересно субъективное мнение пользователей - кто работает с ней или без нее. Насколько это на ваш взгляд опасно?
П.С. Финам-квик-луа
Время изменения стакана получаемого через OnQuotes, OnQuotes - есть ли возможность параллельно с чтением стакана, получить точное время торгового сервера, когда он возник/изменился
 
Цитата
Николай Камынин написал:
В-третьих, время сервера брокера - это время когда в терминал пришла последняя партия данных с сервера. Это может быть и не стакан.
----------------------------------------------------
В-четвертых, поток сделок тоже идет блоками. В одном блоке, который придет в одно время сервера будут сделки с различным временем биржи.
Нелогичности в своих рассуждения не вижу, судя по пунктам 3-4 Вы теперь уловили суть вопроса, Ваши разъяснения подтверждают, а не опровергают наличие обозначенной мной проблемы. Для сделок, в коллбэке alltrade есть параметр datetime указывающий на момент их совершения (насколько я понимаю) . Для onQoutes аналогичного параметра я не вижу, что создает проблемы.  
Время изменения стакана получаемого через OnQuotes, OnQuotes - есть ли возможность параллельно с чтением стакана, получить точное время торгового сервера, когда он возник/изменился
 
Цитата
Николай Камынин написал:
Цитата
Борис Гудылин   написал:
О синхронизации локального времени с сервером точного времени.
 
Раз в час синхронизирую время с сервером точного времени ntp1.vniiftri.ru. Сразу после этого  локальное время и время биржи если и отличаются, то не слишком заметно.
Но за час расхождение достигает нескольких секунд.
Во-первых, биржа тоже синхронизируется по серверу точного времени. и гораздо точнее чем ваш комп.
Во-вторых, синхронизируйте на раз в час а как хотите быстрее. Я синхронизирую раз в пять минут.
В-третьих, в винде есть алгоритм автоподстройки времени, который обеспечивает погрешность указанную ранее.
Вот результаты моих исследований этого вопроса (по оси Y - погрешность в секундах):
Николай, я уже объяснил, ваше пояснение не имеет отношения к теме моего вопроса и поднятой проблемы, хотя и интересно само по себе. Я получаю и использую время сервера, а не моего ПК. Оно может быть сколь угодно рассинхронизовано, это никак не влияет на результат.  
Проигрывание мелодии - информация о сделке., Оповещение пользователя о редких событиях в скрипте - как решаете эту задачу.
 
Цитата
swerg написал:
https://quik2dde.ru/viewtopic.php?id=79
вроде такой метод не останавливает скрипт, но точно не помню, надо перепроверить
Да, попробовал, нормально работает. Спасибо
Индикаторы на LUA. Проигрывание звуков.
 
Цитата
Василий Петров написал:
Обошёл проблему организовав таймер, который не даёт повторно проиграть звук, если прошло меньше t времени.
Приведите пожалуйста код решения
Сообщение и звуковое оповещение при выставлении заявки - как отключить., Сообщение и звуковое оповещение при выставлении заявки - как отключить.
 
Цитата
Egor Zaytsev написал:
Цитата
Иван Ру   написал:
Цитата
Egor Zaytsev   написал:
Цитата
Иван Ру   написал:
Мой торговый робот регулярно перевыставляет ордера, что обеспечивает постоянный поток сообщений в терминале Quik и сопутствующих звуковых оповещений.
Я пытался отключить оповещения в настройках - однако, это никак не помогает. Насколько я понял они по умолчанию приходят от брокера и не отключаются. Однако же это кажется полным бредом. Мало того что это мешает работать (я пользуюсь одним ПК для разных целей, как, подозреваю, и многие здесь), хуже того, при частых оповещениях практически невозможно сделать что-либо в самом Quik, например, вручную выставить заявку! Прошу внимания разработчиков и совета пользователей -- как бороться с этой "диверсионной" активностью?
Добрый день,

Звуковые оповещения отключаются в разделе Система - Настройки - Основные настройки
Сообщения - Оповещения: "Показывать окно с исполненным оповещением" "Издавать звуковой сигнал"

Также в разделе Сообщения отключите "Показывать окно сообщений", отключенная настройка позволит не получать окно сообщений, но оно будет отображаться на панели инструментов.
У меня так и сделано, это никак не мешает появляться сообщениям о выставленных заявках с звуковым сопровождением
Добрый день,
а таком случае нам потребуется Ваше рабочее место QUIK без ключей доступа и файла chm на адрес:  quiksupport@arqatech.com
В письме укажите ссылку на данную ветку форума.
Мне заархивировать файлы из папки quik и выслать на указанный адрес?
Сообщение и звуковое оповещение при выставлении заявки - как отключить., Сообщение и звуковое оповещение при выставлении заявки - как отключить.
 
Цитата
Egor Zaytsev написал:
Цитата
Иван Ру   написал:
Мой торговый робот регулярно перевыставляет ордера, что обеспечивает постоянный поток сообщений в терминале Quik и сопутствующих звуковых оповещений.
Я пытался отключить оповещения в настройках - однако, это никак не помогает. Насколько я понял они по умолчанию приходят от брокера и не отключаются. Однако же это кажется полным бредом. Мало того что это мешает работать (я пользуюсь одним ПК для разных целей, как, подозреваю, и многие здесь), хуже того, при частых оповещениях практически невозможно сделать что-либо в самом Quik, например, вручную выставить заявку! Прошу внимания разработчиков и совета пользователей -- как бороться с этой "диверсионной" активностью?
Добрый день,

Звуковые оповещения отключаются в разделе Система - Настройки - Основные настройки
Сообщения - Оповещения: "Показывать окно с исполненным оповещением" "Издавать звуковой сигнал"

Также в разделе Сообщения отключите "Показывать окно сообщений", отключенная настройка позволит не получать окно сообщений, но оно будет отображаться на панели инструментов.
У меня так и сделано, это никак не мешает появляться сообщениям о выставленных заявках с звуковым сопровождением
Заявки не переносятся на следующий день, Проблема с переносом заявок на рынке FORTS, выставленных с использованием LUA. Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
 
Цитата
Nikolay Pavlov написал:
Добрый день.
Принцип формирования транзакций из QLua в так называемом универсальном формате с использованием "Кармана транзакций" подробно описан в официальной документации (документ 'Использование Lua в Рабочем месте  QUIK.pdf'. Файл можно найти, например, в архиве  quik_7.4.0_upd.zip   в директории Doc\Lua.), раздел "4. Отправка транзакций из Lua скрипта"
Спасибо, решить проблему удалось за исключением одного нюанса.
Прежде я использовал поле ["CLIENT_CODE"] куда вписывал уникальный идентификатор, по которому находил все заявки выставленные конкретным роботом.
В версии на русском это поле использовать нельзя -- интерпретатор его не понимает и ругается. В три-файле аналога я тоже не вижу. Есть ли все-таки у него какая-либо русскоязычная альтернатива?
Сообщение и звуковое оповещение при выставлении заявки - как отключить., Сообщение и звуковое оповещение при выставлении заявки - как отключить.
 
Мой торговый робот регулярно перевыставляет ордера, что обеспечивает постоянный поток сообщений в терминале Quik и сопутствующих звуковых оповещений.
Я пытался отключить оповещения в настройках - однако, это никак не помогает. Насколько я понял они по умолчанию приходят от брокера и не отключаются. Однако же это кажется полным бредом. Мало того что это мешает работать (я пользуюсь одним ПК для разных целей, как, подозреваю, и многие здесь), хуже того, при частых оповещениях практически невозможно сделать что-либо в самом Quik, например, вручную выставить заявку! Прошу внимания разработчиков и совета пользователей -- как бороться с этой "диверсионной" активностью?
Проигрывание мелодии - информация о сделке., Оповещение пользователя о редких событиях в скрипте - как решаете эту задачу.
 
Использую торговый робот который периодически-  несколько раз в день совершает сделки. Работаю за тем же компьютером, где запущен терминал и скрипт Lua. Задачу оповещения я решал через запуск звукового файла, однако, обнаружил, что он задерживает поток в котором исполняется на то время в течение которого проигрывается мелодия (стандартный код - ниже). Для меня это неприемлемо.  Вопрос пользователям - как решаете задачу оповещения о редких, но важных для вас событиях

КОД ЗВУКОВОГО ОПОВЕЩЕНИЯ
require("w32")

poluton = 2 ^ (1/12)

-- определим константами частоты гармонического звукоряда
A1 = 440
B1 = A1 * (poluton ^ 2)
C1 = A1 * (poluton ^ 3)
D1 = A1 * (poluton ^ 5)
E1 = A1 * (poluton ^ 7)
F1 = A1 * (poluton ^ 8)
G1 = A1 * (poluton ^ 10)
A2 = A1 * (poluton ^ 12)
B2 = A1 * (poluton ^ 14)
C2 = A1 * (poluton ^ 15)

-- играем звуки вверх
music1 = {C1, E1, G1, C2}
for i, tone in ipairs(music1) do
 w32.Beep(tone, 100)  
end

sleep(300)

-- играем звуки вниз
music2 = {C2, G1, E1, C1}
for i, tone in ipairs(music2) do
 w32.Beep(tone, 100)
end
Автологин
 
Цитата
Egor Zaytsev написал:
Добрый день.

Данный вопрос уже поднимался на форуме.
Можете ознакомиться по ссылке:  http://forum-archive.quik.ru/forum/quik/94237/
Ссылка не работает
окно сообщений
 
Цитата
Egor Zaytsev написал:
Добрый день,

    Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам,     что реализация пожелания признана потенциально целесообразной. Если     по результатам дальнейшего анализа, включающего юридические аспекты,     анализ на непротиворечивость с общей политикой компании, никаких     возражений не возникнет, мы постараемся включить Ваше пожелание в     план доработок при выпуске одной из следующих версий нашего ПО.
Воз и ныне там.  
Использовать поле COMMENT из условных заявок, созданных в QLua
 
Цитата
swerg написал:
Цитата
Sergey Gorokhov   написал:
Иван Ру  ,
Код клиента используется везде, кроме срочного рынка.
из вашего ответа не понятно: можно ли в поле кодклиента на срочном рынке вписывать ххх и после в заявках видеть это значение ххх?
Да, там все прекрасно отображается в таблице заявок, причем это поле называется "Комментарий" (интересная логика у разработчиков и биржи). Сортировать и обрабатывать тоже спокойно можно по этому полю - странно что это никто особо не использовал.
Использовать поле COMMENT из условных заявок, созданных в QLua
 
Цитата
Sergey Gorokhov написал:
Иван Ру  ,

О каком рынке Вы говорите?
Если о срочном, то там вообще код клиента как таковой не используется, туда можно писать что угодно.
На срочном рынке играет роль счет депо.
Совершенно верно, я торгую только на срочном. Пока-что. Я так понял из Вашего комментария, что поле CLIENT_CODE в данном сегменте я могу использовать на свое усмотрение. Разъясните пожалуйста какой расклад с другими сегментами биржи.  
Использовать поле COMMENT из условных заявок, созданных в QLua
 
Цитата
Sergey Gorokhov написал:
Цитата
Иван Ру   написал:
Такой подход не работает.  Ошибка: "Комментарий такой-то  превышает допустимый размер".
Общий размер текста не должен превышать 20 символов.
Цитата
Иван Ру   написал:
Потом удалил из поля код клиента собственно мой клиентский код и оставил лишь название робота. Все также работает.
Код клиента можно не задавать, но только в том случае, если он у Вас один. Если Вы работаете с разными кодами одновременно, то способ не сработает.
У меня четыре кода клиента, торгую я с одного. НО! коды для выставления заявок и отображения позиций используются разные! Заявки и позиции отображаются по коду вида 7xxxk0, который для выставления заявок использовать не получается (выдает ошибку), для выставления заявок используется код вида 3ххххххMIJ (брокер Финам),Хотя все работает, Ваше замечание настораживает. Правильно ли я понимаю, что если делать через слэш - проблемы точно не будет; в и итоге в комментарии мы получим единую строковую переменную вида "кодПользователя/комментарий" и это нормально? Почему сейчас все работает?
Использовать поле COMMENT из условных заявок, созданных в QLua
 
Цитата
Sergey Gorokhov написал:
Поле "COMMENT" служит для того чтобы снимать заявки по условию, а не для того чтобы задать комментарий.
Комментарий задается в параметре CLIENT_CODE после кода клиента, нужно указать знак "/" или "//" (зависит от настроек брокера) а потом уже указывать комментарий.

Сократил название робота с 8 до 5 символов - заработало. Потом удалил из поля код клиента собственно мой клиентский код и оставил лишь название робота. Все также работает. Название робота появляется в поле комментарий. Это нормальный подход?
Использовать поле COMMENT из условных заявок, созданных в QLua
 
Цитата
Sergey Gorokhov написал:
Комментарий задается в параметре CLIENT_CODE после кода клиента, нужно указать знак "/" или "//" (зависит от настроек брокера) а потом уже указывать комментарий.
Я попробовал предложенный Вами подход с одним и двумя слэшами.
Код LUA у меня выглядит следующим образом
["CLIENT_CODE"] = CLIENT_CODE.."//"..RoboName ,
Где CLIENT_CODE и RoboName - соответствующие переменные.
Такой подход не работает.  Ошибка: "Комментарий такой-то  превышает допустимый размер".

Между тем комментарий пользователя к транзакции очень важен при программировании, т.к. позволяет легко различать заявки выставленные разными роботами.
Время изменения стакана получаемого через OnQuotes, OnQuotes - есть ли возможность параллельно с чтением стакана, получить точное время торгового сервера, когда он возник/изменился
 
Цитата
swerg написал:
Вы не получите точное время.
1. Биржа его не говорит
2. Квик может отправлять не все изменения биржевого стакана для инструментом со слишком активными торгами
Вы меня правильно поняли. У меня было подозрение, что все именно так. Есть опыт / идеи борьбы с проблемой?
Цитата
Борис Гудылин написал:
OnQuote
Время синхронизировано на компе и сервере. Это не проблема.
Цитата
Николай Камынин написал:
OnQuote
Я уже говорил. Поскольку сСтакан формируется на бирже, а OnQoute - на терминале пользователя. SERVERTIME указывает время последней генерации, которая происходит позже. Это проблема. Для сделок. например, можно узнать точное время именно биржи, а для стакана, как я подозреваю - нет. Это "нихт гду."
Время изменения стакана получаемого через OnQuotes, OnQuotes - есть ли возможность параллельно с чтением стакана, получить точное время торгового сервера, когда он возник/изменился
 
С помощью OnQuotes записываю "слепки" стаканов в файл. Несложно узнать серверное время получения стакана пользователем (мной), например, с помощью функции getInfoParam('SERVERTIME').
Однако, очевидно, что время получения стакана и его генерации на сервере биржи будут отличаться -- требуется а) время чтобы доставить стакан, а также б) время на работу алгоритма. При этом компонента а) может от случая к случаю сильно разниться, соответственно, будет все время меняться и период запаздывания связанный с доставкой данных по стакану. В этой связи интересно знать, есть ли какой-либо маркер на сервере биржи отмечающий время генерации/изменения стакана и возможность его получить средствами quik | lua
Заявки не переносятся на следующий день, Проблема с переносом заявок на рынке FORTS, выставленных с использованием LUA. Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
 
Цитата
Sergey Gorokhov написал:
Иван Ру  ,

Да Вы не правильно поняли. Давайте еще раз почитаем вместе весь диалог.
Вот Вы говорите:
Цитата
Иван Ру   написал:
Однако, предложенное решение - использование названий параметров на русском, не работает, по крайней мере у меня
На что Вам был дан следующий ответ:
Цитата
Sergey Gorokhov   написал:
То что у Вас он не работает, означает что Вы что-то делаете не так.
Добавьте нужную транзакцию в Карман транзакций и сохраните ее от туда в tri файл.
Открыв полученный файл блокнотом  Вы увидите как команды должны выглядеть.
Т.е. Вы не знаете какие команды на русском указать в транзакции, а Вам сказали способ как это узнать.
Что именно из ответа Вам не понятно?
Ну в общем-то - ничего. Я же объяснил, что не знаком с процедурой вообще (при том что программирую на луа достаточно давно). По-видимому автор опускает большинство деталей, которые для него очевидны, а мне не известны.

"Т.е. Вы не знаете какие команды на русском указать в транзакции"

Почему? Читал рекомендации на форуме. Я их использовал, они не работают.
Хотя неплохо бы уточнить, о чем Вы вообще говорите, об изначальном коде в LUA и параметрах ордера?

Вот разберем простую фразу
"Добавьте нужную транзакцию в Карман транзакций "

Это замечательно, только я не понимаю, что автор имеет ввиду -- каким образом создать транзакцию и где? Каким образом добавить ее в карман транзакций который я прежде вообще ни разу не использовал. Ну давайте попробую обо всех деталях догадываться сам. Для начала, мне очевидно необходимо открыть соответствующее окно "Карман транзакций". У меня его пока нет, а при попытке открыть окно "Карман транзакций" у меня появляется меню "Создание кармана транзакций". Что мне там делать? Допустим я начинаю пытаться догадываться что делать дальше и предполагаю что надо выбрать "рынок ФОРТС фьючерсы" - Доступные транзакции: Ввод заявок, затем добавляю все поля "Доступные параметры". У меня появляется замечательное пустое окно. И что мне дальше с ним делать? Давайте я интуитивно предположу, что я, наверное, должен с помощью мышки перетащить туда заявку из окна "Таблица заявок". Перетащил.. бросил первую попавшуюся... нигде полей связаных со сроком ее жизни я вообще не вижу. Только дата экспирации (фьючерса).
Состояние счета - якорь и связь с графиками, Не удается увязать выбранную позицию в таблице "Состояние счета"с графиком, -- для того чтобы автоматически отображался выбранный инструмент
 
В таблице "Состояние счета" при выборе отдельных позиций (в моем случае - фьючерсы на отдельные инструменты) хотелось бы тут же видеть их отображение в окне "График", которое имеется на той же странице. Во всех таблицах это можно сделать нажимая на якорь в правом верхнем углу, однако в таблице "Состояние счета" такого якоря нет. Это крайне неудобно - для контроля за позициям постоянно приходится искать глазами нужный инструмент на других страницах.
Возможно я что-то не понимаю или сделал не так, или же такая необходимая опция для упомянутой таблицы недоступна. Если верно последнее - с чем связана такая ограниченность функционала?
Версия 7.6.1.1.
Заявки не переносятся на следующий день, Проблема с переносом заявок на рынке FORTS, выставленных с использованием LUA. Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
 
Цитата
Egor Zaytsev написал:
Раздел 3. Просмотр информации/Таблица «Карман транзакций»
Спасибо за разъяснения и информацию. К сожалению в Предложенном разделе не смог найти алгоритм автоматизации торговли с переносом заявок Насколько я понял из текста Вы предлагаете осуществлять некоторые действия вручную, но вручную я и так могу выставлять заявки, которые будут переноситься на следующий день. Или я что-то неправильно понял.  
Заявки не переносятся на следующий день, Проблема с переносом заявок на рынке FORTS, выставленных с использованием LUA. Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
 
Цитата
Egor Zaytsev написал:
Цитата
Иван Ру   написал:
Цитата
Sergey Gorokhov   написал:
Добавьте нужную транзакцию в Карман транзакций и сохраните ее от туда в tri файл.
Эту фразу я уже не раз читал, но, признаться, решительно не понимаю что она значит. Есть ли пример с кодом?
Здравствуйте,

Пример Вы можете получить сами, для этого и нужно открыть в QUIK таблицу карман транзакций, правой кнопкой мыши добавить нужную транзакцию (она отобразится в кармане), далее сохраняете ее в tri файл, открываете файл и смотрите параметры, которые и нужно будет применить.
Вот опять. Я никогда не работал таким образом и понятие не имею о чем речь + никакой инфо в справке луа и квик я не нашел, как и подробных примеров. Как человеку, который не сталкивался с проблемой понять смысл сказанного? Уточню вопросы.
1. Как мне "открыть"  карман транзакций? В каком разделе меню? В разделе "Окна" я не вижу окна с таким именем. В справке Квик вообще нет упоминания "кармана транзакций".
2. Каким способом я должен "добавить" транзакцию в неизвестный мне карман. Написав код в теле робота луа? Каким образом это должно выглядеть в виде кода? Какие операции / методы для этого используются? Или каким-то иным способом?
3. Каким образом я должен "сохранить" в tri файл транзакцию после добавления неизвестным способом в неизвестное окно. Каково полное имя файла, какой метод использовать для сохранения.
Заявки не переносятся на следующий день, Проблема с переносом заявок на рынке FORTS, выставленных с использованием LUA. Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
 
Цитата
Sergey Gorokhov написал:
Добавьте нужную транзакцию в Карман транзакций и сохраните ее от туда в tri файл.
Эту фразу я уже не раз читал, но, признаться, решительно не понимаю что она значит. Есть ли пример с кодом?
Заявки не переносятся на следующий день, Проблема с переносом заявок на рынке FORTS, выставленных с использованием LUA. Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
 
Выставленные через LUA заявки не переносятся на следующий день в тех случаях когда используется параметр EXPIRY_DATE с соответствующими значениями (будущая дата / 'GTC').
Работаю с фьючерсами на FORTS через Финам, версия программы последняя на сервере - 7.6.1.1.
Эта проблема уже обсуждалась на форуме
https://forum.quik.ru/messages/forum10/message14444/topic1590/#message14444
Однако, предложенное решение - использование названий параметров на русском, не работает, по крайней мере у меня. Квик отказывается их понимать и выдает ошибку
Такое впечатление, что интерпретатор вообще никак не реагирует на флаг "EXPIRY_DATE", заявка выставляется с сроком жизни до конца сессии, даже если туда забивать ошибочные данные, например, -- прошедшую дату.


Пример кода:
t = {
-- Задаем базовые параметры ордера
["CLASSCODE"] = FORTS , --заявки выставляются только на рынке FORTS
["SECCODE"] = SEC_CODE,
["ACTION"] = "NEW_ORDER",
["ACCOUNT"] = ACCOUNT, --задано в начале функции по умолчанию
["CLIENT_CODE"] = CLIENT_CODE, --задано в начале функции по умолчанию
["TYPE"]         = "L", -- лимитированные заявки
["OPERATION"] = tradeDir, -- направление продажи ('B' или 'S')
["PRICE"] = tostring(Price),
["QUANTITY"] = tostring(lots),
["TRANS_ID"] = tostring(uniq_trans_id),
["EXPIRY_DATE"] = 'GTC'
 }

res=sendTransaction(t);
графический интерфейс, библиотека для создания формы ввода
 
Цитата
Юрий написал:
Тоже заморачивался этой проблемой, но на одном сайте по моей просьбе сделали скрипт и после этого я пока обхожусь подобными штучками. Вот  http://quikluacsharp.ru/quik-qlua/primer-skripta-qlua-lua-vypolnyayushhego-torgovye-operatsii-v-terminale-quik/   вдруг кому поможет (для начинающих).
Такой интерфейс позволяет реагировать на события вроде клика мышкой, а вот ввести цифровые данные с клавиатуры - проблема
как в lua ежесекундно просматривать значение индекса РТС (не фьючерса, а именно индекса)?, таблицы с индексами
 
Цитата
Sergey Gorokhov написал:
приведите полный пример кода
Уточняющий вопрос - можно ли получить значение через getParamEx?
Зависание при редактировании графика
 
Цитата
тот самый написал:
Цитата
Иван Ру   написал:
Что за беда и как с ней бороться?
Версия 7.2.2.
скачать новую версию терминала и не засирать форум одним и тем
Прежде чем давать советы отучитесь от свинских манер.
Я использую ту версию, которую предоставляет и рекомендует брокер Финам.
пожелание - сделать кнопки в панели управления для LUA скриптов, или хотя бы горячие клавиши
 
Цитата
Sergey Denegin написал:
спасибо! будем очень надеяться. Вроде как это не сложно совсем сделать
Присоединяюсь к пожеланию. Вообще абсурдно что эта опция - уверен самая востребованная у множества трейдеров, - даже не удостоилась горячей клавиши. Много раз в день приходится запускать одно и то же меню.
Страницы: Пред. 1 2 3 4 5 След.
Наверх