Sergey Gorokhov (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 24 25 26 27 28 29 30 31 32 33 34 ... 78 След.
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
Цитата
Дмитрий написал:
можно индикатор для этих целей использовать

Можно, но только не стандартный.
Те же фракталы ищут min/max на заданном периоде, а в одной секунде количество тиков не определено.
Можете взять код из примеров https://forum.quik.ru/forum17/topic1157/
и попробовать переписать под свои нужды.
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
Дмитрий,

К сожалению не с первого раза обратил внимание что речь про секундные интервалы. Трудно следить за перепиской когда два оппонента.

Для секундных интервалов готового решения нет. тк. в самом терминале их нет.
Только цикл.
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
Цитата
Дмитрий написал:
Да тиковые данные есть у меня, мне не хочется их циклом обегать, а сразу получить готовые максимумы как для минутных интервалов

Сразу получить не получится. Просто потому что в терминале этих данных нет.
Только высчитывать
Другой вопрос в том кто их будет высчитывать, Ваш скрипт или готовый индикатор.
Например индикатор фракталов может подойти.
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
sav 312,
mx = max(bar.high,mx)
mn = min(bar.low,mn)
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
Цитата
Дмитрий написал:
Понятно, то есть сервер не дает секундные данные, а только тиковые

Посмотрите данные в таблице обезличенных сделок.
Если там данных нет, значит брокер действительно не включил для Вас тиковые данные
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
sav 312,
А зачем все?
сравнивайте текущее значение с предыдущим вот и всё
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
sav 312,

max(123)
вернет 123

max (123,999)
вернет 999

так понятней?
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
[QUOTE]sav 312 написал:
Чтобы найти min/max надо сравнить минимум два числа, а у Вас только одно
mx = max(bar.high)
mn = min(bar.low)
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
Цитата
Дмитрий написал:
а то есть только минутные

Функция getCandlesByIndex умеет получать тиковые данные.
В связи с чем, не совсем понятно в чем состоит проблема.
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
sav 312,

if x>y then
max = x
else
max = y
end
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
sav 312,
Начнем с того что функции math.min и math.max принимают только список аргументов, не таблицы.
И тем более они не понимают таблицы состоящие из некоторого набора параметров.
А getCandlesByIndex как раз таки возвращает таблицы состоящие из параметров.
Т.е. чтобы найти min/max Вам в любом случае придется делать цикл, который пробежится по всем свечкам которые вернул getCandlesByIndex. А раз будет цикл, то и функции math.min и math.max применять нет особого смысла, ибо в этом же цикле можно определить min/max через банальный if.
Т.е. через getCandlesByIndex запрашиваете все нужные свечки.
Потом цикл который берет из них значение и ищет min/max
Вот и весь алгоритм.
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
sav 312,
Здравствуйте,
А в чем состоит проблема?
В том как получить данные?
Или в том как из этих данных найти min/max?
Порядок отслеживания процесса выполнения транзакций
 
kroki,
Если на заявке не Ваш UID, значит она была выставлена с другой учетной записи.
И терминал тут не имеет значения (WebQUIK или любой другой https://arqatech.com/ru/products/quik/terminals/user-applications/)

Другая учетная запись, это может быть брокер, которого Вы попросили за Вас выставить заявку, или это у Вас несколько учетных записей.
Учетная запись для WebQUIK (или любой другой терминал) и для QUIK может быть одна, а может быть для каждого терминала своя.
Также для одного терминала может быть зарегистрировано несколько учетных записей, например мужа и жены.
OnTransReply, Поле balance при снятии заявки
 
Добрый день,

Ошибка, из-за которой на сервер доступа вместе с ответом на транзакцию не передавалась информация об остатке заявки, исправлена в версии 5.17 серверного ПО QUIK.

Приносим вам свои извинения за доставленные неудобства.
Досрочный переход на следующую итерацию цикла, При определенном условии часть кода внутри цикла не нужно выполнять.
 
Здравствуйте,
В lua нет оператора continue
Об этом можно найти информацию в интернете
http://qaru.site/questions/54925/why-does-lua-have-no-continue-statement
Не отображается стоп-заявка в таблице заявок
 
Татьяна,
Здравствуйте,
Стоп заявки отображаются в таблице "стоп заявок".
Когда стоп заявка исполнится, только тогда она появится в таблице "заявок"
number value
 
Как уже говорилось:
Цитата
Sergey Gorokhov написал:
Для более точного анализа нужна полная версия кода.

Либо, если не хотите выкладывать весь код, воспроизведите ошибку на более простом коде.
number value
 
lergen,
Это ничего не меняет.
Вы обращаетесь к элементу как к таблице:
st.n_f[i]
при том что st.n_f является числом

Простой пример, который демонстрирует такую же ошибку
Код
X = 123
y = X[1]


в примере, нельзя обратиться к элементу [1] числа X. т.к. у чисел не бывает "элементов".

а вот если бы X была бы таблицей, то ошибки бы не было.
Код
X = {123}
y = X[1]
number value
 
lergen,
Скорей всего причина в том что элемент st.n_f является числом, а Вы обращаетесь к нему как к таблице.
Для более точного анализа нужна полная версия кода.
Гарантируется ли упорядоченность результата getQuoteLevel2()?
 
Цитата
kroki написал:
но в документации это не упомянуто.

Документация на терминал QUIK
-Раздел 3. Просмотр информации
--Таблица котировок
Цитата
Таблица содержит лучшие текущие котировки на покупку/продажу, упорядоченные по параметру «Цена».
Каков реальный сценарий вызова OnDepoLimitDelete(), OnMoneyLimitDelete(), OnFuturesLimitDelete()?
 
Цитата
kroki написал:
В каких реальных случаях вызываются OnDepoLimitDelete(), OnMoneyLimitDelete(), OnFuturesLimitDelete() (первые два для limit_kind >= 0, внутренние не особо интересны)?  Кто-нибудь встречал эти вызовы в реале?

Они вызываются когда брокер удаляет лимит.
Необходимость удалить лимит возникает в случае если его неправильно задали, а это к счастью происходит крайне редко.
Цитата
kroki написал:
Кстати, а зачем вызываются ползовательские callbacks с limit_kind < 0?  Какие осмысленные действия он бы мог сделать (хотя бы в теории)?

Лимиты с limit_kind < 0 являются техническими и действительно для конечного пользователя не несут смысла.
Но тем не менее они есть и по этому колбеки срабатывают.
Как получить всего заявок по инструменту (покупок / продаж)
 
Цитата
Алексей написал:
Кажется через getItem но как точно не могу понять

Вам нужно использовать функцию getParamEx

Код
numbids = getParamEx (class_code, sec_code, "numbids").param_value --Заявки куп.
numoffers = getParamEx (class_code, sec_code, "numoffers").param_value --Заявки прод.
неуникальный номер сделки
 
electron,
Здравствуйте,
В одной сделке всегда два участника.
Судя по тому что номера заявок разные, Вы видите одну сделку между двумя участниками.
Каждый участник видит сделку со своим номером заявки.

Другой вопрос в том, почему Вы их видите. Возможно это Ваши заявки? Те. Вы купили сами у себя (кросс сделка).
Посмотрите от какого код клиента были зарегистрированы заявки.
Интерактивная работа с QLua
 
kroki,
Действительно появляется пробел.
Спасибо за обращение
Будем разбираться.
Интерактивная работа с QLua
 
Код
qlua> OnPa ram = nil
qlua>
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
Алексей,
Проблема изучается. Постараемся в ближайшее время дать ответ.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
kroki,
Новая версия терминала, может быть не совместима со старой версией сервера.
Обновление Вам следует запросить у Вашего брокера.
Стоп заявки сервера
 
s_mike@rambler.ru,
С недавних пор вышло обновление сервера, где делать стоп заявку своей стало не обязательно.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
Алексей,
На приведенном Вами коде, проблема не воспроизводится.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
Цитата
kroki написал:
и перелогиниться.  Для моей версии 7.5.0.72 - нет, не останавливает.

Версия очень старая, рекомендуется обновить до последней 7.14
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
Цитата
Николай Камынин написал:
Тогда поясните откуда колбеки поступают в терминал?

Информация поступает с сервера, куда подключился терминал, это же очевидно.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
Алексей,
Вы сказали что ошибка проявилась после того как была исправлена проблема с TEname. А в приведенном коде она не исправлена.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
Цитата
Алексей написал:
По-моему - никак. Значит ошибка возникла после последнего старта скрипта, но не прервала его работу.

По идее да, никак. Однако ранее у нас были обращения от клиентов с тем что сообщение оставалось и это чинилось.
И как уже было сказано и еще раз повторим:

Цитата
Sergey Gorokhov написал:
Если требуется анализ, приведите полный код скрипта на котором возникает проблема и сообщите версию терминала QUIK
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
Цитата
Николай Камынин написал:
Как я понимаю, так как колбеки работают в одном потоке, то будет очередность.

Николай, читайте внимательней.
Речь про колбеки в сравнении с main.
Между колбеками и main очередности нет.

Цитата
Николай Камынин написал:
Что есть истина?

колбеки выполняются в том порядке как они поступили в терминал QUIK.
Если один колбек затормозит, то накопится очередь, которая потом исполнится в том порядке в каком они поступили.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
Цитата
Алексей написал:
Вы, по ошибке, заглянули в "Интерпретатор языка Lua.pdf", а я ссылался на стр. 6 "Использование Lua в Рабочем месте QUIK.pdf".
Да верно.
Цитата
Алексей написал:
Приведенная там схема и натолкнула меня на мысль, что в Quik реализован первый способ работы lua скрипта.
Приведенная там схема явно говорит о том что после OnInit() параллельно работают Main и колбеки. Параллельно означает что никакой очередности между ними нет.

Цитата
Алексей написал:
Вообще-то, по моему, после перезапуска скрипта содержание ошибки от прошлого сеанса его работы должно стираться из окна "Доступные скрипты" раздел "Ошибки выполнения скрипта". Разве не так?
А Вы проверили, действительно ли сообщение от предыдущего запуска?
Или это сообщение появилось после?

Цитата
Алексей написал:
2. Ошибки интерпретатора, возникающие между окончанием OnInit, но до организации выделенного для main потока, не вырубают скрипт.

Кажется на это уже был дан вполне понятный ответ.
Цитата
Sergey Gorokhov написал:
ЦитатаАлексей написал:
2. Ошибки интерпретатора, возникающие между окончанием OnInit, но до старта main, не вырубают скрипт.
Так не должно быть.
LuaVM closed with error, LuaVM closed with error
 
QApplication,

По проблеме, Вам нужно обратиться к автору данного плагина, т.к. он не является нашей разработкой.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
Цитата
Алексей написал:
Только вопрос о том, могут или нет колбеки начать выполняться до 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? а то Вы их не нумеруете.
Как открыть файл на запись в кодировке DOS (866)
 
Sergey Denegin,
Возможно это поможет
http://lua-users.org/wiki/LuaUnicode
Кросс платформенность и стандартизация в QUIK API
 
rinat,

Если вопрос в том, будет ли, то ответ да будет.
Если вопрос про сроки, то они пока не определены.
Ошибка при переподключении к серверу брокера
 
финамовец,
Здравствуйте,
Это брокер решает дать ему доступ к своему серверу или нет.
Никакого супер секретного доступа ко всем серверам всех брокеров у нас нет.

На счет торговли, среди ряда наших сотрудников, есть те кто торговал, а есть те кто не торговал, какое это имеет значение к описанной проблеме совершенно не понятно.
Ошибка при поиске пиков\впадин кастом индикатора
 
Цитата
Sergey Gorokhov написал:
Цитата
Sergey Gorokhov   написал:
if i>4 then
Имелось ввиду конечно же
if i>=4 then

и все-таки правильно if i>4 then
т.к. в первом условии if _ARG_0_ >1 then, а не if _ARG_0_ >=1 then
Ошибка при поиске пиков\впадин кастом индикатора
 
Цитата
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.
Ошибка при поиске пиков\впадин кастом индикатора
 
Цитата
Sergey Gorokhov написал:
if i>4 then
Имелось ввиду конечно же
if i>=4 then
Ошибка при поиске пиков\впадин кастом индикатора
 
torque,

Как минимум, уже ошибка в том что Вы берете значения kalman[i-1], kalman[i-2], kalman[i-3] тогда когда их может не быть.
раз i это номер свечки, следует добавить условие
if i>4 then
и только после этого продолжать код.
Ошибка при поиске пиков\впадин кастом индикатора
 
Цитата
torque написал:
attempt to compare number with nil
В тексте ошибки должен быть номер строки на которую она ссылается.
Кроме того, уточните на какой инструмент накладывается индикатор.
Помогите подобрать примерный алгоритм для счетчика сделок
 
Цитата
Артем написал:
Т.е. алгоритм не будет знать какую пар свечей он сравнивает:
Давайте еще раз.
Сравнить текущий номер свечки и номер предыдущей свечки Вы можете, так? Так.
Что мешает использовать это для проверки новая свечка или нет?

oldIndex=0
....
if (oldIndex~=index) then
--случилась новая свеча
oldIndex==index
else
--старая свеча
end
Помогите подобрать примерный алгоритм для счетчика сделок
 
Цитата
Артем написал:
Через несколько минут появляется новая свеча и t.[index] становится n+1.
index ведь изменится не так ли (появляется новая свеча).
А значит ничего не мешает обратиться к данным предыдущей свечки через t[index-1]
Закрытие всех открвтых позиций по инструменту в .tri, Расчет QUANTITY в .tri
 
Здравствуйте,
К сожалению простого способа нет.
Либо через скрипты Lua, либо прописывать вручную.
Очистка таблиц Quikа по OnCleanUp может вырубить скрипт. Как уберечься?
 
Цитата
Алексей написал:
1. Колбеки начинают вызываться после окончания OnInit, но могут выполняться до старта потока main.
Колбеки могут начать выполняться до старта main и в этом нет ничего удивительного.
main выполняется после OnInit, остальные колбеки никакого значения не имеют.

Цитата
Алексей написал:
2. Ошибки интерпретатора, возникающие между окончанием OnInit, но до старта main, не вырубают скрипт.
Так не должно быть.
Если требуется анализ, приведите полный код скрипта на котором возникает проблема и сообщите версию терминала QUIK
LuaVM closed with error, LuaVM closed with error
 
QApplication,
Какая версия терминала QUIK используется?
Приведите полный текст проблемного скрипта.
Страницы: Пред. 1 ... 24 25 26 27 28 29 30 31 32 33 34 ... 78 След.
Наверх