Борис Гудылин, Проблема у нас не воспроизводится. Просьба, уточнить как именно меняется инструмент. Какие индикаторы установлены, какие-то из Ваших, или встроенные?
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 23.01.2015
16.12.2016 15:59:02
Цитата
Борис Гудылин написал: Я про количество индикаторов (типа несколько десятков) в одном окне.
А что не так с количеством индикаторов? Несколько десятков это не много.
Цитата
Борис Гудылин написал: И про график длиной в 5000 свечек.
На сервере есть ограничение в 3000 свечек, все остальное накапливает терминал.
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 23.01.2015
16.12.2016 15:27:12
Борис Гудылин, Возможность предварительной настройки пользовательских индикаторов была убрана.
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 23.01.2015
16.12.2016 14:42:26
Борис Гудылин, Пришлите пожалуйста Ваш код индикатора.
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 23.01.2015
15.12.2016 19:56:28
s_mike@rambler.ru, Если Вы говорите что она повторяется значит у Вас есть примеры. Нам нужен пример, в идеале не старше месяца, чтобы провести адекватный анализ и найти причины. В частности нужна дата/время свечи, интервал графика, код инструмента/класса и кто брокер.
Как с этим разбираться если история была ШЕСТЬ лет назад?
Цитата
s_mike@rambler.ru написал: Подобные "несуразности" возникали у разных брокеров не только 6 лет назад, они имеют место и сейчас.
Приведите пример и мы будем разбираться.
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 23.01.2015
15.12.2016 18:17:28
s_mike@rambler.ru, И что Вы предлагаете? Если график заведомо поврежден, надо чинить график, а не фильтровать данные в терминале. Или Вам известно что было 24го июня шестьлет назад?
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 23.01.2015
15.12.2016 13:45:20
Борис Гудылин, Еще раз, дело не в версии. Индикаторы ломаются потому что на графике дырка. А дырка на графике потому что на сервере брокера график поврежден. Естественно в обычной жизни такой ситуации не должно быть, однако причины мы выяснить не сможем, так как речь про историю шести летней давности. Вам нужно либо предусмотреть в индикаторах логику проверки свечей на графике, либо указать Вашему брокеру на проблему и он ее устранит.
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 23.01.2015
15.12.2016 13:33:24
Борис Гудылин, Класс FEG это иностранная площадка, она есть далеко не у всех брокеров. По всей видимости, график каким-то образом поврежден на стороне сервера. Вам нужно обратиться к брокеру указав на проблему.
AddColumn
Пользователь
Сообщений: Регистрация: 23.01.2015
15.12.2016 13:00:08
Здравствуйте, К сожалению точной формулы нет, так как конечный результат напрямую зависит от выбранного шрифта. Можно взять за правило что width примерно означает количество символов.
Вызов RSI
Пользователь
Сообщений: Регистрация: 23.01.2015
15.12.2016 11:02:00
Индикатор RSI строится по EMA, которому нужен расчет по предыдущим значениям. Скорее всего проблема именно в этом. Прогоните цикл для корректного расчета for i=1,ds:Size() do a=func(i, {Period=12, VType="Typical", round=7}, ds) end
Вызов RSI
Пользователь
Сообщений: Регистрация: 23.01.2015
15.12.2016 10:43:23
Здравствуйте,
Цитата
Космонавт написал: Спотыкается на строчке внутри индикатора:
Constantin написал: Правильно написали - время у свечи должно быть, ведь этот параметр существует. Остальные параметры - nil. Плюс свойство exists (или как там оно называется) должно быть установлено в false.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 23.01.2015
13.12.2016 12:17:52
Здравствуйте, Действительно, в 7.6 поведение изменилось. В предыдущих версиях, на пропущенных свечках время выводилось, а вместо цены был 0. Данное поведение было признано некорректным, так как 0 означает наличие данных, а не их отсутствие. В связи с чем, начиная с 7.6 на пропущенных свечках выводится nil по всем параметрам (в том числе и по времени). И это правильно, так как отсутствие свечи это отсутствие данных. Однако, к сожалению, данное исправление по ошибке не попало в список изменений. Приносим извинения за неудобства.
В качестве решения, Вам нужно добавить в скрипте проверку на наличие данных, примерно следующим образом:
Код
function OnCalculate(indx)
-- если новый день, то сохраняем цену начала дня
if T(indx) and T(indx).hour <= 10 and T(indx).min == 0 then
price_begin_day = O(indx)
end
return price_begin_day
end
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 23.01.2015
12.12.2016 10:24:01
Здравствуйте, Описанная проблема у нас не повторяется. Единственное, есть версия, что ошибку возвращает какой-то другой, параллельно работающий, скрипт. Проверьте этот момент. Если разобраться не получится, просьба прислать для анализа, на адрес quiksupport@arqatech.com копию всей папки с проблемным терминалом QUIK (без ключей доступа). В письме укажите ссылку на эту ветку форума.
Программировать на Луа для Плазы
Пользователь
Сообщений: Регистрация: 23.01.2015
10.12.2016 06:47:54
Здравствуйте, Чисто теоретически, если писать на чистом Lua (не QLua), это возможно. Но как оно будет на практике, сказать затруднительно.
Кажется ошибка в OnCalculate в версии 7.6
Пользователь
Сообщений: Регистрация: 23.01.2015
09.12.2016 06:47:34
Здравствуйте, Просьба уточнить по какому инструменту строится график. Заранее спасибо.
Скорость обработки
Пользователь
Сообщений: Регистрация: 23.01.2015
09.12.2016 06:38:33
Космонавт, Вы можете сами проверить. Обработается, но позже чем надо.
Двойное OnDepoLimit, Два раза вызывается функция.
Пользователь
Сообщений: Регистрация: 23.01.2015
09.12.2016 06:31:41
bulat, Вопрос не совсем понятен, колбек и так должен быть один. Скорее всего у Вас не два одинаковых колбека, а два разных. Догадываемся что они отличаются видом лимита (параметр limit_kind) В таком случае достаточно добавить в событии проверку на вид лимита.
Код
function OnDepoLimit(dlimit)
if dlimit.limit_kind==0 then
message("Текущий остаток по бумагам "..tostring(dlimit.currentbal))
end
end
Отрисовка графиков в Quik 7.5.0.72, Не обновляются данные на графиках W и MN
Пользователь
Сообщений: Регистрация: 23.01.2015
09.12.2016 06:18:40
Здравствуйте, Версия 7.6 требует свежей версии сервера QUIK. Если брокер не обновил сервер то терминал 7.6 к нему не подключится с ошибкой вида "Неверная версия протокола" Единственная рекомендация не обновляться пока брокер обновит сервер.
Проблема с функцией SetSelectedRow()
Пользователь
Сообщений: Регистрация: 23.01.2015
08.12.2016 13:59:11
Andrei2016, 1) Это только Ваше мнение. Наша реализация от него отличается. Не видим причин менять реализацию. 2) Для таких случаев существует список изменений, который присутствует в каждом обновлении. 3) Да мы добавили свое событие и срабатывает оно после LBUTTONDOWN. Это наше право как разработчика, так как аналога события QTABLE_SELCHANGED в стандартных функциях Windows нет, а оно нужно.
Скорость обработки
Пользователь
Сообщений: Регистрация: 23.01.2015
08.12.2016 13:43:26
Графики (а мы говорим о графиках) строятся по таблице обезличенных сделок, которая транслируется одним сплошным потоком.
Скорость обработки
Пользователь
Сообщений: Регистрация: 23.01.2015
08.12.2016 13:38:52
Цитата
Космонавт написал: Разве Дата Сорс с колбеком не многопоточны?
Нет
Последняя доступная версия QUIK
Пользователь
Сообщений: Регистрация: 23.01.2015
08.12.2016 12:37:32
Цитата
ISR написал: При переходе с 7.5 на 7.6 пропало подключение: Неверная версия протокола. Серверы открытия. Ждать обновления брокера?
Да, верно.
Поле "Тек. чист. поз." в таблице Ограничения по клиентским счетам.
Пользователь
Сообщений: Регистрация: 23.01.2015
08.12.2016 12:36:39
Цитата
Юрий Юдицкий написал: т.е. проблема неверного отображения ГО упирается только в версию? ок, буду иметь ввиду
С момента выхода версии 5.17 уже прошло очень много лет, поэтому не исключено что в старой версии были какие-то проблемы. Вы можете это легко проверить. Сделайте резервную копию всей папки с терминалом. Потом установите обновление и проверьте. После этого верните обратно содержимое папки из резервной копии.
не получать сделки премаркета
Пользователь
Сообщений: Регистрация: 23.01.2015
08.12.2016 09:25:01
Здравствуйте, Только внутри кода.
Скорость обработки
Пользователь
Сообщений: Регистрация: 23.01.2015
08.12.2016 08:54:23
Цитата
Космонавт написал: Грамотно ли будет local num_candles превратить в local num_candles[sec]. Ведь возникают риски, что две сделки про разным акциям произойдут одновременно, и с этой переменной произойдёт каша, на неё будут претендовать две акции. или я заблуждаюсь?
У Вас переменная num_candles и так заполняется в зависимости от бумаги. То есть никакой каши не произойдет.
Видимо Вы не совсем понимаете что такое события. Попробуем объяснить. События это функция которая вызывается терминалом при определенных обстоятельствах. То есть когда Вы пишите "s=OnConnected ()" то это Вы вызываете функцию OnConnected, а не терминал. Соответственно делая так "s=OnConnected ()" Вы не получите нужного результата, так как функция сработает не тогда когда надо, а тогда когда Вы ее вызовите.
Вам надо написать так:
Код
s=false
function OnConnected(flag)
s=true
end
function OnDisconnected()
s=false
end
В таком случае, когда Вы запустите код, переменная s=false Когда терминал вызовет функцию OnConnected, она сработает и переменная станет s=true Когда терминал вызовет функцию OnDisconnected, она сработает и переменная станет s=false
Denis написал: Stanislav Tvorogov , спасибо! Еще вопрос: на что повлияет усли уменьшить размер сообщения, посылаемого при проверке связи с сервером в процессе работы? По умолчанию стоит 128.
На работу никак не повлияет. Может повлиять на достоверность показателей в информационном окне (Система - О программе - Информационное окно).
Что срабатывает быстрее?
Пользователь
Сообщений: Регистрация: 23.01.2015
06.12.2016 05:34:56
Текущая таблица, Таблица обезличенных сделок и Стакан едут разными никак не синхронизированными потоками. Поэтому никакого жесткого порядка в их поступлении нет.
Ошибка в обработке события нажатия кнопки мышки на шапку таблицы
Пользователь
Сообщений: Регистрация: 23.01.2015
05.12.2016 11:26:50
Здравствуйте!
Информация получена, проблема изучается. Постараемся в ближайшее время дать ответ.
Добавьте в колбек условие проверки на дату. Если она не сегодняшняя, то данные просто игнорировать.
Как не получать все тики через SetUpdateCallback
Пользователь
Сообщений: Регистрация: 23.01.2015
05.12.2016 09:54:17
Цитата
Космонавт написал: Сейчас записей в таблице обезличенных сделок нет.
Если минутки, то таблица обезличенных сделок совершенно не причем. Интервальные графики формируются сервером и отправляются пользователю независимо от таблицы обезличенных сделок.
К сожалению так как Вы полностью игнорируете задаваемые вопросы, то объяснить происходящее крайне затруднительно
Как не получать все тики через SetUpdateCallback
Пользователь
Сообщений: Регистрация: 23.01.2015
05.12.2016 09:45:59
Космонавт, Еще раз, сейчас важно не то как себя ведет робот, а то реально записи в таблице есть или нет. Если до запуска робота они есть, то в роботе колбек не сработает. Если нет, то робот их закажет и сработает колбек. Другой вопрос, а должны ли они вообще там быть до торгов. Это уже зависит от того что это за данные. Если пятничные, значит Вы подключились к серверу до смены торговой сессии. Хотя это странно, обычно брокера меняют торговую сессию гораздо раньше чем за пол часа до торгов. И я все еще надеюсь что интервал у Вас тиковый. Хотя и на этот вопрос ответа не последовало.
Как не получать все тики через SetUpdateCallback
Пользователь
Сообщений: Регистрация: 23.01.2015
05.12.2016 09:32:24
Космонавт, Не, Вы не ответили на вопрос. И от ответа, будет зависеть объяснение происходящему.
Хорошо, раз диалога не получается постараюсь рассказать как это работает. Скорее всего, мы с Вами говорим про тиковый интервал, не так ли? Потому что если говорить о других интервалах то поведение немного уже другое. Функция установленная в SetUpdateCallback срабатывает только при получении информации терминалом. Просто так она сработать не может. Откройте в терминале тиковый график, подождите пока он загрузится. И закажите точно такой же график через CreateDataSource, и посмотрите сами что поедет через SetUpdateCallback. А приедет туда только свежая информация.
Поэтому возникает вполне логичный вопрос, как у Вас срабатывает функция когда с Ваших слов таблица уже прогрузилась. А срабатывает она скорее всего потому что таблица на самом деле не прогрузилась. А происходит перезакачка данных из-за смены даты. Но это лишь теория, так как ответа от Вас не прозвучало.
Как не получать все тики через SetUpdateCallback
Пользователь
Сообщений: Регистрация: 23.01.2015
05.12.2016 09:16:13
Цитата
Космонавт написал: В субботу сервер брокера работал и прогрузил сделки пятницы в полном объёме
Ну да, сервер брокера прогрузил. Но мы же говорим не про сервер брокера а про терминал QUIK. Вопрос все еще в силе.
Цитата
Вы уверены что Все сделки в КВИК уже давно прогружены? Или же как раз в процессе загрузки данных срабатывает функция mycallbackforallstocks?
Как не получать все тики через SetUpdateCallback
Пользователь
Сообщений: Регистрация: 23.01.2015
05.12.2016 09:13:52
Вы уверены что в субботу данные у Вас не закачиваются повторно?
Как не получать все тики через SetUpdateCallback
Пользователь
Сообщений: Регистрация: 23.01.2015
05.12.2016 09:13:29
Цитата
Космонавт написал: Да, однозачно уверен. Я осознанно жду пока все сделки прогрузятся вплоть до времени 18-50 (конец сессии) и только потом клацаю на запуск робота
Нет не уверены. Вы ждете до времени 18-50 в пятницу, а речь про субботу.
Вы уверены что Все сделки в КВИК уже давно прогружены? Или же как раз в процессе загрузки данных срабатывает функция mycallbackforallstocks?
Как не получать все тики через SetUpdateCallback
Пользователь
Сообщений: Регистрация: 23.01.2015
05.12.2016 08:47:01
Цитата
Космонавт написал: 1. Почему все тики (с самого начала) начали обрабатываться в субботу? К моменту запуска робота Таблица всех сделок уже давно прогрузилась!
Поясните что такое в Вашем понимании "обрабатывается"?
Космонавт написал: в итоге я буду получать данные каждый раз при пробеге цикла, а не по апдейту?
Тоже верно
Отладка скриптов Lua для Quik., Как произвести отладку скрипта?
Пользователь
Сообщений: Регистрация: 23.01.2015
05.12.2016 06:58:27
Цитата
Виктор Столетов написал: Ведь к свечам текущего тайм-фрэйма графика я и так имею доступ с помощью функций O(i), C(i), L(i),H(i),V(i),T(i).day и т.д., после отработки Oncalculate. Зачем же мне использовать функцию getCandlesByIndex?
getCandlesByIndex имеет смысл использовать если требуется получить доступ не к текущему графику. О чем Вы сами говорили выше. При этом другой график может отличаться чем угодно. Таймфреймом, инструментом, или даже быть другим индикатором.