Михаил Понамаренко (Все сообщения пользователя)

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

Страницы: Пред. 1 2 3 След.
Событие закрытие терминала, OnClose() OnStop(flag)
 
Потребовалось кое-что сделать при событии закрытия терминала.
Но OnClose() и OnStop(flag) не выводит системные сообщения и не выполняет код внутри.
Если отключить qlua.dll в окне «Версии компонентов и плагинов», всё работает по инструкции.
Как можно объяснить такое поведение?
Код
function OnInit() -- Функция вызывается терминалом QUIK перед вызовом функции main().
   is_run = true
   return
end -- выход из функции: OnInit()

function main() -- Функция, реализующая основной поток выполнения в скрипте. Для ее выполнения терминал QUIK создает отдельный поток.
   while is_run do -- повторяющийся цикл, пока is_run = true
      sleep(1000)
   end -- выход из цикла: повторяющийся цикл, пока is_run = true
   return
end -- выход из функции: main()

function OnClose() -- Функция вызывается перед закрытием терминала QUIK и при выгрузке файла qlua.dll.
-- Под выгрузкой файла qlua.dll подразумевается отключение плагина QLua
-- в окне «Версии компонентов и плагинов» (см. п. 1.9. Раздела 1 Руководства
-- пользователя QUIK).
   message("OnCl ose="..tostring(1),1) -- отладка скрипта с выводом системного сообщения
end

function OnStop(flag) -- Функция вызывается терминалом QUIK при остановке скрипта из диалога управления и при закрытии терминала QUIK.
-- При остановке или удалении работающего скрипта Lua из диалога управления «Доступные
-- скрипты» параметр вызова flag принимает значение «1». При закрытии терминала QUIK –
-- значение «2».
   message("OnStop flag="..tostring(flag),1) -- отладка скрипта с выводом системного сообщения
   is_run = false
   return 5000
end
Оформление окон внутри терминала
 
...Но должна быть хорошая память на расположение таблиц. Когда рабочее пространство не меняется много лет, можно и в слепую нужную таблицу найти.
Оформление окон внутри терминала
 
Как вариант, можно отключить полосу с заголовком на таблицах всей вкладки.
Пр.кн.мыши на названии вкладки-Показать/убрать заголовок.
Использование памяти скриптами Lua
 
Спасибо за ответ.
Вот что у меня получилось.
1. Объявление локальной переменной не повлияло на затраты памяти.
2. Объявление переменной заранее не повлияло на затраты памяти.
3. Вызов штатной os.clock() не приводит к увеличению затраченной памяти.
Получается, что сделать максимально статичным использование памяти невозможно из-за её увеличения при повторном вызове штатных функций QLUA..
Использование памяти скриптами Lua
 
Интересен алгоритм использования памяти.
Ниже простой скрипт, который при каждом расчёте обращается к функции "getInfoParam". При запуске, в столбце "Память, КБ" = 41.04, и, с каждым новым расчётом, затраченная память увеличивается: 41.04, 41.07, 41.11...
Почему происходит увеличение используемой памяти, ведь данные не накапливаются?
Заметил, что в скриптах память увеличивается до определённого предела (примерно в 2 раза больше, чем при старте) затем сбрасывается до начального размера.
Возможно, где-то уже это обсуждалось, но не нашёл.
Код
function OnInit() -- Функция вызывается терминалом QUIK перед вызовом функции main().
   is_run = true
   return
end -- выход из функции: OnInit()
function main() -- Функция, реализующая основной поток выполнения в скрипте. Для ее выполнения терминал QUIK создает отдельный поток.
   while is_run do -- повторяющийся цикл, пока is_run = true
      ScriptTimeStart = getInfoParam("SERVERTIME") -- Время начала расчёта скрипта
      sleep(1000)
   end -- выход из цикла: повторяющийся цикл, пока is_run = true
   return
end -- выход из функции: main()
function OnStop() -- Функция вызывается терминалом QUIK при остановке скрипта из диалога управления и при закрытии терминала QUIK.
   is_run = false
   return
end
Демо-доступ и таблица "Позиции по клиентским счетам (фьючерсы)"
 
Нашёл отличие. В призраке limit_kind=-3.
Это на вашем сервере кто-то балуется, а таблица QUIK такое не отображает.
Из справки:
"Срок расчётов. Возможные значения: положительные целые
числа, начиная с «0», соответствующие срокам расчётов из
таблицы «Позиции по инструментам»: «0» – T0, «1» – T1, «2» –
T2 и т.д.
2 d_long STRING Эффективный"
Демо-доступ и таблица "Позиции по клиентским счетам (фьючерсы)"
 
