Андрей, Проверьте в интерфейсе терминала строится ли тиковый график по RIM8? если нет, то и в Lua Вы его не получите, с причиной следует разбираться с брокером.
Если график строится, попробуйте поменять местами while и ds:SetEmptyCallback
Вопрос к бирже. Она транслирует открытый интерес по инструменту без привязки к какому-либо классу. А объем в разрезе конкретного класса. Т.е. если инструмент в классе SPBFUT и PSFUT Вы увидите суммарный открытый интерес по обоим классам а объем только по инструменту из SPBFUT. И еще раз делаем акцент на том что так транслирует биржа
GetItem запаздывает в индикаторе?
Пользователь
Сообщений: Регистрация: 23.01.2015
23.03.2018 13:38:16
Здравствуйте, Так и есть, на интервальных графиках, тик срабатывает раньше чем появляется запись в таблице обезличенных сделок.
Горячие клавиши
Пользователь
Сообщений: Регистрация: 23.01.2015
23.03.2018 10:37:10
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
функция обратного вызова для SetUpdateCallback(), как понять, по какому инструменту она сработала?
хотя, смущает запятая в конце строки, ее не должно быть
QLUA, вопросы начинающих.
Пользователь
Сообщений: Регистрация: 23.01.2015
21.03.2018 12:38:55
Цитата
Aidar написал: Имелось ввиду что на языке lua корректно следующее выражение или нет
Все равно не понятно. В выражении нет ничего что может вызывать такой вопрос. Просто складываются два числа которые возвращают функции H и L
Давайте договоримся что Вы запустите код через "Сервисы" - "Lua скрипты" и если он вдруг не заработает тогда Вы вернетесь и сообщите текст ошибки. Если ошибки нет, значит согласно синтаксису всё правильно.
Если треугольник рисуется на цене 100, что мешает прибавить 5 и тогда он нарисуется на 105, таким образом получите нужный эффект. Т.е. банально прибавить/отнять (в зависимости от стрелки) цифру к цене на которой рисуется фрактал.
Aidar написал: Здесь у вас производится непосредственно расчет фрактала, т.е. на основании значения переменной S квик поймет на какой свече выводить фрактал, или я не правильно понимаю?
Вы все правильно понимаете.
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
20.03.2018 14:30:03
Цитата
Aidar написал: Я так понимаю что Out 1,2 это индекс свечи на которой будет отображено TYPE_TRIANGLE_UP или TYPE_TRIANGLE_DOWN из Settings.line ?
Да верно Out1 и Out2 это номера свечек.
Цитата
Aidar написал: Мне не совсем понятно про ConvertValue(Settings,H(Out1))
ConvertValue преобразует данные согласно настройкам в Settings. Например там есть параметр Multiply в которой можно указать коэффициент на который умножаются значения индикатора. Или Round в котором можно указать округление.
Цитата
Aidar написал: и return tonumber(Settings.Horizontal_line),nil,nil
Индикатор FRACTALS ставит значения на прошлых свечках а не на текущих. в связи с чем, что-либо возвращать в return нельзя. Первый параметр, просто рисует горизонтальную линию. За это отвечает Horizontal_line.
function Squeeze(I,P)
return math.fmod(I-1,P+1)
end
Конкретно в приведенной части кода она нужна для того чтобы сжать массив it. нет смысла хранить в массиве все свечки, если для расчета индикатора нужны только свечки за указанный период (переменная P).
функция возвращает функцию. В lua это нормальное явление.
Некорректный ответ Trans2Quik.dll при включенном терминале (TRANS2QUIK_DLL_NOT_CONNECTED)
Пользователь
Сообщений: Регистрация: 23.01.2015
20.03.2018 07:07:34
Цитата
Сергей написал: Я почему-то ожидал что вы знаете, какие подводные камни могут "выплыть" при переходе с x86 на x64. Но никак не ожидал предложения "сравнить свою версию на Delphi с нашими C++ и C#". И найти отличия...
Использовать версию 1.3 не обязательно, тем более что Ваше приложение остается 32х разрядным. В связи с чем, предлагаем разобраться с версией 1.2.
Заранее отмечаем что ни у нас ни у кого-либо еще не возникало проблем с работой версии 1.2. именно из-за х64 битной ОС. А значит причину надо искать не в подводных камнях а в настройках проекта.
Для начала, проверьте банальные вещи: А именно, включен ли импорт транзакций в терминале QUIK (меню Сервисы - Экспорт/Импорт данных - Внешние транзакции)? Корректно ли указан путь к папке с терминалом QUIK в параметрах подключения? (особенно следует обратить внимание что в х64 битной системе две папки "Program Files") И наконец, проверьте наш пример если он работает, значит причина в некорректном коде Вашего приложения..
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
20.03.2018 05:30:47
Цитата
Aidar написал: local H_tmp={} -- объявление массива под значения High local L_tmp={} -- объявление массива под значения Low
Да верно.
Цитата
Aidar написал: local it = {[1]=0, l=0} -- объявление массива it где 1-му элементу массива присваиваем значение 0, элементу с индексом l присваиваем значение 0
Вы говорите очевидные вещи. Другой вопрос зачем нужен этот массив. Как можно заметить по коду в него попадают номера свечек, из которых потом ищется нужная свечка где и рисуется фрактал.
Все индикаторы на Lua
Пользователь
Сообщений: Регистрация: 23.01.2015
16.03.2018 13:26:23
Цитата
петя написал: а как настроить правильно и установить
В архиве есть reamde файл с инструкцией.
Все индикаторы на Lua
Пользователь
Сообщений: Регистрация: 23.01.2015
16.03.2018 13:25:41
Alexandr, Для того чтобы не было вопросов, как написать индикатор в lua. Зачем люди их пишут в Lua? Уже не к нам вопрос.
По данному обращению мы диагностируем проявление исправленной в версии сервера 5.18 ошибки, связанной с трансляцией некоторых полей в таблицу транзакций через серверы доступа. Проблема исчезнет после обновления серверного ПО у Вашего брокера, до этой версии.
Да прошу прощения, не заметил. Пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
OnChangeSettings
Пользователь
Сообщений: Регистрация: 23.01.2015
16.03.2018 06:49:31
s_mike@rambler.ru, Михаил, не понятно какого ответа Вы ожидаете. Позиция уже была озвучена
Цитата
Sergey Gorokhov написал: это пожелание на доработку, которое мы можем предложить зарегистрировать.
OnChangeSettings
Пользователь
Сообщений: Регистрация: 23.01.2015
16.03.2018 06:31:56
s_mike@rambler.ru, Отловить первый расчет индикатора на графике с определенный таймфреймом. Например случай когда на графике всего одна свеча которая меняется. В таком случае if index==1 не дает нужного результата, а OnChangeSettings как раз дает.
OnChangeSettings
Пользователь
Сообщений: Регистрация: 23.01.2015
16.03.2018 06:21:27
s_mike@rambler.ru, Михаил, То что функция не срабатывает при изменении таймфрейма не значит что ее нельзя использовать. Да она не решает конкретно одну описанную задачу, но она и не должна ее решать согласно документации. А значит, это пожелание на доработку, которое мы можем предложить зарегистрировать.
OnChangeSettings
Пользователь
Сообщений: Регистрация: 23.01.2015
16.03.2018 06:00:59
s_mike@rambler.ru, Михаил, в документации ничего не сказано что он должен вызываться при смене таймфрейма.
Цитата
Функция вызывается при редактировании свойств индикатора после нажатия кнопок «Применить» или «OK». Функция вызывается также при перезагрузке Рабочего места QUIK и при загрузке wnd-файла либо tab-файла, в которых сохранен график с индикатором.
Как начать читать файл не с первой строки, а со 2й?, исторические данные
Пользователь
Сообщений: Регистрация: 23.01.2015
16.03.2018 05:59:02
Андрей, А что мешает в цикле который указан по ссылке пройти по всем строкам до нужной? А не нужные, просто игнорировать. К слову разработчики Lua именно так и
Как подать заявку по рыночной цене?, с минимумом данных
Примеры полей транзакций Вы можете найти в документации на терминал QUIK (вызывается клавишей F1) -Раздел 6. Совместная работа с другими приложениями --Импорт транзакций ---Формат .tri-файла с параметрами транзакций ----Примеры строк, которые могут содержаться в файле
Цитата
Андрей написал: ['TRANS_ID'] = trans_id, (как задать этот параметр? откуда его получить, транзакция же еще не прошла, так как даже не подана заявка)
Этот параметр своего рода метка, которой Вы помечаете транзакцию. Его не нужно получать, его нужно придумать самостоятельно и указать. По этому номеру в дальнейшем, Вы сможете найти нужную заявку которая получилась в результате транзакции отправленной через Lua. Если не понятно, просто укажите 12345 и посмотрите что отобразится в таблице заявок в поле "ID транзакции"
Цитата
Андрей написал: ['ACCOUNT'] ="№ счета трейдера" , (где взять номер счета тредера, если это демо счет? Где его в Квике можно посмотреть?
Откройте форму ввода заявки в терминале и Вы его увидите нужный счет в поле "Торговый счет"
Цитата
Андрей написал: Как картинки выкладывать не подскажете?
инструкция по
Таблица обезличенных сделок
Пользователь
Сообщений: Регистрация: 23.01.2015
15.03.2018 10:02:50
Цитата
Let_it_go написал: На графике с помощью вашего метода их ведь нельзя получить.
CreateDataSource не работает в Lua индикаторах, только в обычных скриптах. В обычных скриптах, вызываете CreateDataSource с параметром INTERVAL_TICK там в OnAllTrade или через getItem получаете данные по обезличенным сделкам Открытый интерес в параметре open_interest Купля/продажа в параметре flags
Как начать читать файл не с первой строки, а со 2й?, исторические данные
Пользователь
Сообщений: Регистрация: 23.01.2015
14.03.2018 06:09:49
Андрей, Здравствуйте, Для чтения строк можно использовать io.lines пример по
понять демо или реальный qlua
Пользователь
Сообщений: Регистрация: 23.01.2015
14.03.2018 06:04:25
s_mike@rambler.ru, Михаил, нет никакого признака который бы отличал демо торги от не демо. Только если сам брокер введет какое-то обозначение.
понять демо или реальный qlua
Пользователь
Сообщений: Регистрация: 23.01.2015
14.03.2018 05:31:50
s_mike@rambler.ru, Михаил, но IP адрес у нашего демо только один. Даже если речь не про наш демо, а про брокерский, можно проверить ip и на всякий случай еще порт IPPORT
понять демо или реальный qlua
Пользователь
Сообщений: Регистрация: 23.01.2015
14.03.2018 05:06:57
Андрей, Здравствуйте, Самый надежный способ по IP адресу. Для этого используйте функцию getInfoParam с параметром IPADDRESS Подробнее в документации QLUA.chm глава "Сервисные функции", раздел "getInfoParam"
CreateDataSource Params
Пользователь
Сообщений: Регистрация: 23.01.2015
13.03.2018 12:15:54
Цитата
Борис Гудылин написал: Насколько корректно и из каких источников идет коррекция H и L на текущий момент?
У Вас в коде не указан параметр, значит данные берутся на основе OnAllTrade. Значит полученные свечки формируются на основе полного набора данных, без срезов.
Цитата
Борис Гудылин написал: Можно ли при этом доверять полностью значениям H(index) и L(index) или они, пусть и крайне редко, но могут незначительно отличаться от действительных (для полностью сформированных свечек)?
То же самое, у Вас в коде не указан параметр, значит данные берутся на основе OnAllTrade. Значит отличий от видимого графика не будет. Другой вопрос, что Вы можете получить свежие данные раньше чем они визуально отобразятся на графике.
Igor Golovin, Вы заказали данные, они попали в хранилище. Вы открыли 100 таблиц и в каждой что то заказали, QPILE увидите все заказанные данные, так как будто открыта одна таблица. QPILE работает с хранилищем, а не с таблицами.
работа с таблицекй всех сделок
Пользователь
Сообщений: Регистрация: 23.01.2015
13.03.2018 09:54:19
Здравствуйте, QPILE не работает с таблицами, а работает с хранилищем данных таблиц. Это значит что даже если Вы откроете несколько таблиц с разными фильтрами, то в QPILE Вы увидите все данные, так как будто у Вас открыта одна таблица, а не несколько. Если Вам нужно фильтровать данные, что это следует делать в коде самого скрипта, а не в интерфейсе.
Кроме того обращаем внимание, что QPILE признан устаревшим и мы его уже давно не развиваем. Рекомендуем перейти на использование QLUA.
order_num или ordernum?
Пользователь
Сообщений: Регистрация: 23.01.2015
13.03.2018 04:54:03
ivan, Номера сделок не уникальны, и дело совсем не в сроках, а в принципе. Разные биржи ничего не знают о номерах сделок друг друга. На срочном рынке есть вечерняя сессия которая повторно транслируется на утро следующего дня. Еще существуют так называемые кросс сделки, когда торгуешь сам с собой, а значит будет две сделки отличающиеся только направлением. На некоторых внебиржевых или зарубежных рынках, вообще нет нумерации и каждый день сделки начинают нумерацию с 1. Поэтому, мы считаем что уникальность сделки определяется не по номеру, а совокупно по четырем параметрам: Номер сделки Направленность сделки (покупка или продажа) Код класса инструментов Дата торговой сессии (не путать с датой сделки)
отдельно для срочного рынка можно считать, что если дата торговой сессии отличается от даты сделки, значит это дубль сделки вечерней сессии, а не новая сделка.
Что касается именно "фифо", то все зависит от конкретного рынка. Если мы говорим про наш фондовый и срочный рынок МБ, то там нумерация не сбрасывается уже десятки лет и врядли в ближайшие 10 сбросится, а значит нет необходимости об этом беспокоиться.
Приведенный код не является рабочим примером, он показывает только часть по заданному вопросу. Если нужен полный рабочий код то выглядит примерно так:
Код
Settings = {
Name = "имя индикатора" ,
MY_LOVE_PARAMETER = 300,
line = {
{
Name = "!!test",
Color = RGB(0, 255, 0),
Type = TYPE_LINE,
Width = 2
}
}
}
function Init()
return #Settings.line
end
function OnCalculate(indx)
if indx < Size () - Settings.MY_LOVE_PARAMETER then return end
end
Пароль инвестора
Пользователь
Сообщений: Регистрация: 23.01.2015
12.03.2018 05:03:41
Здравствуйте, Такую возможность может предоставить только Ваш брокер. Т.е. Вы можете попросить его создать еще одну просмотровую учетную запись для Ваших счетов.
Таблица обезличенных сделок
Пользователь
Сообщений: Регистрация: 23.01.2015
12.03.2018 05:02:24
Let_it_go, Здравствуйте, Лучше использовать CreateDataSource с параметром INTERVAL_TICK
Функция CreateDataSource
Пользователь
Сообщений: Регистрация: 23.01.2015
07.03.2018 15:09:24
Евгений, Здравствуйте, Данная тема не забыта. Но, к сожалению мы не можем назвать сроки реализации пожелания.
kbrobot.ru, К сожалению затруднимся прокомментировать у нас проблема не воспроизводится. все прекрасно работает именно с "\\"
Странное поведение io.popen
Пользователь
Сообщений: Регистрация: 23.01.2015
06.03.2018 14:21:53
kbrobot.ru, Вот так попробуйте: io.popen("G:\\2\\1.exe")
Ограниченное количество загружаемых скриптов LUA
Пользователь
Сообщений: Регистрация: 23.01.2015
06.03.2018 11:57:25
Здравствуйте, В QUIK нет ограничения на количество Lua скриптов, причина в чем то другом.
Странное поведение io.popen
Пользователь
Сообщений: Регистрация: 23.01.2015
06.03.2018 11:37:41
Здравствуйте,
В пути к файлу нужно указывать двойной слеш.
QLUA, вопросы начинающих.
Пользователь
Сообщений: Регистрация: 23.01.2015
05.03.2018 17:22:43
Цитата
Aidar написал: "Тиковый объем (англ. tick volume) – это количество тиков за некоторый период времени, соответствующее частоте изменений цены маркет-мейкером рынка и не связанное с объемом сделок."
Судя по определению, объем который Вы видите на графике, это не то что Вам нужно.
Цитата
Aidar написал: Извиняюсь за глупые вопросы,я пока что учусь QLUA
QLUA тут вообще не причем. Т.к. происходит непонимание на уровне того что Вам нужно, а не на уровне кода. Давайте вообще забудем про QLUA и посмотрим обычный терминал QUIK. В обычном терминале QUIK Вы где-нибудь видите нужное Вам значение?
Sergey Gorokhov написал: Aidar , Да такая возможность есть. например с тикового графика.
не совсем понятно как прописать.А если я хочу применять индикатор на разных таймфреймах?
Если Вам нужно получать свежие тики, то они и так попадают в OnCalculate, т.к. он срабатывает при каждом изменении. Если нужно получать тики за прошлые периоды, то это можно получить только через GetItem