Индикаторы на LUA. getCandlesByIndex отдаёт пустую таблицу.
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2017 17:53:21
Цитата
Василий Петров написал: Вы не поверите, не могу повторить ошибку. Её больше нет, мучался три дня )
Скорее всего дело в порядке наложения индикаторов. Поменяйте порядок - и все повторится.
Пасхалочка для Алексея Иванникова:
Прошу дополнить руководство по эксплуатации QLua в отношении папки LuaIndicators
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2017 16:04:55
И уберите сканирование в подпапках luaindicators всех файлов с расширениями кроме lua и luac - сразу многим полегчает.
Пасхалочка для Алексея Иванникова:
getNumCandles() не видит индикатор при нереносе скрипта через ночь
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2017 00:11:30
Цитата
Коля Маржин написал: Всем привет! Есть робот который должен работать круглосуточно без перезапусков по утрам. Сейчас с ним есть одна проблема: если квик не перезагружать утром, то getNumCandles() исправно работающий всю сессию выдаёт ноль в качестве количества свечек.
Что-то из серии:
local candles = getNumCandles(gazprom) while candles ==0 do sleep (1000) candles = getNumCandles(gazprom) end
- не помогает. Только перезапуск. Индикатор в это время на графике живой. Есть какие-нибудь советы?
P.S. иногда в процентах 10 случаев этой ошибки утром нет - робот спит ночью и утром в 10:00 продолжает работать
все правильно, так и должно быть. В момент утренней инициализации графики в моменте пусты и соответственно индикаторов еще тоже нет. После чего графики отрисовываются и индикаторы начинают рассчитываться.
автор скрипта не предусмотрел эту ситуацию, укажите ему на нее.
Пасхалочка для Алексея Иванникова:
CreateDataSource() и индикаторы
Пользователь
Сообщений: Регистрация: 30.01.2015
12.02.2017 16:24:47
Цитата
ROBOBORO написал: То есть из быстрых способов доступа к значениям индикатора остается только getCandlesByIndex? Или есть более быстрые способы?
собственно, единственный.
или рассчитывать значения индикатора в скрипте самому.
мге нравится второй способ, я использую именно его везде где это возможно
Пасхалочка для Алексея Иванникова:
Импорт линий и меток на график, Автоматизация рисования уровней на графике
Пользователь
Сообщений: Регистрация: 30.01.2015
12.02.2017 01:59:41
Цитата
Дмитрий Борисов написал: Здравствуйте. Для отображения логики торговли, в том числе разными людьми и стратегиями, на график одного и того же инструмента требуется поочередное нанесение наборов линий и меток. Для каждой новой истории приходится удалять предыдущий комплект линий и меток (это легко делается из контекстного меню графика), и вручную наносится новый комплект линий и меток по журнальным записям (вот это очень нудная процедура). Есть ли способ ИМПОРТА линий и меток из какого-либо файла, содержащего их параметры? Есть ли способ импорта хотя бы линий на график? Может быть, если не пакетом, то поштучно (и то поможет). Можно ли это реализовать, если такого импорта нет? Например, для текущей торговли будет удобно импортировать график выхода новостей. Для истории - восстанавливать логику графического анализа.
Организовать импорт меток или линий из внешнего источника (файл, электронная таблица или url) можно. Стандартных средств нет, но встроенный язык позволяет такое сделать при большом на то желании.
Пасхалочка для Алексея Иванникова:
CreateDataSource() и индикаторы
Пользователь
Сообщений: Регистрация: 30.01.2015
12.02.2017 01:56:41
Цитата
ROBOBORO написал: Можно ли при помощи CreateDataSource() получить значения индикаторов?
Нет.. Получать посредством createdatasource() можно только данные с биржи, а это котировки. Индикаторы рассчитываются на рабочем месте.
Пасхалочка для Алексея Иванникова:
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 30.01.2015
10.02.2017 11:52:50
Ну да, тогда о чем же эта тема? И почему бы в ваших индикаторах в просто не вставить "просто пропускайте их и все"? Делов-то.
Дело в том, что это совсем не так просто, как пишет Сергей Горохов. Иначе это было бы сделано в примерах индикатора из архива. Нужно делать дополнительный буфер свечей, в котором вырезаны все пропуски. После чего именно по этому буферу производятся вычисления. Также потребуется оглавление свечей, которое позволяло бы соотносить свечи между исходными (с пропусками) и свечами из буфера. Причем ссылки должны быть в общем случае двунаправленные, в обе стороны. И после вычислений результат проецируется на исходную нумерацию свечей
Очевидно, что этот вопрос в архитектуре терминала был упущен (как и многие другие) и теперь разработчики предлагают обходить эту проблему пользователям самомтоятельно, если они хотят писать индикаторы грамотно. Либо писать только для случая, когда на графике наложен только один источник для расчета.
В общем, очевидное недоваренное мясо, признать которое они не в силах.
В старой версии форума давал ссылку на информацию по созданному мной решению для экспорта данных из QUIK в AmiBroker x64, дублирую инфу здесь, если кому-то она может быт полезной:
Кому нужно - стучитесь в личку или по e-mail.
Коллега, ссылка ведет на страницу с описанием успешной разработки автоматизированной торговой системы, а не на то, что указано в названии ссылки и в теме.
Правильная ссылка должна быть такой:
Пасхалочка для Алексея Иванникова:
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 30.01.2015
07.02.2017 12:47:45
Цитата
Sergey Gorokhov написал: , Раньше, с этим были проблемы т.к. в разных ситуациях работало по разному. Теперь в 7.7 есть единый стандарт и надо придерживаться его. Если окажется что где-то стандарт не срабатывает это баг.
что говорит стандарт о времени пропущеннлй свечи? Оно nil или содеожит валидные значения?
а касается придерживаться - вот и расскажите, как это делать. На примере той же ema, построенной на минутеом графике от неликвидного инструмента, где пропуски идут чаще, чем период ema. Хотелось бы посмотреть на этот код от разработчиков в качестве руководства к действию.
Пасхалочка для Алексея Иванникова:
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 30.01.2015
07.02.2017 12:01:00
Цитата
Sergey Gorokhov написал: , Данные индикаторы, личная инициатив не более.
Хорошо, Сергей.
Но рецепт все равно нужен. Как рассчитывать индикаторы в случае графиков с пропусками.
Пасхалочка для Алексея Иванникова:
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 30.01.2015
07.02.2017 11:48:51
Цитата
Sergey Gorokhov написал: Здравствуйте, В будущем, возможно актуализируем.
Сергей Горохов.
Ваши индикаторы и ранее не работали (неправильно работали) в случае чтения значений с графиков, в которых есть пропущенные свечи. Раз уж выкладываете их от имени компании, уж приведите в порядок, чтобы их результаты соответствовали результатам встроенных в терминал. Иначе это выглядит странно - выкладывать в публичный доступ в качестве обучающего материала заведомо ущербные исходные тексты.
А заодно мы посмотрим, как компания ARQA предлагает нам работать с данными, получаемыми с таких графиков. Надеемся, что у вас есть рецепт ))) Сами-то индикаторы в терминале рассчитываете исходя из других данных, не с графиков.
Думается, рецептов у вас нет.
Спасибо.
Пасхалочка для Алексея Иванникова:
dofile
Пользователь
Сообщений: Регистрация: 30.01.2015
03.02.2017 15:03:35
Цитата
валерий написал: Использую 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 для перехвата ошибки
Пасхалочка для Алексея Иванникова:
Длительный доступ к Quik Junior
Пользователь
Сообщений: Регистрация: 30.01.2015
03.02.2017 10:23:44
Не всем )))
Пасхалочка для Алексея Иванникова:
Считывать значение с линий
Пользователь
Сообщений: Регистрация: 30.01.2015
02.02.2017 17:19:26
Пусть мне это зачтется на страшном суде )
Пасхалочка для Алексея Иванникова:
Считывать значение с линий
Пользователь
Сообщений: Регистрация: 30.01.2015
02.02.2017 14:44:58
Никак.
но выход есть - написать индикатор, который будет эмулировать поведение ьрендовой линии и читать значения этого индикатора. Типа такого:
Пасхалочка для Алексея Иванникова:
перекодировка индикатора с MQL5 в Lua, необходимо простой индикатор написанный в MQL5 перевести для работы в квике. Индикатор ICHI_OSC.
написал: В терминале мт5 есть встроенная функция для расчета индикатора ишимоку, которпя используется в этом коде.
в Квик такой функции нет, поэтому сначала нужно написать расчет индикатора ишимоку, а потом уже ваш "простенький" индикатор
Все можно, но это чуть дольше чем 5 минут)
в смысле нет функции расчета, там же есть сам индикатор Ишумоку.
он не доступен в виде готовой функции.
чиьать значения индикатора ишимоку с графика из другого индикатора в общем случае можно, но это крайне уродское решение и тоже непростое, если все делать грамотно. Ничуть не проще, чем написать функцию расчета ишимоку
Пасхалочка для Алексея Иванникова:
перекодировка индикатора с MQL5 в Lua, необходимо простой индикатор написанный в MQL5 перевести для работы в квике. Индикатор ICHI_OSC.
Пользователь
Сообщений: Регистрация: 30.01.2015
29.01.2017 18:23:01
В терминале мт5 есть встроенная функция для расчета индикатора ишимоку, которпя используется в этом коде.
в Квик такой функции нет, поэтому сначала нужно написать расчет индикатора ишимоку, а потом уже ваш "простенький" индикатор
Все можно, но это чуть дольше чем 5 минут)
Пасхалочка для Алексея Иванникова:
Производительность библиотеки bit
Пользователь
Сообщений: Регистрация: 30.01.2015
29.01.2017 16:13:48
Неожиданный результат:
Пасхалочка для Алексея Иванникова:
Ограничение времени на автоподключение днями недели
В таком варианте менее надёжно, требует автоматической авторизации, прерывает работу скриптов lua, сложно отслеживать время и гадости при запуске, возможна потеря настроек окон.
to all
Ещё вариант: возможность задать максимальное кол-во неуспешных попыток подключения подряд , после которых: а) интервал попыток изменяется, допустим на УУУ вместо ХХХ секунд , где YYY можно задать большим значением, 3600 секунд, к примеру. б) попытки прекращаются до срабатывания следующего условия "с такого то времени по такое то время" (на следующий день, к примеру).
Тогда контроль дней недели не нужен, а чрезмерного спама в сообщения не будет, вместо 999 сообщений об ошибке подключения. будет пару-тройку десятков.
можно ещё сделать события а) и б) через логическое ИЛИ - тогда каждый день во время, заданное в настройках попытки подключения будут частыми, а потом опять редкими.
рестарт скриптов луа - не аргумент, а вопрос к их автору. Скрипты нужно писать аккуратно.
потеоя настроек - это вопрос к пользователю. Что такого страшного водится в компьютере, что слетают настройки и какой алготорглвле при этом может вообще идти речь?
сложнлсть отслеживания времени - вы о чем? Планировщик это прекрасно делает.
а вот сложности со всякими дополнительными настройками -это явное зло. Квик и так уже является квестом под названием "где это выключается?"
Пасхалочка для Алексея Иванникова:
Ограничение времени на автоподключение днями недели
Пользователь
Сообщений: Регистрация: 30.01.2015
22.01.2017 14:34:43
Можно настроить события планировщика. В пятницу вечером выключать Квик, в понедельник утром -включать и вводить пароль.
последнее - если у вас. Нормальная идентификация, а не заумная
Пасхалочка для Алексея Иванникова:
Как получить Биржевой сбор по фьючерсам и по акциям?
Пользователь
Сообщений: Регистрация: 30.01.2015
21.01.2017 20:21:28
Прошу прощения.
Можно получить количество параметров, но не их список.
Извините
Пасхалочка для Алексея Иванникова:
Как получить Биржевой сбор по фьючерсам и по акциям?
1.3 Разделитель CSV формата теперь можно не указывать. Будет использоваться системная настройка Windows
Как вы определили системную настройку Windows?
из региональных настроек, очевидно.
Пасхалочка для Алексея Иванникова:
Экспорт по DDE в LibreOffice Calc, Как настроить экспорт?
Пользователь
Сообщений: Регистрация: 30.01.2015
20.01.2017 18:03:37
Цитата
Дмитрий Д написал: Я понимаю, что можно брать котировки с биржи или написать скрипт на Lua, но мне периодически нужна просто разовая выгрузка, и я не хочу завязываться на excel. В идеале подошел бы csv.
А служба поддержки этот форум не читает? Мне кажется, что это ошибка экспорта на стороне QUIK.
Пасхалочка для Алексея Иванникова:
Сохранение истории индикатора
Пользователь
Сообщений: Регистрация: 30.01.2015
19.01.2017 13:17:41
Нет, так нельзя. Но историю сохранять можно. Это не есть тривиальная задача,но и нобелевскую премию за ее решение тоже не дадут. Как иллюстрация : например индикатор умеет сохраняять свою историю
Пасхалочка для Алексея Иванникова:
Таблица обезличенных сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
18.01.2017 21:23:43
Это верно для тех инструментов, которые заказаны к получению.
если инструмент не заказан к получению, то открыть экранную таблицу обезличенных сделок необходимо -в этом случае терминал сам закажет обезличенных сделки по нужному инструменту.
Пасхалочка для Алексея Иванникова:
Таблица обезличенных сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
18.01.2017 21:20:41
Если вы заказали получение таблицы обезличенных сделок они будут приезжать в сервера всегда и будут доступны из луа вне зависимости от факта открытия экранной таблицы.
Пасхалочка для Алексея Иванникова:
Сортировка таблицы по возрастанию
Пользователь
Сообщений: Регистрация: 30.01.2015
18.01.2017 11:08:34
А лук - это лук.
эй, разработчики!
в любом форуме из коробки, даже бесплатном, даже самом тривиальном, можно исправлять сообщения и ошибки от телефонного т9.
вам не стыдно такое позорище напоказ выставлять?
Пасхалочка для Алексея Иванникова:
Сортировка таблицы по возрастанию
Пользователь
Сообщений: Регистрация: 30.01.2015
18.01.2017 11:06:50
Желанную = экранную
Пасхалочка для Алексея Иванникова:
Сортировка таблицы по возрастанию
Пользователь
Сообщений: Регистрация: 30.01.2015
18.01.2017 11:06:18
Например, выгрузить желанную форму в таблицу лук, применить таблетки.сорт и загрузить полученную таблицу в экранную форму
Пасхалочка для Алексея Иванникова:
Номер последней свечки (SetUpdateCallback)
Пользователь
Сообщений: Регистрация: 30.01.2015
14.01.2017 19:29:18
Нет. Такой возможности нет и быть не должно.
для того чтобы посмотреть, какой была свеча например в 12-00, нужно искать ее не по номеру, а по времени.
дело в том, что вам никто не гарантирует, что на начало дня у вас в терминале всегда будет одинаковое количество свечей каждый день.
также вам никто не гарантирует, что даже в течение дня у вас будут в наличии все свечи без пропусков : в какие-то моменты торговли могло не быть по любой причине и нумерация изменится
Пасхалочка для Алексея Иванникова:
Функция NumberToRGB(number), Функция преобразовывает одно число цвета в компоненты RGB (red, green, blue)
Пользователь
Сообщений: Регистрация: 30.01.2015
07.01.2017 11:32:49
Цитата
Михаил Понамаренко написал: Хотел раскрасить метку из Settings.line[1]["Color"]. Но функции, как получить RGB из числа не нашёл. Нужна такая функция или другое решение. Заранее спасибо!
rgb и есть число
Пасхалочка для Алексея Иванникова:
Сделки совершённые по рынку
Пользователь
Сообщений: Регистрация: 30.01.2015
04.01.2017 06:18:36
Не выйдет. Обезличенные сделки и стакан несинхронизированы по времени.
если ошибки нет - вызывайте createdatasource - и все будет хоккей.
Однако мне что-то помнится такое, что createdatasource возвращает что-то. Типа такого: 2 параметра, первый статус успеха, второй диагностика. Но на слово мне не верьте, проверяйте на тесте.
Есть ли надёжные способы проверки DataSource на успех, чтобы идти дальше только после успешного заказа данных? Спасибо.
Сначала проверьте наличие самого инструмента вызовом любой функции, например, получите его статические параметры или любой другой функцией. Если вернется значение успеха - CreateDataSource вам гарантированно создаст подписку на инструмент.
Пасхалочка для Алексея Иванникова:
Робот на Луа +API брокера
Пользователь
Сообщений: Регистрация: 30.01.2015
29.12.2016 17:02:02
Цитата
Космонавт написал: А можно прямо из луа отсылать хттп-запросы? зачем мне питон и пхп?
Да, конечно можно. в windows есть httprequest dll
Пасхалочка для Алексея Иванникова:
setmetatable
Пользователь
Сообщений: Регистрация: 30.01.2015
17.12.2016 23:33:56
Цитата
Старатель написал: А как это использовать? У меня не кэширует:
Код
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 не стоит применять.
Пасхалочка для Алексея Иванникова:
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 30.01.2015
15.12.2016 20:39:25
Цитата
Sergey Gorokhov написал: , Если Вы говорите что она повторяется значит у Вас есть примеры. Нам нужен пример, в идеале не старше месяца, чтобы провести адекватный анализ и найти причины. В частности нужна дата/время свечи, интервал графика, код инструмента/класса и кто брокер.
Ок, записал. При появлении нового прецедента отправлю вам на почту всю имеющуюся информацию.
Как с этим разбираться если история была ШЕСТЬ лет назад?
Цитата
написал: Подобные "несуразности" возникали у разных брокеров не только 6 лет назад, они имеют место и сейчас.
Приведите пример и мы будем разбираться.
сергей, вы на самом деле считаете, что я храню коллекцию таких граф ков, чтобы пред явить вам в момент когда вы их попросите? )))))
Пасхалочка для Алексея Иванникова:
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 30.01.2015
15.12.2016 18:30:46
Цитата
Sergey Gorokhov написал: , И что Вы предлагаете? Если график заведомо поврежден, надо чинить график, а не фильтровать данные в терминале. Или Вам известно что было 24го июня шесть лет назад?
Сергей.
Речь о следующем. График поврежден на компьютере брокера. Очевидно, что брокер сам подобную диверсию не устраивал. Значит, возникли какие-то обстоятельства, которые привели к тому что ПО, разработанное фирмой ARQA повело себя неправильно.
Вот с этим я и предлагаю разобраться.
Подобные "несуразности" возникали у разных брокеров не только 6 лет назад, они имеют место и сейчас. В довольно большом количестве. Основания - жалобы пользователей терминала QUIK, подкреплённые скриншотами.
Я их получаю, когда люди, заказавшие мне разработку, через какое-то время жалуются на проблему. После разбирательств оказывается,что проблема в покалеченных графиках.
Думаю,реакция пользователей вам понятна.
Пасхалочка для Алексея Иванникова:
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 30.01.2015
15.12.2016 18:08:35
Цитата
Sergey Gorokhov написал: Борис Гудылин , Еще раз, дело не в версии. Индикаторы ломаются потому что на графике дырка. А дырка на графике потому что на сервере брокера график поврежден. Естественно в обычной жизни такой ситуации не должно быть, однако причины мы выяснить не сможем, так как речь про историю шести летней давности. Вам нужно либо предусмотреть в индикаторах логику проверки свечей на графике, либо указать Вашему брокеру на проблему и он ее устранит.
Сергей.
Брокер использует ПО вашей разработки. Почему у него в графиках дырки - это лучше знать вам. Что очевидно - он не сам эти дырки запихивает в данные.
Вы же вместо того, чтобы устранить проблему, предлагаете пользователям обходить эти дырки, сооружая костыли.
Нужели на самом деле нет возможности привести ситуацию в порядок, чтобы у брокеров не возникали подобные проблемы?
-----------------
Я от пользователей получал кучу скриншотов, на которых есть косые данные на графиках. Например, свечи ohlc нет, а объём есть. Или другие столь же странные варианты. Конечно у них сразу же ломается любая алгоритмическая логика. Вы же понимаете, что на все косяки подобного рода заглушки поставить невозможно...
С ув.. и проч.
Пасхалочка для Алексея Иванникова:
Помогите с кодом LUA, подсчет сделок в баре
Пользователь
Сообщений: Регистрация: 30.01.2015
13.12.2016 23:28:48
Цитата
Сергей написал: Всем доброго времени суток! Прошу подсказать с кодом LUA Нужен индикатор в виде гистограммы (как объем) подсчитывающий кол-во сделок в баре, ТФ М1. Такое возможно написать на LUA?
здравствуйте.
да, написать такое можно, но с определенными ограничениями и не так чтобы на раз-два.. индикптлры на луа не предназначались для подобных задач
Пасхалочка для Алексея Иванникова:
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 30.01.2015
13.12.2016 13:32:01
Приличные компании не изменяют поведение своих продуктов задним числом, да еще и втихаря. Они заботятся о пользователях.
А в некоторых лапотных компаниях о таких изменениях не знает даже техподдержка.
Пасхалочка для Алексея Иванникова:
Событие изменения файла в LUA
Пользователь
Сообщений: Регистрация: 30.01.2015
11.12.2016 17:48:48
Цитата
Михаил Понамаренко (pmntrade.ru) написал: Здравствуйте! Как лучше обрабатывать событие изменения файла в LUA? Контроль размера файла не подходит. Контроль даты и времени изменения файла не нашёл. Спасибо!