Продолжу тему.
Я думал, не проснулся (вы тоже видите это?):

Вторая строка-призрак дублирует содержанием первую.
Легенда графика в QUIK 8.6, Легенда графика не отображается при добавлении нового графика на диаграмму.
 
В последних версиях QUIK, легенда графика не отображается, при добавлении нового графика на диаграмму.
Это не удобно, т.к, при добавлении новых графиков, не видно, какие именно индикаторы или графики используются.
Приходится включать отображение легенды для каждой области графика.
Понятно, что сделано это для экономии рабочего пространства, но неэффективно.
Куплю и раздам функции для LUA 5.3 x64, Нужны w32.dll lfs.dll qvcl.dll.
 
Нужно собрать:
w32.dll - для авто логина QUIK https://quik2dde.ru/viewtopic.php?id=78
lfs.dll - для работы с файлами
qvcl.dll - для создания визуального интерфейса https://quik2dde.ru/viewtopic.php?id=26
Эти функции будут и бесплатно, но без пинка, в неизвестном будущем.
Пинок в виде ₽10К (2+2+6) и народная слава гарантируется.
Ссылки на библиотеки выложу.
QPILE всё?, Роботы QPILE больше не будут торговать
 
К счастью, разработчики QUIK умеют читать мысли и пока я писал вопрос они уже ответили: https://forum.quik.ru/messages/forum1/message42519/topic5117/#message42519
"Проблемы работы с длинными номерами в QPILE (на любых версиях терминала). Для решения проблемы п. 7 следует реализовать Ваш алгоритм на языке  QLUA. При этом следует использовать версию терминала QUIK, которая на  момент публикации данного уведомления еще не вышла, но планируется к  выпуску до того, как данное изменение в торговой системе будет  внедрено."
Я прав. Хотя, вопрос был риторический. )
Буду потихоньку перекидывать алгоритмы на QLUA для версии QUIK, которая ещё не вышла.
QPILE всё?, Роботы QPILE больше не будут торговать
 
Учитывая переход на размерность идентификатора заявок и сделок до 19-ти символов, требуется обновления функционала QPILE.
Подробнее: https://forum.quik.ru/forum1/topic5117/
Но делать это никто не будет, т.к. поддержка QPILE приостановлена 6 лет назад.
В итоге, все роботы QPILE  больше не будут торговать.
Таблицы QPILE будут работать как и прежде.
Всё верно?
Брокер Открытие. Не работает MOVE_ORDERS., Ошибка: "Указанная транзакция по указанному классу не найдена: "SPBOPT"."
 
У брокера Открытие перестала работать возможность перестановки заявки одним запросом, через MOVE_ORDERS.
Аналогичная тема уже поднималась: https://smart-lab.ru/blog/590101.php, но брокер, похоже не знает, что это за ругательство "MOVE_ORDERS".
Версия QUIK 7.27.2.1, это последняя версия, на которую позволяет обновиться сервер Открытие.
Я вышел из положения путём отправки двойного запроса: удаления и выставления заявки.
Долблю сервер в два раза больше, за что прошу прощение.
Ещё и мои каждый день стали писать письма, мол моё ПО глючное.
Приходится высылать каждый день функционал с двойным запросом.
Поэтому, пишу письмо Вам, уважаемые разработчики.
Вы, по крайней мере, знаете, что есть такое  "MOVE_ORDERS".

Таблица обезличенных сделок. Открытый интерес., Как получить данные из QPILE?
 
Ясно, спасибо. Не мог разобраться то ли лыжи не едут, то ли я... Оказывается первое.
Таблица обезличенных сделок. Открытый интерес., Как получить данные из QPILE?
 
Цитата
Alexander Kopyatkevich написал:
Здравствуйте!
Уточните, пожалуйста, в самой таблице обезличенных сделок данные по этому параметру есть?
Так же, так как язык QPile регистрозависимый, попробуйте задать параметр большими буквами (то есть, должно быть OPEN_INTEREST).
Данные в самой таблице обезличенных сделок данные по этому параметру есть.
Пробовал и так:
GET_VALUE (GET_ITEM ("ALL_TRADES", i), "OPEN_INTEREST")
Другие параметры выводятся.
Таблица обезличенных сделок. Открытый интерес., Как получить данные из QPILE?
 
