Коля Маржин написал: Всем привет! Есть робот который должен работать круглосуточно без перезапусков по утрам. Сейчас с ним есть одна проблема: если квик не перезагружать утром, то getNumCandles() исправно работающий всю сессию выдаёт ноль в качестве количества свечек.
Что-то из серии:
local candles = getNumCandles(gazprom) while candles ==0 do sleep (1000) candles = getNumCandles(gazprom) end
- не помогает. Только перезапуск. Индикатор в это время на графике живой. Есть какие-нибудь советы?
P.S. иногда в процентах 10 случаев этой ошибки утром нет - робот спит ночью и утром в 10:00 продолжает работать
все правильно, так и должно быть. В момент утренней инициализации графики в моменте пусты и соответственно индикаторов еще тоже нет. После чего графики отрисовываются и индикаторы начинают рассчитываться.
автор скрипта не предусмотрел эту ситуацию, укажите ему на нее.
Дмитрий Борисов написал: Здравствуйте. Для отображения логики торговли, в том числе разными людьми и стратегиями, на график одного и того же инструмента требуется поочередное нанесение наборов линий и меток. Для каждой новой истории приходится удалять предыдущий комплект линий и меток (это легко делается из контекстного меню графика), и вручную наносится новый комплект линий и меток по журнальным записям (вот это очень нудная процедура). Есть ли способ ИМПОРТА линий и меток из какого-либо файла, содержащего их параметры? Есть ли способ импорта хотя бы линий на график? Может быть, если не пакетом, то поштучно (и то поможет). Можно ли это реализовать, если такого импорта нет? Например, для текущей торговли будет удобно импортировать график выхода новостей. Для истории - восстанавливать логику графического анализа.
Организовать импорт меток или линий из внешнего источника (файл, электронная таблица или url) можно. Стандартных средств нет, но встроенный язык позволяет такое сделать при большом на то желании.
Ну да, тогда о чем же эта тема? И почему бы в ваших индикаторах в ftp://ftp.quik.ru/public/INDICATORS.zip просто не вставить "просто пропускайте их и все"? Делов-то.
Дело в том, что это совсем не так просто, как пишет Сергей Горохов. Иначе это было бы сделано в примерах индикатора из архива. Нужно делать дополнительный буфер свечей, в котором вырезаны все пропуски. После чего именно по этому буферу производятся вычисления. Также потребуется оглавление свечей, которое позволяло бы соотносить свечи между исходными (с пропусками) и свечами из буфера. Причем ссылки должны быть в общем случае двунаправленные, в обе стороны. И после вычислений результат проецируется на исходную нумерацию свечей
Очевидно, что этот вопрос в архитектуре терминала был упущен (как и многие другие) и теперь разработчики предлагают обходить эту проблему пользователям самомтоятельно, если они хотят писать индикаторы грамотно. Либо писать только для случая, когда на графике наложен только один источник для расчета.
В общем, очевидное недоваренное мясо, признать которое они не в силах.
В старой версии форума давал ссылку на информацию по созданному мной решению для экспорта данных из QUIK в AmiBroker x64, дублирую инфу здесь, если кому-то она может быт полезной: Экспорт в AmiBroker x64
Кому нужно - стучитесь в личку или по e-mail.
Коллега, ссылка ведет на страницу с описанием успешной разработки автоматизированной торговой системы, а не на то, что указано в названии ссылки и в теме.
Sergey Gorokhov написал: s_mike@rambler.ru , Раньше, с этим были проблемы т.к. в разных ситуациях работало по разному. Теперь в 7.7 есть единый стандарт и надо придерживаться его. Если окажется что где-то стандарт не срабатывает это баг.
что говорит стандарт о времени пропущеннлй свечи? Оно nil или содеожит валидные значения?
а касается придерживаться - вот и расскажите, как это делать. На примере той же ema, построенной на минутеом графике от неликвидного инструмента, где пропуски идут чаще, чем период ema. Хотелось бы посмотреть на этот код от разработчиков в качестве руководства к действию.
Sergey Gorokhov написал: Здравствуйте, В будущем, возможно актуализируем.
Сергей Горохов.
Ваши индикаторы и ранее не работали (неправильно работали) в случае чтения значений с графиков, в которых есть пропущенные свечи. Раз уж выкладываете их от имени компании, уж приведите в порядок, чтобы их результаты соответствовали результатам встроенных в терминал. Иначе это выглядит странно - выкладывать в публичный доступ в качестве обучающего материала заведомо ущербные исходные тексты.
А заодно мы посмотрим, как компания ARQA предлагает нам работать с данными, получаемыми с таких графиков. Надеемся, что у вас есть рецепт ))) Сами-то индикаторы в терминале рассчитываете исходя из других данных, не с графиков.
валерий написал: Использую dofile для постоянной подгрузки данных в виде таблицы из текстового файла типа: qq={113.00,113.00,-0.99,-1.03,-0.79,-0.93,-0.66,-0.84,} Подлиннее конечно. Но раз в минут 15-20, луа сообщает об ошибке: " '}' expected near '<eof>' ". Похоже он обращается к еще не закрытому и недописанному файлу. Некритично, так как продолжает работать, но неприятно. Может что посоветуете?
послветую использовать pcall или xpcall для перехвата ошибки
s_mike@rambler.ru написал: В терминале мт5 есть встроенная функция для расчета индикатора ишимоку, которпя используется в этом коде.
в Квик такой функции нет, поэтому сначала нужно написать расчет индикатора ишимоку, а потом уже ваш "простенький" индикатор
Все можно, но это чуть дольше чем 5 минут)
в смысле нет функции расчета, там же есть сам индикатор Ишумоку.
он не доступен в виде готовой функции.
чиьать значения индикатора ишимоку с графика из другого индикатора в общем случае можно, но это крайне уродское решение и тоже непростое, если все делать грамотно. Ничуть не проще, чем написать функцию расчета ишимоку
В таком варианте менее надёжно, требует автоматической авторизации, прерывает работу скриптов lua, сложно отслеживать время и гадости при запуске, возможна потеря настроек окон.
to all
Ещё вариант: возможность задать максимальное кол-во неуспешных попыток подключения подряд , после которых: а) интервал попыток изменяется, допустим на УУУ вместо ХХХ секунд , где YYY можно задать большим значением, 3600 секунд, к примеру. б) попытки прекращаются до срабатывания следующего условия "с такого то времени по такое то время" (на следующий день, к примеру).
Тогда контроль дней недели не нужен, а чрезмерного спама в сообщения не будет, вместо 999 сообщений об ошибке подключения. будет пару-тройку десятков.
можно ещё сделать события а) и б) через логическое ИЛИ - тогда каждый день во время, заданное в настройках попытки подключения будут частыми, а потом опять редкими.
рестарт скриптов луа - не аргумент, а вопрос к их автору. Скрипты нужно писать аккуратно.
потеоя настроек - это вопрос к пользователю. Что такого страшного водится в компьютере, что слетают настройки и какой алготорглвле при этом может вообще идти речь?
сложнлсть отслеживания времени - вы о чем? Планировщик это прекрасно делает.
а вот сложности со всякими дополнительными настройками -это явное зло. Квик и так уже является квестом под названием "где это выключается?"
Дмитрий Д написал: Я понимаю, что можно брать котировки с биржи или написать скрипт на Lua, но мне периодически нужна просто разовая выгрузка, и я не хочу завязываться на excel. В идеале подошел бы csv.
А служба поддержки этот форум не читает? Мне кажется, что это ошибка экспорта на стороне QUIK.
Нет, так нельзя. Но историю сохранять можно. Это не есть тривиальная задача,но и нобелевскую премию за ее решение тоже не дадут. Как иллюстрация : например этот индикатор умеет сохраняять свою историю
Это верно для тех инструментов, которые заказаны к получению.
если инструмент не заказан к получению, то открыть экранную таблицу обезличенных сделок необходимо -в этом случае терминал сам закажет обезличенных сделки по нужному инструменту.
Если вы заказали получение таблицы обезличенных сделок они будут приезжать в сервера всегда и будут доступны из луа вне зависимости от факта открытия экранной таблицы.
для того чтобы посмотреть, какой была свеча например в 12-00, нужно искать ее не по номеру, а по времени.
дело в том, что вам никто не гарантирует, что на начало дня у вас в терминале всегда будет одинаковое количество свечей каждый день.
также вам никто не гарантирует, что даже в течение дня у вас будут в наличии все свечи без пропусков : в какие-то моменты торговли могло не быть по любой причине и нумерация изменится
Михаил Понамаренко написал: Хотел раскрасить метку из Settings.line[1]["Color"]. Но функции, как получить RGB из числа не нашёл. Нужна такая функция или другое решение. Заранее спасибо!
если ошибки нет - вызывайте createdatasource - и все будет хоккей.
Однако мне что-то помнится такое, что createdatasource возвращает что-то. Типа такого: 2 параметра, первый статус успеха, второй диагностика. Но на слово мне не верьте, проверяйте на тесте.
Есть ли надёжные способы проверки DataSource на успех, чтобы идти дальше только после успешного заказа данных? Спасибо.
Сначала проверьте наличие самого инструмента вызовом любой функции, например, получите его статические параметры или любой другой функцией. Если вернется значение успеха - CreateDataSource вам гарантированно создаст подписку на инструмент.
Старатель написал: А как это использовать? У меня не кэширует:
Код
s = setmetatable({}, { __index = function (t, i)
local result = print ( 'Считаем...' ) or i * i
t = result
return result
end })
print (tostring(s[ 3 ]))
print (tostring(s[ 3 ]))
Результат:
Цитата
Считаем... 9 Считаем... 9
старатель. При копировании текста из одного сообщения в другое чудесный форум превратил t[i] просто в t.
невозможно общаться. Как в арке такую халтуру приняли в виде сайта...
позвоните мне скайпом mikemsk - проще словами, чем здесь мучиться.
function func (v)
return v * v
end
s = {
f = function (v)
local r = s.r
if not r then
r = func(v)
s.r = r
end
return r
end
}
print (tostring( s.f ( 3 )))
print (tostring( s.f ( 3 )))
Функция s.f() запоминает вычисленное значение и при повторном обращении возвращает раннее вычисленное значение. Можно ли описать её через setmetatable? PS: возвращать она должна раннее сохранённое значение, независимо от переданного аргумента при повторном вызове.
setmetatable из числого луа можно использовать для таблиц (хаки не принимаем во внимание). К функциям setmatatable не стоит применять.
Sergey Gorokhov написал: s_mike@rambler.ru , Если Вы говорите что она повторяется значит у Вас есть примеры. Нам нужен пример, в идеале не старше месяца, чтобы провести адекватный анализ и найти причины. В частности нужна дата/время свечи, интервал графика, код инструмента/класса и кто брокер.
Ок, записал. При появлении нового прецедента отправлю вам на почту всю имеющуюся информацию.
Sergey Gorokhov написал: s_mike@rambler.ru , И что Вы предлагаете? Если график заведомо поврежден, надо чинить график, а не фильтровать данные в терминале. Или Вам известно что было 24го июня шесть лет назад?
Сергей.
Речь о следующем. График поврежден на компьютере брокера. Очевидно, что брокер сам подобную диверсию не устраивал. Значит, возникли какие-то обстоятельства, которые привели к тому что ПО, разработанное фирмой ARQA повело себя неправильно.
Вот с этим я и предлагаю разобраться.
Подобные "несуразности" возникали у разных брокеров не только 6 лет назад, они имеют место и сейчас. В довольно большом количестве. Основания - жалобы пользователей терминала QUIK, подкреплённые скриншотами.
Я их получаю, когда люди, заказавшие мне разработку, через какое-то время жалуются на проблему. После разбирательств оказывается,что проблема в покалеченных графиках.
Sergey Gorokhov написал: Борис Гудылин , Еще раз, дело не в версии. Индикаторы ломаются потому что на графике дырка. А дырка на графике потому что на сервере брокера график поврежден. Естественно в обычной жизни такой ситуации не должно быть, однако причины мы выяснить не сможем, так как речь про историю шести летней давности. Вам нужно либо предусмотреть в индикаторах логику проверки свечей на графике, либо указать Вашему брокеру на проблему и он ее устранит.
Сергей.
Брокер использует ПО вашей разработки. Почему у него в графиках дырки - это лучше знать вам. Что очевидно - он не сам эти дырки запихивает в данные.
Вы же вместо того, чтобы устранить проблему, предлагаете пользователям обходить эти дырки, сооружая костыли.
Нужели на самом деле нет возможности привести ситуацию в порядок, чтобы у брокеров не возникали подобные проблемы?
-----------------
Я от пользователей получал кучу скриншотов, на которых есть косые данные на графиках. Например, свечи ohlc нет, а объём есть. Или другие столь же странные варианты. Конечно у них сразу же ломается любая алгоритмическая логика. Вы же понимаете, что на все косяки подобного рода заглушки поставить невозможно...
Сергей написал: Всем доброго времени суток! Прошу подсказать с кодом LUA Нужен индикатор в виде гистограммы (как объем) подсчитывающий кол-во сделок в баре, ТФ М1. Такое возможно написать на LUA?
здравствуйте.
да, написать такое можно, но с определенными ограничениями и не так чтобы на раз-два.. индикптлры на луа не предназначались для подобных задач
Михаил Понамаренко (pmntrade.ru) написал: Здравствуйте! Как лучше обрабатывать событие изменения файла в LUA? Контроль размера файла не подходит. Контроль даты и времени изменения файла не нашёл. Спасибо!