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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 След.
Отладка скриптов Lua для Quik., Как произвести отладку скрипта?
 
1. На сколько я знаю, из Луа нельзя управлять тем, куда будет выводиться индикатор. Луа только считает значения

2. Обращаться можно, но хлопотно. Для этого есть функция CreateDataSource и дальше придется перебирать все свечи

3. на сколько я знаю Size не может уменьшиться. Обрезание начальных баров происходит только при входе в Квик. (или возможно при смене сессии). Кстати поправьте меня разработчики, если я ошибаюсь.
Отладка скриптов Lua для Quik., Как произвести отладку скрипта?
 
Какая у вас задача?
При открытии квика, или про пересоединении к серверу, индикатор строится заново,
и функция OnCalculate запускается столько раз, сколько у вас свечей на этом графике.
index при этом номер свечи. от 0 до последней
Имитация SetUpdateCallback(.....)
 
Недавно решал подобную задачу, вот вам пример, не полный конечно:

function ReadFromFile ()
local f = io.open("filename","r+")
-- Если файл не существует
if f == nil then
message("===ERR."..param_client..": не найден файл: "..filename)
return
else
for line in f:lines() do
........ здесь line - это строка из файла, которую придется обрабатывать
... и можете здесь вызывать ту функцию, которая должна срабатывать при колбеке
end
end
SetTableNotificationCallback : работы с клавишей Ctrl и двойным щелчком мышки
 
Да все верно, речь шла о Ctrl вместе с мышкой.
Спасибо, надеюсь вы примете решение о доработке.  
как определить время с точностью до милисекунд?
 
Спасибо огромное!  
про тики
 
Ну и к слову, работает, даже если CreateDataSource(param.classcode, param.code_bumagi, INTERVAL_TICK)  не делать.
Но у меня таблица обезличенных сделок открыта.  
про тики
 
Все заработало!  
про тики
 