Цитата
Alexander Kopyatkevich написал:
Здравствуйте, Михаил Понамаренко.
Для таблицы обезличенных сделок параметр называется open_interest.
Сообщите, пожалуйста, open_interest не доступен в QPILE или что-то делаю не так?
Таблица обезличенных сделок. Открытый интерес., Как получить данные из QPILE?
 
TrdOpenInterest = GET_VALUE (GET_ITEM ("ALL_TRADES", i), "open_interest") 'открытый интерес
Не выдаёт данные. Проверил на последней версии 8.2.
Таблица обезличенных сделок. Открытый интерес., Как получить данные из QPILE?
 
Спасибо за ответ.
NUMCONTRACTS - это параметр таблицы Текущие Торги.
Нужен параметр из Таблицы обезличенных сделок.

 TrdOpenInterest = GET_VALUE (GET_ITEM ("ALL_TRADES", i), "?") 'открытый интерес
Таблица обезличенных сделок. Открытый интерес., Как получить данные из QPILE?
 
Таблица обезличенных сделок. Открытый интерес.
Как получить данные из QPILE?
В инструкции нет параметра и описания.
Количество лотов на валютном рынке
 
Спасибо, да, но там позиция, точнее объём в валюте депозита. Конечно, можно пересчитать поделив на стоимость лота. Получается, что на валютной секции лоты не транслируются.
Автоматическое поручение на перевод средств между площадками
 
Цитата
Anton написал:
Цитата
   s_mike@rambler.ru написал:
 эх... Вот было бы здорово...  Со счета фортс -  и прямо мне на счет... Красота!  
Что значит "было бы". Вся система ради этого и придумана. Ткскть  не прячьте ваши денежки .
На видео "грааль" спалил.
Автоматическое поручение на перевод средств между площадками
 
А что есть сказать господам разработчикам?
Количество лотов на валютном рынке
 
Цитата
Zoya Skvorcova написал:
Михаил Понамаренко, добрый день.

Посмотреть можете в таблице Текущие торги добавив параметр Лот.
Имеется ввиду лотов по открытым позициям.
Автоматическое поручение на перевод средств между площадками
 
Возможно ли программным методом организовать перевод из фондовой секции на FORTS и обратно?
Количество лотов на валютном рынке
 
Здравствуйте!
В какой таблице можно увидеть количество лотов на валютной секции?
Управление таблицей LUA, Вопросы и пожелания.
 
 

Напомню. Годы летят, а таблицы скриптов QLUA, всё также, бессовестно лезут на первую попавшуюся вкладку…

 
Улучшенный поиск, Пробел, как разделитель запроса
 

Логика простая. Пробел является разделителем вхождений в запрос.
Например.
Запрос «sr 215» выведет все 215-е страйки опционов фьючерса Сбербанка.

SR021500BB9

SR021500BC9

SR021500BD9

... и т.д.


Запрос «sr d» выведет все мартовские коллы опционов фьючерса Сбербанка.

SR013000BD9

SR014000BD9

SR015000BD9

... и т.д.

Такой способ ускоряет поиск.

индикатор исторической волатильности
 
 

Могу предложить Индикатор для QUIK Historical Volatility http://pmntrade.ru/indikator_history_volatility.html

 
Мерцание таблицы QPILE после повторной загрузки скрипта, Версия QUIK 7.16
 
Спасибо, пользуюсь уже более полугода. Ошибок нет.
Улучшенный поиск, Пробел, как разделитель запроса
 
Приветствую!
Уважаемые разработчики, не могли бы вы немного улучшить поиск.
Думаю, моя идея будет интересна и не сложна в реализации.
Например, мне нужно найти опцион "SR021500BD8".
Я могу найти "sr0215", увижу все опционы всех серий .
Чтобы более точно указать запрос, нужно ввести полностью код опциона.
Но если введу "sr0215 D8", я могу увидеть только опционы этой серии.
Т.е. пробел может служить разделителем частей запроса, ну, и само самой быть пробелом.
На практике знаю, что штука удобная.
Мерцание таблицы QPILE после повторной загрузки скрипта, Версия QUIK 7.16
 
Мерцание заголовков таблицы QPILE и её содержимого после повторной локальной загрузки любого скрипта в версии QUIK 7.16.
При этом, добавляется первая пустая строка.
Возможно возникало и в предыдущих версиях.
Решается удалением и созданием новой таблицы.
Просьба поправить в последующих версиях.
Фильтрация транзакций "своего" робота
 
