Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
Vadim Ivanov, Можно попробовать спросить у биржи про какой-нибудь NTP источник, который они считают надежным и настроить Ваш компьютер на синхронизацию с ним.
Владимир Киселев написал: Из шапки темы по ссылке (от 17.05.2016 10:30:49):
Да это то с чего все началось. А закончилось оно сообщением от начальника тех поддержки, ссылка на которое как раз и была приведена.
Читаем по тексту на который указывает ссылка:
Цитата
Vitaly Skorobogatov написал: Ввиду того, что мы получили более чем достаточное вполне количество объективных обоснований того, что QPILE пока нужен и в ряде случаев QLUA его не заменяет - принятие решения о прекращении поддержки откладывается на неопределенный срок. За сравнительную информацию о недостатках LUA в QUIK спасибо, мы ее учтем и используем при дальнейшем планировании развития QLUA.
Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
Sergey Gorokhov написал: ЦитатаSergey Gorokhov написал: т.е, свечки с указанным временем существуют на графике? Например свечка 11:50:00 Вы говорите что скрипт выдает в ней 0, а на графике вообще есть свечка конкретно с временем 11:50:00 или нет.
т.к. речь про текущее значение на графике, а не про прошлое, вопрос можно читать так: в момент когда на Вашем компьютере было 11:50:00 - 11:50:20, на графике была свечка именно с временем 11:50:00 или нет, или она сформировалась позже?
Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
Здравствуйте, Уточните, а как на самом деле обстоят дела? т.е, свечки с указанным временем существуют на графике? Если нет, проще всего добавить условие на не равенство нулю, и только после него сохраняться в файл.
также, рекомендуем задуматься о переходе на QLUA т.к. в нем гораздо больше возможностей.
2) В каждой строке установите "Снять", поставьте галочку "Применить ко всем окнам" и нажмите "ок".
3) После этого, войдите в меню - Настройки> Торговля> Настройка счетов> удалите из "выбранных" все счета.
4) Затем войдите в меню Система> Заказ данных> Перезаказать данные> поставьте признаки "Торговые данные" и "Локальные справочники". Нажмите "перезаказать":
Если эти действия не помогут -
1) Войдите в меню - Настройки> Торговля> Настройка счетов> удалите из "выбранных" все счета.
2) Выключите программу, войдите в папку с программой Quik и удалите все файлы с расширениями dat/log, а так же файл настроек *.wnd К сожалению при последнем варианте, пропадут настройки окон в рабочем месте.
Leonid, Трансляция данных параметров по умолчанию отключена на стороне брокера. Если они Вам нужны, следует обратиться к брокеру с соответствующей просьбой.
dofile(getWorkingFolder().."\\LuaIndicators\\MA.lua")
function main()
func = MA()
t_id = AllocTable()
AddColumn(t_id,1,"Price",true,QTABLE_INT_TYPE,10)
AddColumn(t_id,2,"MA",true,QTABLE_INT_TYPE,10)
CreateWindow(t_id)
SetWindowCaption(t_id,"MA")
ds = CreateDataSource("TQBR", "LKOH", INTERVAL_M5)
sleep(100)
for i=1,ds:Size() do
ma_out=func(i, {Period=3, Metod = EMA, VType=ANY},{[i]=ds:C(i)})
tmp=InsertRow(t_id,-1)
SetCell(t_id,tmp,1,tostring(ds:C(i)),ds:C(i))
SetCell(t_id,tmp,2,tostring(ma_out),ma_out)
end
end
Время изменения стакана получаемого через OnQuotes, OnQuotes - есть ли возможность параллельно с чтением стакана, получить точное время торгового сервера, когда он возник/изменился
PFelix написал: И третье. Если Вы, конечно, правы относительно протокола UDP. Биржа, ЧТО, разными протоколами данные шлет? Ленту - одним (TCP, БЕЗ пропусков), остальное - другим?
Время изменения стакана получаемого через OnQuotes, OnQuotes - есть ли возможность параллельно с чтением стакана, получить точное время торгового сервера, когда он возник/изменился
PFelix написал: И третье. Если Вы, конечно, правы относительно протокола UDP. Биржа, ЧТО, разными протоколами данные шлет? Ленту - одним (TCP, БЕЗ пропусков), остальное - другим?
Если говорит о Московской бирже, то там UDP не используется, только TCP.
Mikhail Ran написал: 1. Поясните пож-та использование ds.
цитата из readme_LuaIndicators.txt:
Цитата
data_source - является не обязательным, указывает на таблицу, или источник DataSource
т.е. индикаторы совсем не обязательно использовать только в окне с графиком, можно и через функцию CreateDataSource, для этого и нужен параметр ds.
Цитата
Mikhail Ran написал: 3. Зачем в теле этой функции проверка условий (val_h > 0) и (val_l > 0)?
Причины уже не вспомнить, видимо была какая-то защита от некорректных данных. Эти индикаторы предоставляются "как есть" т.е. если Вам что-то не нравится в коде, смело меняйте так как Вам этого хочется.
Цитата
Mikhail Ran написал: 4. Поясните конструкцию Out = (O and O(I)) or (ds and ds:O(I)).
оно возвращает O(I) или ds:O(I) в зависимости от того что существует. если индикатор добавлен на график, то вернет O(I), если индикатор используется из DataSourceто вернет ds:O(I)
Цитата
Mikhail Ran написал: 5. О каком заглядывании в будущее говорил выше г-н Камынин?
Так и задайте этот вопрос г-ну Камынину.
Цитата
Mikhail Ran написал: 6. Наверное, в индикатор нужно добавить проверку на отсутствующие бары, которые могут возникнуть при остановках сервера, ведь в этом случае фракталы могут неправильно сформироваться.
Let_it_go, Потому что функции у Вас старые. Используйте последнее обновление.
И еще одно замечание Все функции требуют предварительного расчета начиная с индекса 1. Т.е. даже если нужен только последний индекс, все равно требуется провести цикл расчета начиная с самого первого индекса.
Условие исполнения, указывается в параметре EXECUTION_CONDITION см документацию на терминал QUIK -Раздел 6. Совместная работа с другими приложениями --Импорт транзакций ---Формат .tri-файла с параметрами транзакций
Старатель, Да, Вы правы, если говорить только про Lua, то больше ни на что не влияет, а значит можно сделать доп параметр. Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Время изменения стакана получаемого через OnQuotes, OnQuotes - есть ли возможность параллельно с чтением стакана, получить точное время торгового сервера, когда он возник/изменился
PFelix написал: 1. изменение таблицы, т.е. приход "новых" сделок (или Вы о другом)
Для таблицы обезличенных сделок, "приход" сделки и изменение таблицы, это одно и тоже.
Цитата
PFelix написал: 2. а разве сделки могут проходить как-то иначе (не между временными срезами).
Еще раз:
Цитата
Sergey Gorokhov написал: стаканы едут срезами, также как и таблица торгов, только срезы обновляются чаще. а таблица обезличенных сделок, едет сплошным потоком.
Значит, если была сделка, будет колбек OnAllTrade, но не факт что этот колбек попадет в срез стакана. Банально это значит что стакан может обновиться два раза, а между этими обновлениями OnAllTrade сработает десять раз.
Цитата
PFelix написал: Ну, и и к вопросу, если биржа транслирует сделки и изменения в стакане последовательно, а сервер брокера их также последовательно ретранслирует, то нарушений в последовательности быть не должно. Разумеется, стакан претерпевает от среза до среза несколько изменений. Важно, что все протранслированные сделки были ДО текущего состояния стакана, а те которые будут протранслированы позже, значит -- позже того же состояния стакана. Также прошу заметить: 1. я на этом не настаиваю, просто хочется понять как работают ваши алгоритмы.
Последовательность не гарантируется.
Цитата
PFelix написал: 2. разумеется, если я не прав (не так они работают, как я описАл), никто за несинхронизацию претензий к вам предъявлять не собирается.
Еще раз:
Цитата
Sergey Gorokhov написал: никакой синхронизации биржевых потоков со стороны QUIK нет, и не будет.
Старатель, Указанная галка влияет не только на функцию CalcBuySell, но и вообще на очень многое. В связи с чем, делать опцию только для конкретной функции или на оборот для всех, считаем не целесообразным. Лучше, сделать отдельную функцию, специально для настройки. Такой вариант устроит?
Trans2QuikAPI_1.3_x64 + QUIK 7.9.1.1 = TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND, Не удается добиться подключения к QUIK в варианте Trans2QuikAPI_1.3_x64 + QUIK 7.9.1.1
Проверьте внимательней какой путь указан в параметре lpcstrConnectionParamsString функции TRANS2QUIK_CONNECT Там должен быть указан путь к папке с нужным терминалом. например строка: "C:\QUIK"
Николай Камынин написал: По какому из этих двух условий сервер выставит лимитированную заявку.
На счет этого вопроса, в документации четко сказано:
Цитата
В случае срабатывания одного из условий прекращается проверка второго условия стоп-заявки. Одно из условий заявки можно не указывать. Если одновременно удовлетворены оба условия заявки, то заявка исполнится по условию «тэйк-профит».
см документацию на терминал -Раздел 5. Торговые операции клиента --Условные (стоп-) заявки пункт 5.
function func2(num)
if num==1 then
return "Hello World"
else
return "bad argument"
end
end
function func1()
mess = func2(1)
message(mess)
end
function main()
func1()
end
Zoya Skvorcova написал: ISR, падение терминала происходит по разным причинам. ДМП файлы разные. С количеством по умолчанию обращение от Вас зарегистрировано.
Т.е. причин, приводящих к падению еще и несколько? Ну тогда правду видно говорят о том, что у вас совсем плохо с тестированием. Так то в первый раз вижу столь сырую версию квика.
Не зная причин конкретного сбоя ПО, нельзя говорить о том что один сбой происходит по тем же причинам, что и другие. А вдруг это что-то новенькое, чего еще не было? Гадать по фотографии не наш метод, в связи с чем, для подтверждения нужен dmp файл.
А в чем собственно баг? Цена графика (красным) вполне по честному может не попадать в значения отображаемые на шкале. В связи с чем она всегда выводится отдельным маленьким окошком, которое расположено поверх шкалы. То что под этим окошком нарисована шкала не является багом. В связи с чем не понятно в чем заключается проблема.
Старатель, Подстановка работает если в настройках терминала, раздел Торговля - Котировки, установить "Брать сумму лучших". Это можно считать воркэраундом, пока ошибку не исправят. Собственно у меня настройка так и была установлена, поэтому и не воспроизводилось.
Сергей, Тогда это говорит о том что wav файлы которые не работают были собраны с использованием кодека, который в QUIK не поддерживается. К сожалению, решения нет, разве что пересобрать wav файл в каком-нибудь аудио редакторе.
PFelix, Давайте еще раз. Флаг расчет, а если конкретно (0x8000), для стоп заявки стоп-лимит в принципе не существует. Он может быть только и только при активации стоп заявки типа тейк профит. А значит ситуации когда "расчет" был а тейк профита не было в принципе быть не может, даже теоретически. И независимо от порядка слов в Вашем вопросе. Далее, если таки активировался тейк профит, то флага расчет, а если конкретно (0x8000), может не быть в случае если он тут же исполнился. Либо Вы говорите не про тот флаг, либо у Вас не понимание того что такое стоп заявка типа "тейк-профит и стоп лимит" если так готовы отправить очень подробное описание с картинками на Ваш email при запросе на поддержку quiksupport@arqatech.com
PFelix, А "не в сторону стоп-лосс" разве не тейк профит? Вы в курсе, что после срабатывания условия активации, работает либо стоп-лимит, либо тейк-профит и никак иначе?
Вы спрашиваете одно и тоже несколько раз но по разному. Ответ уже был дан. А для стоп-лимита, в принципе не может быть флага "расчет" (0x8000) ибо для этой стоп заявки он не существует.
green_X5 написал: А вне main никак не подписаться, чтобы упаковать подписку в отдельную функцию с вызовом не из main?
Функция CreateDataSource не предназначена для работы вне функции main или функций обратного вызова. Мы внесем это уточнение в документации при выпуске одной из будущих версий терминала QUIK. Приносим извинения за неудобства.
Время изменения стакана получаемого через OnQuotes, OnQuotes - есть ли возможность параллельно с чтением стакана, получить точное время торгового сервера, когда он возник/изменился
PFelix написал: Иными словами порядок следования событий свершения сделок и фиксации состояния стакана не нарушается и совпадает с порядком следования соответствующих калбеков?
стаканы едут срезами, также как и таблица торгов, только срезы обновляются чаще. а таблица обезличенных сделок, едет сплошным потоком. так что изменение обезличенных сделок легко может попасть между срезами стакана. И потом, никакой синхронизации биржевых потоков со стороны QUIK нет, и не будет.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Здравствуйте, Задачу можно решить через механизм работы с метками . Т.е. Lua скрипт добавляет на график метку (функция AddLabel) и в цикле следит за ней (функция GetLabelParams) сравнивая ее значения с текущей ценой. В случае преодоления текущей ценой заданных в метке значений, предпринимать действия.
Старатель, У нас проблема не воспроизводится. Пришлите для анализа архив всей папки с терминалом QUIK (без ключей доступа) на адрес quiksupport@arqatech.com архив следует паковать при закрытом термнале.