Почему нет реакции на код,мувинги пересикаються а сообщения нет
Пользователь
Сообщений: Регистрация: 23.01.2015
14.02.2017 11:59:32
Андрей Мургa, Значит код сработает через минуту после того как пересечение случится. В синтаксисе ошибок нет, значит проблема в логике.
Почему нет реакции на код,мувинги пересикаються а сообщения нет
Пользователь
Сообщений: Регистрация: 23.01.2015
14.02.2017 11:52:36
Здравствуйте, Какой интервал у графика? Вы смотрите предыдущую свечку и пред предыдущую. т.е. если пересечение случится на текущей свечке, код не увидит этого пока не появится следующая свечка, а это займет время равное интервалу.
Индикаторы на LUA. getCandlesByIndex отдаёт пустую таблицу.
Пользователь
Сообщений: Регистрация: 23.01.2015
13.02.2017 15:14:11
Здравствуйте, Приведите полный текст кода индикатора, а также сообщите версию терминала QUIK
SetRangeValue
Пользователь
Сообщений: Регистрация: 23.01.2015
13.02.2017 15:11:02
Цитата
валерий написал: Не понял - на графике рисуется C(Index), а не SetValue.
Но messag же выдает 12345 не так ли? Разве это не говорит о том что Ваша версия о неработающем SetValue не подтверждается?
У Вас на индикаторе одни значения затираются другими. На примере простого кода:
Код
x=123
x=1111
после его обработки, в конце Вы получите x=1111, так как x сначала был 123, а потом поменялся на 1111, в моем примере и у Вас, ровно тоже самое. Вы сначала пишите одну цифру через SetValue, а потом, затираете ее другой цифрой через return. Так понятно?
Функции вполне успешно меняют значения на текущей свече, простой пример это доказывает:
Код
Settings = {
Name = "*test",
line = {{Name = "test", Type = TYPE_LINE, Color = RGB(255, 0, 0)}}
}
function Init()
T = {}
return #Settings.line
end
function OnCalculate(Index)
SetValue(Index, 1, 12345)
x=GetValue(Index, 1)
message("Index="..tostring(Index).." ".."GetValue="..tostring(x))
return C(Index)
end
По всей видимости, у вас значение текущей свечи, после SetValue затирается другим значением указанным в return
Индикаторы на LUA. Проигрывание звуков.
Пользователь
Сообщений: Регистрация: 23.01.2015
13.02.2017 13:19:19
Здравствуйте, Пришлите для анализа полученный дамп на адрес quiksupport@arqatech.com
Здравствуйте, Попробуйте указать большими буквами:
Код
if isConnected()==1 then
local a=getInfoParam("TRADEDATE")
local b=getInfoParam("SERVERTIME")
message(a,1)
message(b,1)
end
Перенумерация свечек и SetUpdateCallback
Пользователь
Сообщений: Регистрация: 23.01.2015
13.02.2017 10:02:13
Цитата
Алексей написал: А откуда мне взять свежую версию терминала, если брокер предоставляет 7.2.2.3?
Вы можете запросить последнюю версию у брокера. Если брокер ее Вам не предоставит, Можете запросить у нас. Но есть риск что терминал не подключится, если у брокера старая версия сервера.
Цитата
Алексей написал: Сомневаюсь, что что-то не так со скриптом, поскольку он элементарный
У нас описанное поведение не воспроизводится. Если есть проблема нам нужно ее исследовать. А для исследования нам требуется ранее запрошенная информация.
SetRangeValue
Пользователь
Сообщений: Регистрация: 23.01.2015
13.02.2017 09:56:29
Цитата
валерий написал: Но она принимает только скаляр, то есть нарисовать можно только горизонтальную линию или все стереть.
Да так и есть.
Цитата
валерий написал: И кстати почему с помощью SetRangeValue и SetValue нельзя поставить значение на последней свечке? В чем смысл такого ограничения?
А в чем смысл? Ведь для вывода текущих значений существует OnCalculate.
Большие ли отличия QLua от от Lua и где официальная документация?, Какая версия Lua в QLua, работают ли все функции Lua или только какой-то ограниченный набор (если так, то где прочитать, какой?), можно ли подключать модули и все как в обычном Lua? Есть ли где-то на официальном сайте документация?
Пользователь
Сообщений: Регистрация: 23.01.2015
13.02.2017 09:42:59
Илья, В обозримом будущем, обновление не планируется.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
11.02.2017 16:51:45
валерий, Ваш вопрос не понятен. Вы что-то сказали конкретно про вычисление пустых свечек, и Вам был дан такой ответ конкретно относящийся к необходимости вычисления пустых свечек. А что касается индикаторов, это вообще никак к ним не относится.
Sergey Gorokhov написал: Как уже говорилось, индикаторы будут переписаны. Не сейчас, но будут.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
10.02.2017 11:10:29
Цитата
валерий написал: Sergey Gorokhov , Индекс в OnCalculate(index). Конкретно, вот график с одной фишкой, пропуски не показывать, фильтр по дневной сессии. Какие свечи будет перебирать индекс? Только те что на графике?
OnCalculate вернет столько свечек сколько на графике.
Ну так сделайте, Индикаторы предоставляются "как есть" т.е. допускается любое изменение на Ваше усмотрение.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
10.02.2017 10:12:05
валерий, Какой индекс? Какая база данных? Вы можете предметно сообщить что именно интересует? Сейчас Ваш вопрос не понятен. Вам уже было сказано, что сами графики вообще никак не менялись, а менялись только конкретные функции, а вернее результат их вывода в случае наличия пустых свечек. Остальное не менялось и поведение то же самое.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
10.02.2017 05:06:40
Цитата
валерий написал: Это в 7.2. А что в 7.7? Организовать вычисления при наличии пустых свечек конечно можно, но это накладно и в 99 случаях не нужно.
Никто Вас не заставляет "производить вычисления при наличии пустых свечек", просто пропускайте их и все. Именно это корректно позволяют сделать изменения в 7.7.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
10.02.2017 05:02:29
Цитата
валерий написал: Кстати, хотелось бы уточнить. Если на графике стоит фильтр по времени, то отсутствующие свечи все равно теперь будут подаваться в функцию индикатора?
Как связан фильтр по времени с наличием либо отсутствием пустых свечек?
Как уже было сказано, так не должно быть. Как уже было сказано, проблема либо в старом терминале либо в самом скрипте. Из этого следует, что 1 - Вам надо обновить терминал, 2 - если не поможет воспроизвести ситуацию и предоставить нам скрипт / скриншоты и копию папки с терминалом (без ключей доступа) на ящик quiksupport@arqatech.com
По идее после смены сессии, счетчик должен пройтись с 1й свечки до последней.
Перенумерация свечек и SetUpdateCallback
Пользователь
Сообщений: Регистрация: 23.01.2015
09.02.2017 13:09:12
Алексей, Боюсь что ответ можно узнать только проведя эксперимент. Т.к. поведение зависит от Ваших настроек, скрипта и т.д.
Перенумерация свечек и SetUpdateCallback
Пользователь
Сообщений: Регистрация: 23.01.2015
09.02.2017 12:18:56
Здравствуйте, На сервере есть ограничение в 3000 исторических свечек на каждый интервал. Т.е. более 3000 свечек получить из хранилища нельзя. Далее идет текущая сессия, она считается отдельно.
Почему у Вас получилось 6к+ свечек, сказать затруднительно. Возможно что-то не так с самим скриптом, или версия старая, по идее так не должно быть. "перенумерация" должна происходить после смены сессии. Сервер удаляет старые свечки, и добавляет в архив новые, так чтобы в архиве по прежнему было 3000 свечек. Таким образом, при условии что в архиве сервера уже 3000 свечек, каждый день, первая свечка на графике должна быть под номером 3001. На это еще может влиять настройка в разделе "Программа" - "Сохранение данных", "Очищать данные после смены даты"
К сожалению мы не можем зарегистрировать пожелание в таком виде, т.к. оно противоречит концепции развития нашего ПО. Иными словами, мы не можем показать на графике то чего реально нет. Уточните зачем Вам это? Возможно есть другой путь решения.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
08.02.2017 14:08:48
Цитата
валерий написал: Вопрос тем кто пользует 77, сам я с большииим лагом обновляюсь. А на графиках как нововведение отражается? Пустые интервалы теперь убрать нельзя?
На графиках ничего в этом месте не менялось. Менялись конкретно те Lua функции о которых сказано в списке изменений.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
08.02.2017 11:17:03
Цитата
Старатель написал: Вопрос не в том, что выводить - это зависит от индикатора, можно и вполне осмысленное значение. Вопрос в том, как выводить, если OnCalculate не вызывается?
Такой возможности нет. Разве что на каждую из бумаг повесить по индикатору.
Космонавт написал: Сергей, на примере индикатора RSI подскажите пожалуйста что нужно изменить, чтобы код работал на новой версии КВИКа?
Как уже говорилось, индикаторы будут переписаны. Не сейчас, но будут. А как именно, уже вопрос внутренний. Сейчас же Вы можете самостоятельно его исправить на Ваше усмотрение, т.к. индикаторы предоставляются "как есть" т.е. допускаются любые правки на свое усмотрение.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
08.02.2017 09:56:40
Цитата
Старатель написал: Вопрос о том, как поведёт себя QUIK, когда по одному инструменту уже начал рисоваться новый бар, а по другому инструменту - вдруг приходит сделка по предыдущему бару?
Вопрос касается того как поведет себя OnCalculate. Он поведет себя ровно также как если бы был только 1 график, т.к. OnCalculate привязан к конкретному источнику данных.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
08.02.2017 09:54:02
Цитата
Старатель написал: Не совсем так. OnCalculate на пустых интервалах вызывается только при пересчёте индикатора (если, например, в окне редактирования нажать "Применить" или "ОК"). В реалтайм OnCalculate на пустых интервалах не вызывается.
Да, все верно, в эксперименте была ошибка.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
08.02.2017 09:50:28
_sk_, Вы немного ушли от темы, я говорил ровно о том что написано в списке изменений.
Цитата
Изменен вывод информации функциями O, H, L, C, V, T по свечкам, сформированным на пустых интервалах. Теперь, для таких свечек, функция T возвращает время интервала, а функции O, H, L, C, V возвращают nil. Для корректной проверки существования свечи на графике добавлена новая функция CandleExist(). Подробное описание приведено в п. 7.2.5 Руководства пользователя Интерпретатора языка Lua.
OnStop
Пользователь
Сообщений: Регистрация: 23.01.2015
08.02.2017 07:20:39
Здравствуйте, Описанное поведение будет исправлено в одной из следующих версий программы .
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
08.02.2017 05:34:22
_sk_, На все вопросы вида "а что будет если" в большинстве случаев Вы сами легко можете найти ответ. И сейчас именно такой случай. Небольшой эксперимент покажет что индикатор по FEES даже не заметит появления значений по SRH7. Связано это с тем что по FEES изменений не было. В случае если в одном окне установить график по нелеквиду и по активному инструменту, Вы увидите что OnCalculate сработает по нелеквиду и CandleExist покажет false на пропущенных свечках только, после того как на нелеквиде появится нормальное значение.
Как убрать сообщения о заявках
Пользователь
Сообщений: Регистрация: 23.01.2015
08.02.2017 05:22:59
Цитата
Владимир написал: А можно эти и другие сообщения брокера каким-то образом получать из скрипта LUA, чтобы сохранять их в лог, например?
Не все сообщения можно ловить в LUA Только ответы на транзакции отправленные через сам LUA в событии OnTransReply
Уже сейчас можно сделать вторую нумерацию. Просто добавив переменную счетчик, которая будет увеличиваться на +1 при CandleExist
ОК.
Я правильно понимаю, что индексы-аргументы OnCalculate() от одного вызова к другому: * либо повторяются; * либо увеличиваются на 1; * либо сбрасываются в 1.
Т.е., например, последовательности ..., 100, 101, 102, 101, 102, 103, ... быть не может?
Ответ на этот вопрос неплохо бы в документацию добавить.
обновления посередине быть не может, если Вы об этом.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
07.02.2017 12:56:44
Цитата
s_mike@rambler.ru написал: что говорит стандарт о времени пропущеннлй свечи? Оно nil или содеожит валидные значения?
Читайте внимательней:
Цитата
_sk_ написал: Теперь, для таких свечек, функция T возвращает время интервала, а функции O, H, L, C, V возвращают nil.
Уже сейчас можно сделать вторую нумерацию. Просто добавив переменную счетчик, которая будет увеличиваться на +1 при CandleExist
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
07.02.2017 12:19:14
Цитата
_sk_ написал: Функции O(I), H(I), L(I), C(I), V(I) в качестве индекса I используют порядковый номер свечи на графике, включая "дыры".
Вопрос:data source ds имеет ту же нумерацию ds:O(I), ds:H(I), ds:L(I), ds:C(I), ds:V(I) или здесь индекс I относится к источнику данных, где нет "дыр" между свечками?
нет, нумерация будет разной т.к. на графике пустые интервалы получаются из-за наложения других графиков, а в DS никакого наложения быть не может.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
07.02.2017 12:14:03
Цитата
_sk_ написал: Просьба ответить на мои вопросы из двух предыдущих постов. Если в документации неправильный пример, его точно надо оттуда убирать и, может быть, заменять на правильный.
Пример не правильный, документация будет исправлена.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 23.01.2015
07.02.2017 12:13:20
s_mike@rambler.ru, Раньше, с этим были проблемы т.к. в разных ситуациях работало по разному. Теперь в 7.7 есть единый стандарт и надо придерживаться его. Если окажется что где-то стандарт не срабатывает это баг.
Добавляете график, добавляете индикатор, в индикаторе заполняете Идентификатор и далее функцией getCandlesByIndex ищите нужный фрактал. описание функции приведено в документации QLUA.chm -Функции взаимодействия скрипта Lua и Рабочего места QUIK --Функции для работы с графиками ---getCandlesByIndex
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
03.02.2017 13:18:44
Цитата
Космонавт написал: Как это сделать с помощью Вашей функции?
Вам уже было сказано, через ds такой возможности нет. только через окно графика.
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
03.02.2017 12:57:35
Цитата
Космонавт написал: Не понятно. Покажите пожалуйста на примере.
Что именно не понятно. Конкретику пожалуйста.
Цитата
Космонавт написал: И как считывать не только последние но и другие предыдущие фракталы
Вам уже было сказано, через dsс такой возможности нет. только через окно графика.
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
03.02.2017 12:50:16
Поправка, сам возврат там есть, нету возврата соседних фракталов.
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
03.02.2017 12:45:10
Цитата
Космонавт написал: При чём здесь SetValue? Она нужна, чтобы установить значение на линии индикатора. А мне нужно не установить, а считать значение фрактала!
Вот именно, что она меняет их на графике а Вам надо НЕ на графике а в ds т.е. в этом месте нужно дописать возврат данных.
Что именно не понятно? Почитайте в документации про функцию SetValue.
Цитата
Космонавт написал: А потом как обратиться к значениям фракталов?
Уже было сказано что через DataSource использовать FRACTALS() не получится, только через окно графика стандартным образом, как через любой другой индикатор. т.е. функцией getCandlesByIndex
Цитата
Космонавт написал: Передайте привет человеку, который писал этот прекрасный код, но ключики от него спрятал на дне океана.
Вы не поверите, но эти примеры писал лично я, по своей личной инициативе.
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
03.02.2017 10:35:09
Здравствуйте, У фракталов есть свои особенности, в указанной функции используется SetValue, которая работает только с графиком, а не источником данных DataSource.