Я сделал через комментарий http://pmntrade.ru/positions_history.html
Если нужно разделять одинаковые заявки внутри робота под одним комментарием использую ID.
Метки в новой версии 7.14, В новой версии изменились метки, где описание новых параметров?
 
Кстати, TRANSPARENT_BACKGROUND = 1, делает прозрачной и саму картинку, не только фон. Насколько понимаю, ошибка.
Метки в новой версии 7.14, В новой версии изменились метки, где описание новых параметров?
 
Можно же через GUI, а в коде нельзя. Неравноправие!
Метки в новой версии 7.14, В новой версии изменились метки, где описание новых параметров?
 
Здравствуйте!
А моё пожелание уже не меняется уже более 10 лет.
Возможность привязки метки к координатам окна диаграммы.
Это позволит фиксировать надписи, например, к левому верхнему краю.
Программы PMN Trade, Список моих программ созданных с 2007-го года.
 
Очень не хватает редактирования сообщения. В предпросмотре всё выглядело хорошо, а после отправки сообщения появились HTML теги. :smile:
Программы PMN Trade, Список моих программ созданных с 2007-го года.
 
Приветствую всех интересующихся снова. Времени на хобби сейчас стало меньше. Но, тем не менее, кое-что было сделано за последний год:
10.03.2017   Утилита для QUIK "Робот Скальпер"
Версия 20170310
Добавлено:
- Возможность использования трейлинг-стоп
17.03.2017   Индикатор Арбитраж для QUIK
Версия 20170317
20170316 – Увеличено количество изменений арбитражного индикатора.
20170317 – Устранён двойной расчёт индикатора. Подробнее: https://forum.quik.ru/forum10/topic2634/.
28.03.2017   Индикатор Арбитраж PRO для QUIK
Версия 20170328
20170328 – Добавлено: возможность указания даты экспирации патерном expДД.ММ.ГГГГ.
21.04.2017   Утилита для QUIK "Робот Скальпер"
Версия 20170421
- Добавлена возможность расчёта отступов, стоп-лосс и тейк-профит на основе индикатора АТР (Average True Range).
22.05.2017   Утилита для QUIK "Робот Сетка Д"
Версия 20170522
- Исправлен учёт количества прибыльных позиций подряд. В прежних версиях, если происходил переход на другой уровень, счётчик количества прибыльных позиций подряд сбрасывался на ноль. Было это сделано намерено, но теперь было решено отказаться от этой версии.
02.06.2017   Утилита для QUIK "Робот Сетка Д"
Версия 20170602
- Возможность автоматического определения кода бумаги. Например, если указать "?", то код бумаги будет опеределён из легенды (названия) индикатора. Работает только для FORTS. Позволяет быстро переключать торговый инструмент, меняя график при помощи привязки к таблице Текущие торги (Таблица Текущих Параметров).
16.08.2017   Утилита для QUIK "Дубликатор сделок QUIK-QUIK"

20170715 - Возможность совершения в получателях дополнительных сделок, т.е. свои сделки.
20170715  - Возможность дублирования из нескольких QUIK в один.
20170731 - Возможность работы через Интернет. 20170816 - Возможность отключения полной синхронизации.
24.11.2017   Утилита для QUIK "Робот Скальпер"
Версия 20171123
- Добавлена возможность "Режим Ассистента". Робот подхватывает выставленную трейдером заявку для входа и далее работает в обычном алгоритме.

Версия 20171124

- Добавлена возможность "Режим Последовательного входа в позиции". Например, если "Последовательный вход в позиции" = "Да", робот сначала будет выставлять только первую заявку для входа из списка. Когда произойдёт вход в первую позицию в полном объёме, будет выставляться заявка входа второй позиции и т.д. Если применяются ТП и СЛ, они будут выставляться сразу, после входа в позицию.
13.03.2018   Утилита для QUIK "Робот Скальпер"
Версия 20180310
- Добавлена возможность "Граница волатильности". Можно определять в каком состоянии рынка (трендовом или контртрендовом) робот будет торговать. Уровень волатильности определяется индикатором АТР. Например, если значение АТР выше указанного уровня, то состояние рынка будет определено, как "трендовое". Если мы выбрали торговлю только в контртрендовом состоянии рынка, то открытые позиции будут ожидать закрытия по стоп-лосс или тейк-профит, но новые позиции открываться не будут.

Версия 20180311

- Добавлена возможность указания стоп-лосс на основе значения индикатора. Например, если укажем в настройках стоп-лосс "!стоп", то нужно создать индикатор с идентификатором "стоп". Значение для стоп-лосс будут приходить из этого индикатора в неизменённом виде.
Аналог функции eval для lua, Аналог функции eval для lua
 