Цитата
Sergey Gorokhov написал:
Lua это регистрозависимый язык.
Согласно документации, функция должна называться OnAllTrade
Блин, вот я чудик ((((((
Спасибо большое!  
Не приходят события OnAllTrade при закрытой Таблице обезличенных сделок, События OnAllTrade приходят только при открытой таблице, в настройках все заказал.
 
Вот не работает почему-то.
Чтобы не дублировать вопрос, я его вот тут задал, в похожей теме
https://forum.quik.ru/messages/forum10/message20458/topic1610/#message20458
про тики
 
Цитата
Sergey Gorokhov написал:
Чтобы в OnAllTrade что-то поехало, нужно инициировать заказ таблицы обезличенных сделок.
Это делается либо путем открытия таблицы в терминале, либо через CreateDataSource с тиковым интервалом.
Подскажите, пожалуйста, что я делаю не так?

Инициировал quik_price_tick = CreateDataSource(param.classcode, param.code_bumagi, INTERVAL_TICK)

Описана функция

function onAllTrade (alltrade) --Функция вызывается терминалом QUIK при получении обезличенной сделки.
print_perem("alltrade.price",alltrade.price)
end

В настройках Заказ данных все включено.

Даже таблица обезличенных сделок по этому инструменту открыта и в нее данные поступают.
Но почему-то onAllTrade все равно не срабатывает.  
Не приходят события OnAllTrade при закрытой Таблице обезличенных сделок, События OnAllTrade приходят только при открытой таблице, в настройках все заказал.
 
Опять же не понятно, что толку что я закажу данные
quik_price_tick = CreateDataSource(param.classcode, param.code_bumagi, INTERVAL_TICK)

Где я потом смогу получить нужные мне данные обезличенных сделок?

Ведь сама OnAllTrade(alltrade)
уже сама в качестве параметра должна содержать информацию о последней обезличенной сделке.  
Не приходят события OnAllTrade при закрытой Таблице обезличенных сделок, События OnAllTrade приходят только при открытой таблице, в настройках все заказал.
 
Цитата
Sergey Gorokhov написал:
Все правильно, функция OnAllTrade возвращает данные поступающие в таблицу обезличенных сделок, но никак не заказывает данные.
для заказа данных используйте CreateDataSource с тиковым интервалом.
А поясните пожалуйста этот момент.
В документации этого ничего не написано, поэтому не понятно.
Все другие функции ONххххххх работают прекрасно, независимо от того, что открыто и что заказано.
Зачем здесь по-другому? И надо бы хотя бы в документации это написать, с примером.  
как определить время с точностью до милисекунд?
 
Для работы с SetTableNotificationCallback хочу попробовать научиться разделять одиночный клик мышки и двойной, путем измерения времени между двумя событиями. Подробнее об этом здесь https://forum.quik.ru/forum10/topic2293/

Подскажите, как в QLUA определить время системы с точностью до миллисекунд?
Заранее спасибо!  
SetTableNotificationCallback : работы с клавишей Ctrl и двойным щелчком мышки
 
Здравствуйте!

Пытаюсь в SetTableNotificationCallback научить различать различные события, такие как:
- одиночное нажатие мышки
- двойное нажатие мышки
- одиночное нажатие мышки с нажатой кнопкой Ctrl
- двойное нажатие мышки с нажатой кнопкой Ctrl

Пока возникают проблемы, и не могу понять, как их обойти. Может кто-то поделится опытом?

Сначала про мышку:
Как описывалось в теме  https://forum.quik.ru/messages/forum10/message13087/topic1440/#message13087
при двойном нажатии срабатывает сразу серия событий
QTABLE_LBUTTONDOWN
QTABLE_LBUTTONUP
QTABLE_LBUTTONDBLCLK
QTABLE_LBUTTONUP
Это крайне неудобно, потому что если на одиночный клик совершается какое-то действие, то при двойном щелчке приходится это действие отменять.
Я не специалист по Windows, но в ее настройках, есть параметр, отвечающий за скорость двойного нажатия мышки. Почему бы в QLUA не использовать этот параметр, и не проверять сначала, было ли двойное нажатие мышки, или одиночное, и уже потом возвращать окончательное событие - ОДНО.
Это как пожелание к доработке.

Второе: по поводу нажатия клавиш. Например нужно обработать событие
- одиночное нажатие мышки с нажатой кнопкой Ctrl
Кое как я выкрутился из положения, и как только нажимается Ctrl записываю в переменную значение, что нажата Ctrl. И все дальнейшие события обрабатываю с учетом того, то Ctrl нажата. Проблема в том, что если нажать Ctrl и потом сразу отпустить, то при отпускании никакого события не срабатывает, и систем продолажет помнить, что Ctrl нажата. И следующее событие обрабатывает, как будто Ctrl нажата, хотя она давно отпущена.
Просьба доработать этот вопрос каким-нибудь образом.
Хотя бы сделать возврат события "отпущена клавиша", как это сделано с кнопкой мышки.  
Можно ли убрать совсем или изменить ширину столбика с номером строк в таблице на экране?
 
еще один вопрос, и как вариант, пожелание к доработке: можно ли менять цвет нулевой строки (т.е. строки с заголовком в таблице)?
Если нет, то просьба зарегистрировать как пожелание.
В этом случае можно буде очень удобно использовать эту строку под различные кнопки, причем которые не уезжают при прокрутке таблицы вниз.

Заранее спасибо.  
debugview - где его взять и как им пользоваться?
 
надо будет попробовать
debugview - где его взять и как им пользоваться?
 
Понял, спасибо за ответ!  
debugview - где его взять и как им пользоваться?
 
И если я правильно понял, то если использовать DebugView, то значения переменных будут выводиться там, а обычные сообщения в обычном окне для message, и лично мне кажется, будет сложно совмещать по времени, что после чего следовало. Или такой проблемы не возникает?
debugview - где его взять и как им пользоваться?
 
Цитата
swerg написал:
От обычного message отличается тем, что отладочный вывод вы видите только при запущенном внешнгем перехватчике таких сообщений (например - DebugView).
Я пока решал эту проблему путем переменной PrintOtladka, и если она была равна True, то вывод шел средствами обычных message, а если False, то вывода не было. Так что результат одинаковый, но без лишней библиотеки.
А как она по скорости? Быстрее чем обычный message?  
Отладка скриптов Lua для Quik., Как произвести отладку скрипта?
 
Люди добрые, а можете объяснить про debugview что это за зверь?
Специально отдельную тему создал, чтобы проще было потом найти нужную информацию
https://forum.quik.ru/forum10/topic2290/
debugview - где его взять и как им пользоваться?
 
И можно хотя бы в двух словах объяснить, чем он отличается от обычного message?

Если я выполняю команду из примера в документации к PrintDbgStr:

PrintDbgStr("test1")
то ошибки не выдает, но и ничего нигде не выводит. В какое окно он это выводит?
debugview - где его взять и как им пользоваться?
 
Здравствуйте.

В одной из веток прочитал про отладчик (вернее про вывод отладочной информации) на экран. Речь шла о debugview.
Понял, что его надо откуда качать и как-то ставить, но не нашел в документации к Lua и Квику никаких упоминаний о нем.
Подскажите, что это за зверь такой, где его качать и как ставить и как пользоваться?

Заранее спасибо !  
Quik, версия, последющая за 7.5, Горизонтальные объёмы.
 
Цитата
s_mike@rambler.ru написал:
терминал квик не имеет информации о предыдущих днях и не может построить горизонтальные объёмы на исторических данных.
Сохранить эти данные, при желании, не составило бы никакого труда. объем этих данных не такой и большой
Стоп лосс
 
Конечно придется единоразово в настройках задать некоторые параметры - размер проскальзывания например. Но они требуют единоразового ввода и редко требуют изменений.  
Стоп лосс
 
Осмелюсь предположить, что автор просьбы имел ввиду именно новое выставление стоп заявки. И действительно, чтобы ее выставить (не имея какого-нибудь робота) придется основательно помучаться вводя разные циферки.
Но если сделать функционал, что если кликнуть на треугольничек о сделке на графике (когда они отображаются) (можно еще в счетании с Ctrl или Шифр) и тащить мушку верх или вниз, то в зависимости от этого выставляется стоп заявка.
А еще можно сделать допустим при Ctrl - ставится стоп, а при Shift - тейк профит.
В общем можно сделать очень удобно для пользователей
Использование функции os.execute без показа окна windows cmd
 
Цитата
s_mike@rambler.ru написал:
os.execute ("start /I /MIN /B program.exe")
Подскажите, а разве при этом само ДОС окно у вас запускается минимизированным?  
как убрать DOS окно при работе функции os.execute?
 
Уже видел обсуждение этого вопроса ранее, но там ни к чему толком не пришли.

Поднему этот же вопрос снова.
Вопрос к разработчиким (возможно как пожелание к доработке): например мне нужно запустить проигрывание аудифайла
Если я запускаю
os.execute("vlc.exe имя_файла")
то у меня запускается сначала досовское окно, а потом запускается окно самого VLC плеера.
Почему так? Это так сказать не очень удобно.
Кто-нибудь может подсказать, как эту проблему решить?

Для себя пока решил эту проблему так, чтобы это досовоское окно хотя бы исчезало сразу. Выполняю команду
os.execute("start vlc.exe имя_файла")
В этом случае окно дос запускается, запускает VLC в отдельном окне, и само ДОС окно закрывается.  
dofile()
 
Здравствуйте. Подниму эту тему, потому что озадачился этой же проблемой.
Можно ли как-то из одного скрипта, запустить другой, но так, чтобы его работа выполнялась аналогично тому, как если бы мы его запустили из панели ЛуаСкриптов?
Т.е. полностью независимо от запускающего его скрипта и полностью со своими переменными.  
7.5.0 несколько пожеланий
 
1) очень поддерживаю! в одной кнопке стало очень неудобно. Уж меню пока еще не очень загружено.
2) отвечу за разработчиков - шаблон можно удалить - когда начинаешь вводить фигуру, и если зайти в выбор шаблона, то справа есть крестик, для удаления.  
Можно ли убрать совсем или изменить ширину столбика с номером строк в таблице на экране?
 
зарегистрируйте пожалуйста!
А заодно тогда и возможность убрать заголовок столбиков. Он часто тоже не нужен, а место под него пропадает
Можно ли убрать совсем или изменить ширину столбика с номером строк в таблице на экране?
 
Здравствуйте!

При создании своей таблицы средствами QLUA можно менять ширину столбиков, всех кроме того, в котором будет писаться номер строки.
Однако этот номер строки зачастую совсем не нужен, а занимает приличное количество места.
Подскажите, можно ли как-то изменить его ширину? В частности до нуля.
Заранее спасибо.  
Вопрос к разработчикам: Вам не стыдно?
 
мне кажется таких пользователей можно сразу банить )  
Толщина рамок у окон в QUIK - решение проблемы и просьба доработки
 
Для тех, кто не хочет ждать реализации моей просьбы, решение проблемы оказалось очень простым.
Качаете программу твикер для винды - winaerotweaker
Можно скачать отсюда http://winreview.ru/forum/viewforum.php?f=1
Там меняете толщину рамок на "ноль"
Толщина рамок у окон в QUIK - решение проблемы и просьба доработки
 
Невооруженным взглядом видно, что толщина границ окон сильно выросла, и занимает чудовищное количество места.
Сегодня я наконец поборол эту проблему, за счет изменения параметров Windows 10, влияющих на толщину окон.
Я понимаю желание разработчиков Квика использовать некоторые значения из свойств Windows, но подумайте каково пользователям, которые настроили терминал идеально под себя, а потом ставят другую винду, и видят дикую несуразицу. Более того, если приходится переключаться с одной винды на другую (а в переходный период это часто случается), невозможно иметь общие настройки.
Одним словом просьба к разработчикам, хранить все настройки окон в файлах *.wnd и не использовать свойства операционной системы.
В дополнение, если уж кто-то будет просить "широкие рамки", в чем я сильно сомневаюсь, то можно сделать такую опцию в настройках терминала.  
Толщина рамок у окон в QUIK - решение проблемы и просьба доработки
 
Толщина рамок у окон в QUIK - решение проблемы и просьба доработки
 
[URL=http://fastpic.ru/][IMG]http://i85.fastpic.ru/big/2016/1116/7f/3e56ab9d34eb89719aa6acabedc7cb7f.jpg[...]
Толщина рамок у окон в QUIK - решение проблемы и просьба доработки
 
Затем я поставил Windows 10 на этот же самый компьютер, с тем же самым экраном и тем же самым разрешением.
[URL=http://fastpic.ru/view/85/2016/1116/3e56ab9d34eb89719aa6acabedc7cb7f.jpg.html][IMG]http://i85.fastpi...]
Толщина рамок у окон в QUIK - решение проблемы и просьба доработки
 
Хочу обратиться к разработчикам с просьбой убрать "глюк", или сделать его настраиваемым.
Речь пойдет о ширине рамок у окон в квике.
Дело в том, что раньше я работал на Windows 7. И там окна выглядели вот так

http://i83.fastpic.ru/big/2016/1116/f1/257d4ba8363b4b99dca528b4439ff1f1.jpg
Нужно проверить скрипт Луа, Есть скрипт, писал его знакомый. Надо проверить его на работоспособность.
 
Написал в личку
рисование - прямоугольник
 
Спасибо!  
Ошибка оператора string.find
 
Ух ты! Спасибо большое!  
Ошибка оператора string.find
 
Здравствуйте!

Столкнулся с такой проблемой.
У меня есть служебная переменная (пусть ее имя будет А) которая может принимать значение "ххх UD" или "ххх UD+"
Где ххх - может быть любой текст.
В зависимости от наличия знака "+" будут совершаться разные действия.
И тут возникает ошибка в операторе if с таким условием:

if string.find(A, "UD+") ~= nil then
данный оператор, всегда возвращает номер найденного вхождения, независимо от того, какое значение имеет переменная А, с плюсом или нет. Ощущение, ощущение, что при поиске, этот плюс просто отбрасывается.

Большая просьба исправить данную ошибку в операторе, ведь + это такой же символ как и все остальные. Я думаю подобная проблема и с другими символами.
Я пробовал делать так:
if string.find(A, "UD\+") ~= nil then
но это не помогает.
Линия открытия рынка, Линия открытия рынка
 
Почему-то не на всех копиях квика заработало, поэтому еще переписал:

Settings =
{   Name = "Day Open Price",
    line =
    {    { Name = "Open",
             Color = 0xd7ff,
             Type = TYPE_POINT,
             Width = 2
          }
    }
}

function Init()
return #Settings.line
end

price_begin_day = nil

function OnCalculate(indx)
-- если новый день, то сохраняем цену начала дня
if T(indx).hour <= 10 and T(indx).min == 0 then
price_begin_day = O(indx)
end
return price_begin_day
end
Линия открытия рынка, Линия открытия рынка
 
Т.к. идея понравилась, подправил предложенный скрипт. Вот результат:

Settings =
{   Name = "Day Open Price",
    line =
    {    { Name = "Open",
             Color = 0xd7ff,
             Type = TYPE_POINT,
             Width = 2
          }
    }
}

function Init()
    return #Settings.line
end

function OnCalculate(indx)
  local dt = T(indx)
-- если новйы день, то сохраняем цену начала дня
if dt.day ~= last_day then
prece_begin_day = O(indx)
last_day = dt.day
end
  return prece_begin_day
end
Линия открытия рынка, Линия открытия рынка
 
Приведенный индикатор почему-то не работает - выдает сплошную линию (вернее из точек) на цене НОЛЬ!
Как включить файл в луа?, Есть ли в Луа аналог директивы include из С
 
Я давно вынес общие процедуры во внешний файл,и в самом начале каждого скрипта импортирую его:

dofile (getScriptPath().."\\library.lua")

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

function OnTrade(trade)

Она будет выполняться в случае совершения любой сделки.
В качестве параметра trade будет передаваться переменная типа таблица с этой сделкой.
Там уже можно найти поля цены, количества и т.д.  
Последняя доступная версия QUIK
 
Скажите, а где-то есть тема или подписка на рассылку новостей о выходе новых версий квика?
Если нет, то просьба к разработчикам - можно создать одну тему (например в этом разделе форума) и в нее постить сообщения о выходах новых версий. А желающие могут подписаться на эту тему и получать сообщения на почту.
А тему можно сделать закрытую, чтобы посторонние не могли в ней ничего обсуждать.  
Установка отметок на графике через скрипт
 
Если я ничего не путаю, то метки всегда ставятся только за счет какого-то графического файлика, который собственно и отображается на графике.

А у вас этог параметр IMAGE_PATH не указан
Подскажите как создать папку, переименовать папку или файл, удалить файл?
 
Спасибо!  
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 След.
Наверх