С дебилами из поддержки СБЕРА по этому вопросу спорить бесполезно. Эти придурки, чтобы убрать СМС подтверждения, мне в VDS предложили USB-токен вставить. В общем это не лечится. Я предполагаю, что они технически не могут отключить это, так как софт им допиливает сторонняя организация и своих программистов у них нет, а делать заявку и платить за переделку, они от жадности задушатся. Меняйте брокера на ВТБ или Альфу, но в Альфе гемор с электронной подписью, раз в квартал у меня она ломалась, а перезаказ новой от суток.
-------------------------------------------------------------------------------------------------------------
--------------------------------------отправка сообщений в telegram------------------------------------------
-------------------------------------------------------------------------------------------------------------
function telegram_msg(tmsg,chat)
if TELEGRAM_ON then
if tmsg~=nil and tmsg~="" and chat~=nil and chat~="" then
local hour = tonumber(os.date("%H"))
local tURL="https://api.telegram.org"
--local tmsg = AnsiToUtf8(tmsg)
local dis_not = (hour>=tHourStart and hour<=tHourEnd) and "false" or "true" -- отключение звука сообщения согласно настроек config файла
local str = string.format("curl -X GET \"%s/bot%s/sendChatAction?chat_id=%s&action=typing",tURL,tToken,chat) -- бот печатает
local msg = os.execute('start /MIN '..str)
sleep(1500) -- время набора текста ботом
local str = "curl -X GET \""..tURL.."/bot"..tToken.."/sendMessage?disable_notification="..dis_not.."\" -d \"&parse_mode=html&chat_id="..chat.."&text="..tmsg.."\""
local msg = os.execute('start /MIN '..str)
else
mes(string.format("%s - %s - Сообщение [%s] не отправлено в чат %s", ScriptName, sec_code,tostring(tmsg),tostring(chat)),3)
end
end
end
-------------------------------------------------------------------------------------------------------------
--------------------------------------отправка стикера в telegram--------------------------------------------
-------------------------------------------------------------------------------------------------------------
function telegram_stick(tstick,chat)
LastTelPost=Timer
if TELEGRAM_ON and STICK_ON then
if tstick~=nil and tstick~="" and chat~=nil and chat~="" then
local hour=tonumber(os.date("%H"))
local tURL="https://api.telegram.org"
local dis_not = (hour>=tHourStart and hour<=tHourEnd) and "false" or "true"
local str = string.format("curl -X GET \"%s/bot%s/sendSticker?disable_notification=%s&parse_mode=html&chat_id=%s&sticker=%s",tURL,tToken,dis_not,chat,tstick)
local msg = os.execute('start /MIN '..str)
else
mes(string.format("%s - %s - Стикер %s не отправлен в чат %s", ScriptName, sec_code,tostring(tstick),tostring(chat)),3)
end
end
end
Добрый день. Как в течении дня (до 23.50) узнавать цену открытия утренней сессии? Попробовал getParamEx(class_code, sec_code, "AUCTPRICE").param_value), вроде бы устроило, но оказалось, что вечером это значения становится нулевым. Может ка-то по другому можно?
Станислав написал: И еще интересно, какие уведомления вы используете в своих скриптах, например, сделки и так отображаются в приложении брокера и более информативны чем просто текст.
Мой робот полностью сопровождает сделку и информирует о результатах, а со зверушкой веселее. Часто даже на буквы не смотрю, картинка все объясняет.
VargoR написал: Может быть, все-таки, чтобы не мучать пользователей тестирующих свои стратегии в Quik, добавить функционал загрузки старых данных в график Quik?
Этой проблеме сто лет в обед, она навряд ли будет решена, к сожалению. Вы быстрее освоите другие платформы для тестирования автоматических стратегий (tradingview, backtrader, ...). Альтернативно Вы можете автоматизировать устранение перемешивания, если умеете редактировать DAT файлы с свечами (я умею, но это не бесплатно и с ограничениями, наложенными форматом), и далее адаптировать свои скрипты, чтобы они работали с ограниченной по времени частью свечей.
Я так все и делаю, но это идиотизм идиотизм и извращение в чистом виде. Через одно место сделать можно, а просто выбрать файл и загрузить его в график нельзя. Это, какой-то, позор. Нормальному программисту это на 15 минут работы. Разработчики, пожалуйста, обратите, наконец-то, на этот вопрос внимание!
Andrey Golik написал: VargoR, загрузить такой файл дополнительно возможности нет. Можем предложить Вам заменить текущий файл с данными для построения графика по инструменту на файл с архивными данными, который есть у Вас. Однако, мы не знаем, за какой период у Вас собраны данные, поэтому корректность отображения после такой операции под вопросом. Для осторожности можно сделать резервную копию текущего файла SPBFUT_SiU3_1.dat из папки с терминалом. Файлы с данными для построения графика хранятся в папке archive.
Да я так и делаю, но вы понимаете как это осложняет работу с Quik? После переподчинения к серверу данные в таком графике перемешиваются с данными подменного инструмента, и приходится всё делать заново. А когда таких файлов десятки, то превращается в кошмар. Может быть, все-таки, чтобы не мучать пользователей тестирующих свои стратегии в Quik, добавить функционал загрузки старых данных в график Quik?
Для этого предназначено ПО - редактор архива данных для графиков. Скачать само ПО и документацию к нему можно по ссылке .
Вы меня, наверно, не правильно поняли. Мне не нужно конвертировать файлы DAT в TXT при помощи программы на которую вы мне дали ссылку. Я спрашивал как в именно в самом Квике в график загрузить нужный мне файл?
Здравствуйте. Уважаемые разработчики, добавьте пожалуйста функционал ручной сортировки (настройки) списка файлов в окне запуска скриптов Lua. Нужны две кнопки - Переместить в вверх и Переместить вниз, так как это у вас реализовано везде в настройках полей таблиц. Постоянно удалять все файлы и патом открывать их в нужном мне порядке это просто мучение. Заранее благодарю.
Тоже очень нужна данная функция. Окна таблиц создаются не в той вкладке где нужно, а там где окно с запуском скриптов. Сначала перетягивал, потом сделал паузу перед созданием таблицы, чтобы успевать переключаться на нужную вкладку, но это бред.
Кстати вопрос почему нельзя делать копию окна запусков скриптов, чтобы иметь его на каждой нужной вкладке?
Здравствуйте. Подскажите пожалуйста, как в Quik открывать в графике файлы с данными для графиков по типу SPBFUT_SiU3_1.dat по истекшим фьючерсам? Имеется острая необходимость тестирования данных временных периодов, но как загружать такие файлы в график Quik понять не могу. В свойствах диаграммы при нажатии изменить инструмент высвечиваются только фьючерсы с не истекшим временем экспирации. Переключатель - Только активные инструменты тоже никаких не влияет на отображение истекших фьючерсов. Как все же загружать исторические данные по истекшим фьючерсам в график Quik?
Добрый день. Да пожалуйста зарегистрируйте пожелание , чтобы функция DelAllLabels в окнах с несколькими графиками (областями построения) удаляло метки только в указанном в этой функции графике, а не во всём окне. И чтобы команда "Удалить - Все метки в диаграмме" - удаляло метки только из выбранной области построения, а не из всего окна. Так же как это реализовано с трендовыми линиями "Удалить - Все линии трендов и фигуры", где удаление производится только из выбранной области построения. Пример: имеется окно с двумя графиками с идентификаторами цен D_Graph1="Si1" и D_Graph2="Si2" команда DelAllLabels(ID_Graph2) должна удалять метки только из графика ID_Graph2. Метки в графике D_Graph1 должны оставаться на месте. Заранее благодарю.
Компилировать файл с настройками это за гранью добра и зла. Что программисту мешало сделать конфиг файл? А абсолютные пути к файлам это вообще лютейший ад.
Здравствуйте. Имеется окно графика Quik разделенное на два графика. У каждого графика имеется свой идентификатор цены. D_Graph1="Si1" D_Graph2="Si2" По какой-то неведомой причине команда DelAllLabels(ID_Graph1) удаляет метки из обоих графиков. Тоже самое и с командой DelAllLabels(ID_Graph2). Тоже удалятся метки из обоих графиков, хотя удаление требуется только из конкретно указанного.
Если делать удаление в ручную, "Удалить-Все метки в диаграмме", то тоже метки удаляются из обоих графиков (всего окна хотя написано в диаграмме), но вот если удалять трендовые линии "Удалить-Все линии трендов и фигуры в окне", то удаляются только линии того графика на на котором нажмешь удаление, и это правильно хоть и написано "в окне" Тогда почему метки удаляются из всех графиков? Можно сделать чтобы метки удалялись только из указанного графика а не из всего окна?
Огромная благодарность. Действительно в таблице текущих торгов есть поля с временем "Начало веч. Окончание веч."У фьючерсов время указано, так как они торгуются вечером, а у инструментов которые не торгуются в вечернюю сессию эти поля пустые.
Добрый день. Подскажите пожалуйста, существует ли возможность посредством Lua и Quik узнавать расписание торгов по нужному инструменту? В частности интересуют часы работы срочного рынка. Именно часы, а не статус торгов, или время закрытия торгового дня, или хотя бы будет ли сегодня торговаться вечерняя сессия или нет. Понятно, что расписание меняется редко, но иногда оно все же меняется, и нужно знать когда закрывать позицию (не оставлять на ночь) в конце дневной или вечерней сессии.
VargoR написал: dis_not = true and false or true dis_not = false and false or true дают одинаковые значение true? Ведь должны давать разные.если сделать такКод dis_not = true and true or false dis_not = false and true or false
приоритет логических операций определяется их порядком слева на право. -------------------------- В данных примерах первым исполняется AND потом OR true and false ==false true and true==true ----------------- в итоге имеем dis_not = (true and false) or true=(false or true)=true dis_not = (false and false) or true= true --------------------- dis_not = (true and true) or false=true dis_not = (false and true) or false =(false or false)=false ----------------- в результат всех операторов : true true true false ================= Резюме: Автор не знает булевой алгебры. читайте учебники.
Не знаю поэтому и спрашиваю. Учебники будем читать когда скрипт допишем:)
Еще оказывается. Так как мне переменная нужна была для сборки командной строки для телеграмм для параметра disable_notification, можно было результат получать в кавычках. dis_not = true and "false" or "true"а если потом нужно было boolean значение то пользоваться функцией function toboolean(str) local bool = false if str == "true" then bool = true end return bool end
Sergey Gorokhov написал: по правилам, раз нет скобок, то проверка по очереди распишите выражение на два сначала temp = true and false --получим false потом dis_not= temp or true --получим true
это то же самое что dis_not= true and false or true --получим true
Наконец то понял, так как первый результат false продолжает вычисляться второе выражение. Но если условие после равно истинно, мне нужно получать именно первый результат после and, независимо от того false оно или нет.
поменял код на dis_not = not true and true or false или
dis_not = not false and true or false все стало работать как нужно. Благодарю.
Видимо я что-то недопонимаю в вашем ответе. Ваш ответ рушит всю логику выражения.
вы написали "true and false, результат - false;"
Вы это выражение имели ввиду dis_not = true and false or true ?
Если речь о нем, то оно не дает false у меня оно дает true, хотя должно и просто обязано выдать false, так как после and стоит первым false, а условие после "=" истинно Пожалуйста напишите, какой результат по вашему должно дать выражение dis_not=true and false or true
"1) исчисляется true and false, результат - false" но результат НЕ false. Hезультат выполнения true. Хотя должен быть false.
Результат исчисления "true and false" - false , расхождений поведения программы с ожидаемым результатом нет. Просим Вас уточнить, каким образом Вы получили результат true для выражения "true and false".
Прилагаю скрин как я это делаю и какой результат получаю.
Anton Belonogov написал: Необходимо принимать во внимание порядок выполнения логических операций: конъюнкция ("and") имеет более высокий приоритет, чем дизъюнкция ("or").Рассмотрим приведенные Вами выражения: Кодdis_not = true and false or true 1) исчисляется true and false, результат - false; 2) исчисляется false (результат п.1) or true, результат - true.
В том то и дело, что должен быть приоритет у and а его в выражении dis_not = true and false or true нет вы написали результат "1) исчисляется true and false, результат - false" но результат НЕ false. Hезультат выполнения true. Хотя должен быть false. Выполните пожалуйста команду убедитесь.