...выведет 9.
Аналог функции eval для lua, Аналог функции eval для lua
 
Цитата
Sergey Gorokhov написал:
Здравствуйте,
Можно попробовать через loadstring
Код
   function   calculateString (str)
    return  assert(loadstring( "return "  .. str))()
 end 
  
Отличное решение! Большое Вам спасибо!
Как и предполагал, можно пользоваться всеми math функциями, например, "math.pow(3,2)" выведет
Аналог функции eval для lua, Аналог функции eval для lua
 
Задача простая.
Есть переменная типа string str = "1+(2*3)".
Нужно из неё получить результат 7.
Есть два способа.
Первый - пишем парсерную функцию eval. Хорошая функция, учитывающая скобки, приоритет операций и т.д. занимает около 1000 строк.
Второй - просто и изящно передаём строку в назначение переменной, например res = 1+(2*3), будет равен 7.
Код
function calculateString(str) {
  return (new Function('return ' + str))();
}
Это пример для JavaScript. Где-то видел аналогичный для LUA, но не могу найти.
Помогите с решением задачки.  :what:
Копирование сделок., Копирование сделок.
 
Утилита для QUIK "Дубликатор сделок QUIK-QUIK"
http://pmntrade.ru/double_trades_quik-quik.html
Последние обновления:
20170715
- Возможность совершения в получателях дополнительных сделок, т.е. скрипт получателя видит только свои сделки.
20170715  - Возможность дублирования из нескольких QUIK в один.
20170731 - Возможность дублирования сделок через Интернет.
Перекрестие с информацией, Прошу добавить в ближайшие 50 лет
 
Спасибо!
Быстро реагируете!  :lol:
Неверный код клиента в MOVE_ORDERS, Ошибка Неверный код клиента при вызове транзакции перестановки заявки FORTS
 
А пока проблема решается, может есть способ из кода узнать используется ли единый брокерский счёт (ЕДП)?
Феерическое
 
Неверный код клиента в MOVE_ORDERS, Ошибка Неверный код клиента при вызове транзакции перестановки заявки FORTS
 
Приветствую!
Появилась ошибка "Неверный код клиента" при вызове транзакции перестановки заявки FORTS.
При этом, заявка выставляется и снимается без проблем с аналогичным массивом.
Проблема возникла у брокера Открытие, при использовании Единого брокерского счёта и субсчетов.
В других вариантах у этого же брокера ошибка не наблюдается.
Перерисовка индикатора из кода, Перезапуск OnCalculate()
 
Всё же, решить проблему не удалось. Проблема именно в том, что пересчёт индикатора задним числом удалось сделать только на новом тике. Если пересчитывать ранее, например, на последнем баре, получаем всё те же нули с верхнего графика.
Перерисовка индикатора из кода, Перезапуск OnCalculate()
 
s_mike@rambler.ru, спасибо за хорошую мысль. Действительно, перерисовать индикатор можно только таким способом, прогнав весь массив тайм-серии сначала. А событием для этого сделаю ненулевую цену графика. Попробую.
Но, всё равно, "телега бежит впереди лошади".
Может уважаемые разработчики хоть, как пожелание зарегистрируют запуск расчёта индикаторов после получения данных всех графиков на диаграмме.  
Перерисовка индикатора из кода, Перезапуск OnCalculate()
 
Цитата
Sergey Gorokhov написал:
Михаил Понамаренко  ,
Все равно не воспроизводится.
быть может у Вас индикатор все-таки создан из окна с верхним графиком?
Попробуйте повторить на разных инструментах.
Для чистоты эксперимента, установил QUIK 7.10 с Вашего сайта. Ничего не менял в настройках, только скопировал тестовый индикатор и добавил окно второго инструмента. Инструменты другие. Но картина такая же. (
Перерисовка индикатора из кода, Перезапуск OnCalculate()
 
Николай Камынин, индикатор в QUIK прорисовывается раньше, чем приходят данные графика. А перерисовать индикатор не представляется возможным любыми способами, в т.ч. во внешней библиотеке. Или я не прав?
Перерисовка индикатора из кода, Перезапуск OnCalculate()
 
Sergey Gorokhov, проблема актуальна:
Перерисовка индикатора из кода, Перезапуск OnCalculate()
 
Sergey Gorokhov, посмотрите видео:
Страницы: Пред. 1 2 3 След.
Наверх