Здравствуйте, Для начала найдите нужную транзакцию в терминале (в этом Вам поможет брокер) Далее когда будет понятно какая транзакция Вам нужна и какие у нее должны быть параметры, создайте Карман транзакций и положите туда образец транзакции. Сохраните транзакцию из кармана в tri файл. Открыв tri файл блокнотом Вы увидите какие должны быть параметры. Останется только добавить их в API
Здравствуйте, Готового синтаксиса QLUA у нас к сожалению нет (возможно есть на просторах интернета). Для комфортной работы с QLUA вполне хватает синтаксиса Lua.
Здравствуйте, В QLUA отсутствует возможность работать с окнами терминала. Есть возможность решить задачу средствами WinApi, использование которого мы не одобряем, поэтому все действия на Ваш страх и риск.
Старатель написал: И как же получить таймфрейм одного индикатора из другого?
А зачем из другого? Если у них один источник данных то и таймфрейм у них будет один и тот же. А раз так, то его можно получить через getDataSourceInfo.
менять нужно в самом коде. у Вас видна настройка Hour_shift, возможно что в коде уже предусмотрено изменение часового пояса (зависит от того как написана функция f_last) попробуйте указать Hour_shift=2
Сергей написал: Вопрос, что могло измениться при чтении свечи?
Здравствуйте, Ничего в этом месте уже не менялось много лет Проблема во входных параметрах Проверьте что попадает в candle_data и candle_time и убедитесь что на графике действительно есть свеча с указанными датой и временем.
Цитата
Сергей написал: Как можно безболезненно перейти на QLUA с Qpile, если вообще возможно?
К сожалению простого пути нет, только переписывать с нуля
узнать имя передаваемой в функцию переменной нельзя. Но можно передать имя в качестве параметра функции (как в примере выше) debug позволяет узнать имя переменной, но ее вызов внутри функции вернет имя параметра функции а не имя переменной то есть в Вашем примере будет "perem=2" а не "A=2" как хотелось бы Поэтому других вариантов нет. Только передавать имя в качестве параметра
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Подскажите пожалуйста, а можно ли как то автоматически изменить и создать название тега графика по принципу: вот открыты все 5 минутные графики, и на этих графиках на график цены "навесить" тег содержащий стандартное название бумаги + свой текст ?
под "тегом" понимается поле "Идентификатор"? Если так то его автоматическое заполнение к сожалению не предусмотрено. Можем предложить зарегистрировать пожелание на доработку
Александр написал: Я понял и в курсе, что: "QPILE - этот язык не развивается."
Я говорю КАК БЫ РЕКОМЕНДАЦИЮ стратегического характера разработчикам QUIK ВООБЩЕ: - ДА, безусловно, использовать LUA, или какой другой мощный проф. язык, который "может ФСЁ", - НО И: ЗАДУМАТЬСЯ над тем, не прикрутить ли ЕЩЁ, ДОПОЛНИТЕЛЬНО: простой "язык для чайников". (выборки из таблиц данных, мат функции, экспорт вовне...)
Видимо не понимаете, любые "рекомендации" или пожелания на доработку относящиеся к QPILE будут отвергнуты. Если Ваше пожелание относится к Lua то это уже отдельный разговор.
Цитата
Александр написал: в окне подключения структура "OWN" - содержит первую строку (т.е. поле) - " Идентификатор* " - со звёздочкой (т.е. оно ключевое?) и которое я не создавал и в структуре таблицы по "Редактировать таблицу" (из правой кнопки мыши) - не вижу.
Поле "Идентификатор" является обязательным при экспорте, исключить его нельзя.
Здравствуйте, Обратиться к созданной QPILE таблице можно только из того же скрипта который ее создал по тегу "OWN" например
Код
n=GET_NUMBER_OF("OWN") 'узнаем количество строк в QPILE таблице
value=0
FOR i FROM 1 to n
my_row = GET_ITEM ("OWN", i) 'берем очередную строку из QPILE таблицы
value = value + GET_VALUE (my_row, "my_value") 'значения ключей соответствуют названиям колонок, указанным в секции описания параметров.
'дальше что-то делаем с полученным значением
END FOR
Есть проблема с неизвестным (произвольным) порядком обновления индикаторов
Причем тут "индикаторов" когда мы говорим о расчете по заданному числовому ряду?
Вот при чем:
Цитата
Еще такой вопрос - возможно ли на QLUA сделать какой-либо производный расчет от графиков инструментов, и перенести его в график QUIK для визуализации?
В данном месте говорится о возможности вывести произвольный расчет на график. А не о том как сделать этот самый произвольный расчет. Да есть моменты которые требуют внимания при реализации этого расчета и эти моменты зависят от решаемых задач которые известны только автору топика, а не Вам.
Цитата
s_mike@rambler.ru написал: Поток параметров и функция-индикатор могут менять свои значения не только в текущей (правой) свече, но и на истории. Даже Поток котировок в экстремальных случаях может изменяться в прошедшем времени, не так ли, Сергей?
Нет не так.
Цитата
s_mike@rambler.ru написал: И тот и иной подходы пригодны лишь для ммм.. "специфических" случаев.
для "специфических" случаев можно много чего придумать. Есть индикаторы которые при изменении одной свечи в источнике должны полностью проводить перерасчет, а есть те которым это не нужно. И Вы углубляетесь в специфику "частного" случая, а не общего как сами же говорили выше.
Цитата
s_mike@rambler.ru написал: И тут пользователь взял да сменил таймфрейм.
И? Что мешает получить новый таймфрейм? Получить настройки одного индикатора из другого действительно нельзя. Но таймфрейм это не настройка индикатора.
все по тому же полю flags но уже не для стоп заявки а для обычной или можно смотреть поле filled_qty "Исполненное количество" когда оно станет равно qty "Количество в лотах" делаем вывод что лимитированная заявка исполнилась.
Владимир Киселев написал: Вопрос именно в том как получить атрибуты и можно ли ими управлять до создания заявки создаваемой стоп-ордером.
Вы когда ставите стоп заявку, то сами указываете цену по которой выставится лимитированная заявка. Конечно если мы говорим о стоп заявке Тейк профит, то там заранее узнать цену лимитированной заявки никак нельзя.
Михаил, В общем случае как раз таки можно. Ведь речь идет о простом построении индикатора по произвольному набору данных. В частном случае, когда речь идет о сравнении двух разных источников, могут быть проблемы когда в одном источнике есть данные а в другом их нет.
Ivanco написал: как мне средствами QLUA вывести в окно Графика QUIK (нарисовать) какой-либо мой производный расчет или самописный новый индикатор?
На этот вопрос как раз и был дан ответ. И даже были приведены примеры.
Еще раз. Те примеры на которые была дана ссылка это и есть пример того как мне средствами QLUA вывести в окно Графика QUIK (нарисовать) какой-либо мой производный расчет. Плюс эти же самые примеры специально устроены так что в качестве значений функций можно подставлять произвольный набор чисел. Грубо говоря, скачиваете архив делаете по инструкции в нем и получаете в QUIK в два раза больше индикаторов (стандартные + те же самые го на Lua) Потом берете какой-либо понравившийся и делаете из него свой, после чего также можете увидеть в QUIK
Как это работает описано в справке QLUA.chm раздел "Индикаторы технического анализа"
Ivanco, Да можно. Вы говорите о функционале индикаторов в справке QLUA.chm раздел "Индикаторы технического анализа" Собственно те примеры которые были приведены выше это и есть примеры индикаторов. В архиве есть readme файл описывающий как ими пользоваться.
s_mike@rambler.ru написал: Если я неправ - пусть разработчики поправят.
Михаил, все правильно. QPILE работает не с интерфейсными таблицами, а с хранилищем данных. Для разных копий одной и той же таблицы хранилище все равно одно. Поэтому в QPILE Вы увидите все доступные (скачанные с сервера) данные. Данные скачиваются не все подряд, а в зависимости от того какие были заказаны с сервера. Заказать данные с сервера можно открыв таблицу.
Здравствуйте, Автоматическая установка разделителей для QLUA таблиц не поддерживается. Вы можете самостоятельно добавить разделители следующей функцией:
Код
function comma_value(n)
local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
return left..(num:reverse():gsub('(%d%d%d)','%1 '):reverse())..right
end
все правильно в PARAMETER вы указываете название переменной а значение переменной задаете через массив. см описание синтаксиса функции set_value Функция добавляет в массив «Name» элемент со значением «Value» и ключом «Key». Если массив уже содержал элемент с ключом «Key», то значение этого элемента заменяется на «Value». Функция возвращает модифицированный массив. MAP SET_VALUE(MAP Name, STRING Key, ANY Value)
то есть Value - это значение, а Key куда это значение попадет.
Здравствуйте, В параметре PARAMETER Вы указываете идентификатор колонки в которую требуется вставить данные В функцию ADD_ITEM передается массив в котором каждый элемент должен соответствовать идентификатору колонки в таблице и содержать данные для вставки.
в Вашем случае элемент массива
Цитата
Александр написал: mapt=set_value(mapt,"Emitent",sEmitent)
где "Emitent" - это идентификатор колонки который должен соответствовать PARAMETER, но не соответствует.
Vitaly Skorobogatov написал: Ввиду того, что мы получили более чем достаточное вполне количество объективных обоснований того, что QPILE пока нужен и в ряде случаев QLUA его не заменяет - принятие решения о прекращении поддержки откладывается на неопределенный срок. За сравнительную информацию о недостатках LUA в QUIK спасибо, мы ее учтем и используем при дальнейшем планировании развития QLUA.
В связи с принятием решения отложить вопрос, данную ветку форума закрываем.
Здравствуйте, Если скрипт работает постоянно то при переходе на новую сессию, когда происходит очистка данных на сервере, данные в QPILE также могут быть затерты. Для решения проблемы добавьте в логику робота проверку времени, так чтобы он ничего не делал во внеторговое время.
Сергей написал: 05/23/16 15:54:22 Order=21375094379 Таких пришло 6 штук. Подозреваю, все же это были две серии с разными trade_num. Позавчера я еще тупил с возможностью различать такие сделки :) Свежих нет.
Если будет пример лога с одинаковым trade_num мы рассмотрим эту проблему Так как сейчас нет уверенности в наличии шести колбеков по одной сделке, то вопрос считаем закрытым. Следует отметить что ранее от других пользователей подобных обращений не было, то есть вероятность ошибочного вывода крайне высока.
Как уже было сказано, для сделок допустимо не более 3х колбеков. и то наличие 3го колбека мы признали ошибкой в ПО, которая пока еще не исправлена.
Сергей написал: 1. есть ли вероятность, что колбек с меньшим trade.trade_num впервые придет позже, чем колбек с каким-то бОльшим trade.trade_num?
Да если сделки из разных классов
Цитата
Сергей написал: 2. у меня реально приходят по 6 вызовов иногда. Торгую через Промсвязьбанк. Что за параметры можно в сделке менять и дополнять по шесть раз?
Нужна конкретика и пример кода. Должно быть 2-3 колбека.
Павел Валин написал: Хотелось бы иметь возможность задавать в настройках возможность копирования последнего значения close на несуществующие свечи, что бы не возникало разрывов
Копирования данных с существующих на несуществующие свечи, это явная дезинформация. Даже если будет "возможность задавать в настройках", это трансляция несуществующих данных, а значит существует большая вероятность возникновения ошибочных выводов. Поэтому мы не будем регистрировать такое пожелание.
Цитата
Павел Валин написал: Приходится постоянно бегать дополнительно по сегодняшнему графику, и искать последнее известное значение.
В таблице текущих торгов есть поле цены последней сделки, можете смотреть его. Также, идея с циклом поиска нужных значений, это гораздо меньшее зло чем лживые данные на свечке.
Ivanco написал: Оно появилось в каком-то из обновлений, и чтобы данная функция начала работать нужно обновиться на актуальную версию QUIK? А с документацией как так вышло, она тоже обновится в каталоге QUIK?
Версия QUIK - 6.17.3.6
Здравствуйте, Да верно, поле появилось в одном из обновлений. Так как QLUA постоянно обновляется и является частью терминала, то справка на него обновляется также вместе с терминалом.
Сергей написал: предложенное решение выглядит очень рискованным
Можете придумать другой вариант, например запоминать сделки в Lua таблице
Код
function OnTrade(trade)
if not [trade.trade_num] then
[trade.trade_num]=true
...
end
end
Цитата
Сергей написал: По инструменту А заявка была исполнена за две сделки А1 и А2, причем, по первой OnTrade сработал 6 раз, по второй 3 раза и по другому инструменту тоже 3 раза, и все это было жутко перемешано:
Так не должно быть (если говорить о боевом доступе) должно быть максимум два, редко три колбека. Но смотреть нужно со стороны брокера.
Цитата
Сергей написал: getItem("FUTURES_CLIENT_HOLDING",i).totalnet посмотреть... только эта таблица обновляется жутко редко. Наверно, где-то в настройках можно это время уменьшить, но все равно.
В настройках терминала это не управляется. С данным вопросом необходимо обратиться к брокеру.
Цитата
Сергей написал: Не припомните ли вы обсуждение какого-либо более быстрого и надежного способа?
У Вас свои критерии, если для Вас сделки надежнее биржевых таблиц, значит смотрите сделки.