Получение максимума и минимума за определенное количества свечей, Нужен совет
Пользователь
Сообщений: Регистрация: 23.01.2015
18.01.2018 12:58:15
Цитата
Дмитрий написал: можно индикатор для этих целей использовать
Можно, но только не стандартный. Те же фракталы ищут min/max на заданном периоде, а в одной секунде количество тиков не определено. Можете взять код из примеров и попробовать переписать под свои нужды.
Получение максимума и минимума за определенное количества свечей, Нужен совет
К сожалению не с первого раза обратил внимание что речь про секундные интервалы. Трудно следить за перепиской когда два оппонента.
Для секундных интервалов готового решения нет. тк. в самом терминале их нет. Только цикл.
Получение максимума и минимума за определенное количества свечей, Нужен совет
Пользователь
Сообщений: Регистрация: 23.01.2015
18.01.2018 12:46:11
Цитата
Дмитрий написал: Да тиковые данные есть у меня, мне не хочется их циклом обегать, а сразу получить готовые максимумы как для минутных интервалов
Сразу получить не получится. Просто потому что в терминале этих данных нет. Только высчитывать Другой вопрос в том кто их будет высчитывать, Ваш скрипт или готовый индикатор. Например индикатор фракталов может подойти.
Получение максимума и минимума за определенное количества свечей, Нужен совет
Пользователь
Сообщений: Регистрация: 23.01.2015
18.01.2018 12:44:32
sav 312, mx = max(bar.high,mx) mn = min(bar.low,mn)
Получение максимума и минимума за определенное количества свечей, Нужен совет
Пользователь
Сообщений: Регистрация: 23.01.2015
18.01.2018 12:37:24
Цитата
Дмитрий написал: Понятно, то есть сервер не дает секундные данные, а только тиковые
Посмотрите данные в таблице обезличенных сделок. Если там данных нет, значит брокер действительно не включил для Вас тиковые данные
Получение максимума и минимума за определенное количества свечей, Нужен совет
Пользователь
Сообщений: Регистрация: 23.01.2015
18.01.2018 12:35:46
sav 312, А зачем все? сравнивайте текущее значение с предыдущим вот и всё
Получение максимума и минимума за определенное количества свечей, Нужен совет
Получение максимума и минимума за определенное количества свечей, Нужен совет
Пользователь
Сообщений: Регистрация: 23.01.2015
18.01.2018 11:56:19
sav 312, Начнем с того что функции math.min и math.max принимают только список аргументов, не таблицы. И тем более они не понимают таблицы состоящие из некоторого набора параметров. А getCandlesByIndex как раз таки возвращает таблицы состоящие из параметров. Т.е. чтобы найти min/max Вам в любом случае придется делать цикл, который пробежится по всем свечкам которые вернул getCandlesByIndex. А раз будет цикл, то и функции math.min и math.max применять нет особого смысла, ибо в этом же цикле можно определить min/max через банальный if. Т.е. через getCandlesByIndex запрашиваете все нужные свечки. Потом цикл который берет из них значение и ищет min/max Вот и весь алгоритм.
Получение максимума и минимума за определенное количества свечей, Нужен совет
Пользователь
Сообщений: Регистрация: 23.01.2015
18.01.2018 11:46:33
sav 312, Здравствуйте, А в чем состоит проблема? В том как получить данные? Или в том как из этих данных найти min/max?
Порядок отслеживания процесса выполнения транзакций
Пользователь
Сообщений: Регистрация: 23.01.2015
18.01.2018 10:55:11
kroki, Если на заявке не Ваш UID, значит она была выставлена с другой учетной записи. И терминал тут не имеет значения (WebQUIK или любой другой
Другая учетная запись, это может быть брокер, которого Вы попросили за Вас выставить заявку, или это у Вас несколько учетных записей. Учетная запись для WebQUIK (или любой другой терминал) и для QUIK может быть одна, а может быть для каждого терминала своя. Также для одного терминала может быть зарегистрировано несколько учетных записей, например мужа и жены.
OnTransReply, Поле balance при снятии заявки
Пользователь
Сообщений: Регистрация: 23.01.2015
16.01.2018 14:32:24
Добрый день,
Ошибка, из-за которой на сервер доступа вместе с ответом на транзакцию не передавалась информация об остатке заявки, исправлена в версии 5.17 серверного ПО QUIK.
Приносим вам свои извинения за доставленные неудобства.
Досрочный переход на следующую итерацию цикла, При определенном условии часть кода внутри цикла не нужно выполнять.
Пользователь
Сообщений: Регистрация: 23.01.2015
11.01.2018 22:44:54
Здравствуйте, В lua нет оператора continue Об этом можно найти информацию в интернете
Не отображается стоп-заявка в таблице заявок
Пользователь
Сообщений: Регистрация: 23.01.2015
09.01.2018 17:46:54
Татьяна, Здравствуйте, Стоп заявки отображаются в таблице "стоп заявок". Когда стоп заявка исполнится, только тогда она появится в таблице "заявок"
number value
Пользователь
Сообщений: Регистрация: 23.01.2015
09.01.2018 17:29:24
Как уже говорилось:
Цитата
Sergey Gorokhov написал: Для более точного анализа нужна полная версия кода.
Либо, если не хотите выкладывать весь код, воспроизведите ошибку на более простом коде.
number value
Пользователь
Сообщений: Регистрация: 23.01.2015
09.01.2018 17:06:35
lergen, Это ничего не меняет. Вы обращаетесь к элементу как к таблице: st.n_f[i] при том что st.n_f является числом
Простой пример, который демонстрирует такую же ошибку
Код
X = 123
y = X[1]
в примере, нельзя обратиться к элементу [1] числа X. т.к. у чисел не бывает "элементов".
а вот если бы X была бы таблицей, то ошибки бы не было.
Код
X = {123}
y = X[1]
number value
Пользователь
Сообщений: Регистрация: 23.01.2015
09.01.2018 16:38:56
lergen, Скорей всего причина в том что элемент st.n_f является числом, а Вы обращаетесь к нему как к таблице. Для более точного анализа нужна полная версия кода.
Гарантируется ли упорядоченность результата getQuoteLevel2()?
Пользователь
Сообщений: Регистрация: 23.01.2015
09.01.2018 15:37:24
Цитата
kroki написал: но в документации это не упомянуто.
Документация на терминал QUIK -Раздел 3. Просмотр информации --Таблица котировок
Цитата
Таблица содержит лучшие текущие котировки на покупку/продажу, упорядоченные по параметру «Цена».
kroki написал: В каких реальных случаях вызываются OnDepoLimitDelete(), OnMoneyLimitDelete(), OnFuturesLimitDelete() (первые два для limit_kind >= 0, внутренние не особо интересны)? Кто-нибудь встречал эти вызовы в реале?
Они вызываются когда брокер удаляет лимит. Необходимость удалить лимит возникает в случае если его неправильно задали, а это к счастью происходит крайне редко.
Цитата
kroki написал: Кстати, а зачем вызываются ползовательские callbacks с limit_kind < 0? Какие осмысленные действия он бы мог сделать (хотя бы в теории)?
Лимиты с limit_kind < 0 являются техническими и действительно для конечного пользователя не несут смысла. Но тем не менее они есть и по этому колбеки срабатывают.
Как получить всего заявок по инструменту (покупок / продаж)
Пользователь
Сообщений: Регистрация: 23.01.2015
09.01.2018 15:22:08
Цитата
Алексей написал: Кажется через getItem но как точно не могу понять
electron, Здравствуйте, В одной сделке всегда два участника. Судя по тому что номера заявок разные, Вы видите одну сделку между двумя участниками. Каждый участник видит сделку со своим номером заявки.
Другой вопрос в том, почему Вы их видите. Возможно это Ваши заявки? Те. Вы купили сами у себя (кросс сделка). Посмотрите от какого код клиента были зарегистрированы заявки.
Интерактивная работа с QLua
Пользователь
Сообщений: Регистрация: 23.01.2015
29.12.2017 04:41:16
kroki, Действительно появляется пробел. Спасибо за обращение Будем разбираться.
Интерактивная работа с QLua
Пользователь
Сообщений: Регистрация: 23.01.2015
29.12.2017 04:40:26
Код
qlua> OnPa ram = nil
qlua>
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
28.12.2017 12:00:40
Алексей, Проблема изучается. Постараемся в ближайшее время дать ответ.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
28.12.2017 11:28:26
kroki, Новая версия терминала, может быть не совместима со старой версией сервера. Обновление Вам следует запросить у Вашего брокера.
Стоп заявки сервера
Пользователь
Сообщений: Регистрация: 23.01.2015
28.12.2017 05:36:02
s_mike@rambler.ru, С недавних пор вышло обновление сервера, где делать стоп заявку своей стало не обязательно.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
28.12.2017 05:34:38
Алексей, На приведенном Вами коде, проблема не воспроизводится.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
28.12.2017 05:29:10
Цитата
kroki написал: и перелогиниться. Для моей версии 7.5.0.72 - нет, не останавливает.
Версия очень старая, рекомендуется обновить до последней 7.14
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
28.12.2017 05:27:53
Цитата
Николай Камынин написал: Тогда поясните откуда колбеки поступают в терминал?
Информация поступает с сервера, куда подключился терминал, это же очевидно.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
27.12.2017 16:06:48
Алексей, Вы сказали что ошибка проявилась после того как была исправлена проблема с TEname. А в приведенном коде она не исправлена.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
27.12.2017 13:59:58
Цитата
Алексей написал: По-моему - никак. Значит ошибка возникла после последнего старта скрипта, но не прервала его работу.
По идее да, никак. Однако ранее у нас были обращения от клиентов с тем что сообщение оставалось и это чинилось. И как уже было сказано и еще раз повторим:
Цитата
Sergey Gorokhov написал: Если требуется анализ, приведите полный код скрипта на котором возникает проблема и сообщите версию терминала QUIK
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
27.12.2017 08:49:02
Цитата
Николай Камынин написал: Как я понимаю, так как колбеки работают в одном потоке, то будет очередность.
Николай, читайте внимательней. Речь про колбеки в сравнении с main. Между колбеками и main очередности нет.
колбеки выполняются в том порядке как они поступили в терминал QUIK. Если один колбек затормозит, то накопится очередь, которая потом исполнится в том порядке в каком они поступили.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
27.12.2017 04:49:54
Цитата
Алексей написал: Вы, по ошибке, заглянули в "Интерпретатор языка Lua.pdf", а я ссылался на стр. 6 "Использование Lua в Рабочем месте QUIK.pdf".
Да верно.
Цитата
Алексей написал: Приведенная там схема и натолкнула меня на мысль, что в Quik реализован первый способ работы lua скрипта.
Приведенная там схема явно говорит о том что после OnInit() параллельно работают Main и колбеки. Параллельно означает что никакой очередности между ними нет.
Цитата
Алексей написал: Вообще-то, по моему, после перезапуска скрипта содержание ошибки от прошлого сеанса его работы должно стираться из окна "Доступные скрипты" раздел "Ошибки выполнения скрипта". Разве не так?
А Вы проверили, действительно ли сообщение от предыдущего запуска? Или это сообщение появилось после?
Цитата
Алексей написал: 2. Ошибки интерпретатора, возникающие между окончанием OnInit, но до организации выделенного для main потока, не вырубают скрипт.
Кажется на это уже был дан вполне понятный ответ.
Цитата
Sergey Gorokhov написал: ЦитатаАлексей написал: 2. Ошибки интерпретатора, возникающие между окончанием OnInit, но до старта main, не вырубают скрипт. Так не должно быть.
По проблеме, Вам нужно обратиться к автору данного плагина, т.к. он не является нашей разработкой.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
25.12.2017 05:47:48
Цитата
Алексей написал: Только вопрос о том, могут или нет колбеки начать выполняться до main, возник потому, что это определяется не какими-то вселенскими правилами реализации многопоточности, а конкретным решением разработчика конкретного программного продукта.
Какими правилами, Вы вообще о чем? Колбеки выполняются по событию. Событие произошло до main вот и колбек сработал до main. В чем вопрос, не понятно.
Цитата
Алексей написал: И глядя на стр. 6 "Использование Lua в Рабочем месте QUIK.pdf"
На стр 6, данного документа рассказано как запустить скрипт Lua. Что не так?
Цитата
Алексей написал: Весь код - более 8 тысяч строк, заставлять Вас его изучать в поисках ошибок мне совесть не позволяет :)
И что мешает создать более компактную версию, чисто для воспроизведения описанной проблемы? И потом, большой код никого из поддержки не пугает. Если Вы считаете его не публичным, всегда можно отправить на quiksupport@arqatech.com
Цитата
Алексей написал: Код же, исполнение которого вызывает ошибку, приведен в посте #3.
Это не код, а пара строк. Что такое код, это проект со своей рабочей логикой. Проследив которую можно понять при каких обстоятельствах в указанных строках возможна ошибка. Указав конкретную строку, где возникла логическая ошибка, Вы сами же не сможете разобраться, верно? x= y\z
А вот если указать полный код z=0 y=1 x= y\z
тогда шансы разобраться заметно возрастают.
Цитата
Алексей написал: Переменной TEname присваивается строковое значение в самом начале main.
Вот еще одна причина ко которой нужен полный код, а не пара строк. Как по Вашему до этой информации нам можно было бы разобраться?
Цитата
Алексей написал: (Теперь то я перенес это в OnInit, но на исходное решение были свои соображения).
вообще, использовать заранее не инициализированные переменные является плохим тоном. даже в документации об этом сказано (см описание OnInit)
Цитата
В данной функции пользователь имеет возможность инициализировать все необходимые переменные и библиотеки перед запуском основного потока main().
Цитата
Алексей написал: Однако я столкнулся с необъяснимой ситуацией: в "Ошибки выполнения скрипта" светилось: "bad argument #1 to 'find' (string expected, got nil)", а скрипт прекрасно продолжал свою кипучую деятельность.
А может все проще и сообщение осталось от предыдущего запуска, до исправления ошибки?
Цитата
Алексей написал: Из этого я и сделал предположение №2.
где из всего поста предположение №2? а то Вы их не нумеруете.
Если вопрос в том, будет ли, то ответ да будет. Если вопрос про сроки, то они пока не определены.
Ошибка при переподключении к серверу брокера
Пользователь
Сообщений: Регистрация: 23.01.2015
21.12.2017 12:37:19
финамовец, Здравствуйте, Это брокер решает дать ему доступ к своему серверу или нет. Никакого супер секретного доступа ко всем серверам всех брокеров у нас нет.
На счет торговли, среди ряда наших сотрудников, есть те кто торговал, а есть те кто не торговал, какое это имеет значение к описанной проблеме совершенно не понятно.
и все-таки правильно if i>4 then т.к. в первом условии if _ARG_0_ >1 then, а не if _ARG_0_ >=1 then
Ошибка при поиске пиков\впадин кастом индикатора
Пользователь
Сообщений: Регистрация: 23.01.2015
21.12.2017 11:39:22
Цитата
torque написал: Но ведь выше в начале цикла есть присвоение переменной i номера текущего бара.
ну да, а если будет когда появится второй бар?
_ARG_0_ = 2 ...
if _ARG_0_ > 1 then if _ARG_0_ > i then i = _ARG_0_ kalman[i] = value if kalman[i-1] < kalman[i-2] and kalman[i-2] >= kalman[i-3] then
чему будет равно kalman[i-2]? а kalman[i-3]?
Цитата
torque написал: По поводу >=4 попробовал, ничего не изменилось
Надо не "пробовать", а исправлять и если не помогло смотреть дальше. Что попадает в kalman и что в i, перед возникновением ошибки. И действительно ли на предыдущих итерациях заполнялись нужные параметры kalman[i-1], kalman[i-2], kalman[i-3]
Добавьте логирование этих данных, например через message.
Как минимум, уже ошибка в том что Вы берете значения kalman[i-1], kalman[i-2], kalman[i-3] тогда когда их может не быть. раз i это номер свечки, следует добавить условие if i>4 then и только после этого продолжать код.
Ошибка при поиске пиков\впадин кастом индикатора
Пользователь
Сообщений: Регистрация: 23.01.2015
20.12.2017 15:47:21
Цитата
torque написал: attempt to compare number with nil
В тексте ошибки должен быть номер строки на которую она ссылается. Кроме того, уточните на какой инструмент накладывается индикатор.
Помогите подобрать примерный алгоритм для счетчика сделок
Пользователь
Сообщений: Регистрация: 23.01.2015
20.12.2017 10:39:11
Цитата
Артем написал: Т.е. алгоритм не будет знать какую пар свечей он сравнивает:
Давайте еще раз. Сравнить текущий номер свечки и номер предыдущей свечки Вы можете, так? Так. Что мешает использовать это для проверки новая свечка или нет?
oldIndex=0 .... if (oldIndex~=index) then --случилась новая свеча oldIndex==index else --старая свеча end
Помогите подобрать примерный алгоритм для счетчика сделок
Пользователь
Сообщений: Регистрация: 23.01.2015
19.12.2017 11:37:21
Цитата
Артем написал: Через несколько минут появляется новая свеча и t.[index] становится n+1.
index ведь изменится не так ли (появляется новая свеча). А значит ничего не мешает обратиться к данным предыдущей свечки через t[index-1]
Закрытие всех открвтых позиций по инструменту в .tri, Расчет QUANTITY в .tri
Пользователь
Сообщений: Регистрация: 23.01.2015
18.12.2017 12:58:27
Здравствуйте, К сожалению простого способа нет. Либо через скрипты Lua, либо прописывать вручную.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
Пользователь
Сообщений: Регистрация: 23.01.2015
18.12.2017 10:14:18
Цитата
Алексей написал: 1. Колбеки начинают вызываться после окончания OnInit, но могут выполняться до старта потока main.
Колбеки могут начать выполняться до старта main и в этом нет ничего удивительного. main выполняется после OnInit, остальные колбеки никакого значения не имеют.
Цитата
Алексей написал: 2. Ошибки интерпретатора, возникающие между окончанием OnInit, но до старта main, не вырубают скрипт.
Так не должно быть. Если требуется анализ, приведите полный код скрипта на котором возникает проблема и сообщите версию терминала QUIK
LuaVM closed with error, LuaVM closed with error
Пользователь
Сообщений: Регистрация: 23.01.2015
18.12.2017 10:09:23
QApplication, Какая версия терминала QUIK используется? Приведите полный текст проблемного скрипта.