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

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

Страницы: Пред. 1 2 3 4 5 6 След.
Снова AddLabel
 
Как говорится "у кого что болит"

Описание проблемы:
В случае прикрепления графика якорем к таблице текущих торгов функция AddLabel лепит метку согласно только идентификатору в текущий на графике инструмент. T.е. метка о сделке по любому тикеру выставляется в текущее окно графика.    В итоге в одном окне мешанина из меток разнообразных инструментов, а при переключения на нужные они отсутствуют.  В настоящее время способов автоматически правильно разносить метки на графики соответствующих тикеров нет. Единственный вариант какой я придумал - вручную открывать нужное окно и запускать скрипт который перебирает список UIDов меток относящихся к этому тикеру, поштучно удаляет ее и выставляет заново с другим uid что бы она появилась на текущем графике.
Замечу, что метки покупки/продажи выставляемые самим Квиком попадают в окно нужного инструмента автоматически.

Предложение:

1. Доработать функцию AddLabel возможностью выставлять метку на график в соответствии с параметром "тикер инструмента". При отсутствии параметра пусть лепит в текущее окно.

или

2. Дать возможность позиционировать средствами qlua указатель в таблице текущих торгов на нужный тикер с тем что бы  текущий график переключился на нужный инструмент. Тут наверное придется создать еще функцию получения текущей позиции укозателя.

Прошу рассмотреть данные предложения.
Обязуюсь честно напоминать о них ежегодно )
Метки в индикаторе, При перезапуске Квика получается наслоение меток
 
Цитата
Kolossi написал:
Я сохраняю UIDы меток выставленным скриптами в файл и потом если надо удаляю поштучно.
Это полезно еще при необходимосте перезапуска метки в случае прочих косяков.
Я имел ввиду вариант удаления меток не при закрытии Квика, а при повторном запуске.
К стати в приведенном коде OnDestroy() если в цикле for ...  поставить явно

local res=DelLabel(Settings.tag, Labels[i])
message(tostring(res).."/"..Settings.tag.."/"..tostring(Labels[i]))

сообщение выдаст правильные параметры?
Метки в индикаторе, При перезапуске Квика получается наслоение меток
 
Я сохраняю UIDы меток выставленным скриптами в файл и потом если надо удаляю поштучно.
Это полезно еще при необходимосте перезапуска метки в случае прочих косяков.
Отметки на графике QUIK средствами QLUA
 
Старатель, это я к тому, что в ответ на предложение сделать привязку метки к тикеру мне саппорт посоветовал  убрать галочку напротив пункта "Оставлять трендовые линии, фигуры и метки при смене инструмента".  После чего бардак с метками на графике успешно превращается в полный бардак.
Отметки на графике QUIK средствами QLUA
 
Цитата
Daniil Pozdnyakov написал:
Kolossi, здравствуйте.

Предлагаем в настройках графика в левом выпадающем списке в пункте "Диаграмма" убрать галочку напротив пункта "Оставлять трендовые линии, фигуры и метки при смене инструмента" и нажать "Применить".
Даниил, все таки  помогите пожалуйста разобраться убогому чем это
Вот убрал я эту галочку. График привязан якорем к таблице текущих торгов, стоит идентификатор "RZ".
В таблице текущих торгов выбран Газпром. В это время в скрипте срабатывает заявка по инструменту Сбербанк и скрипт выставляет метку с ценой и временем в график с идентификатором "RZ".  Куда она выставляется? При переключении графика на Сбербанк метки нет.  На графике Газпрома ее тоже нет. Но в системе по uid она находится.
Отметки на графике QUIK средствами QLUA
 
Цитата
Daniil Pozdnyakov написал:
Kolossi, здравствуйте.

Предлагаем в настройках графика в левом выпадающем списке в пункте "Диаграмма" убрать галочку напротив пункта "Оставлять трендовые линии, фигуры и метки при смене инструмента" и нажать "Применить".
Ага, заработало, спасибо.
Тогда подскажите еще галочку что бы из меню правой клавиши при наведении на метку созданную средствами qlua при выборе "удалить" удалялачь одна метка а не все.
Отметки на графике QUIK средствами QLUA
 
К разработчикам:

господа, если вы сделали в последних версиях якорь позволяющий привязывать к окну графика тикеры таблицы текущих торгов, то может быть пора обратить внимание на то, что метка привязывается только к идентификатору графика.
В итоге на графике полная мешанина из меток при переключении текущего инструмента.
Прошу рассмотреть возможность дополнительной привязки меток к тикеру инструмента что бы при переключении графика на нем оставались только метни касающиеся этого инструмента.

PS Знаю, сейчас мне покажут ссылку, где такое предложение одобрено разработчиками много лет назад и однажды будет реализовано. )) Но все же
Отметки на графике QUIK средствами QLUA
 
Кто-нибудь встречал типа архива графических файлов .bmp меток для Quik ?
Нужны стандартные треугольники куплено-продано.
Как сделать вывод сообщений скрипта?, Как сделать вывод сообщений скрипта при отключении сообщений квика
 
Аркадий, то что я написал касается создаваемого окна системных сообщений
Как сделать вывод сообщений скрипта?, Как сделать вывод сообщений скрипта при отключении сообщений квика
 
Если в окне сообщений поставить фильтр по типу сообщения (там их три) то можно оставить только messages скрипта

Пример для звука:
Код
w32 = require("w32")

function main()
    is_run=true
    while is_run do
        PlaySoundFile("c:\\QUIK_VTB_85\\MessTrader.wav")
        is_run=false
        sleep(500)
    end
end
function OnStop()
  is_run = false
end
-- функция проигрывания файла
-- вызов: PlaySoundFile("имя файла")
function PlaySoundFile(file_name) 
  w32.mciSendString("CLOSE QUIK_MP3") 
  w32.mciSendString("OPEN \"" .. file_name .. "\" TYPE MpegVideo ALIAS QUIK_MP3")
  w32.mciSendString("PLAY QUIK_MP3 ") 
end
Как узнать кол-во сделок на покупку и продажу определенной свечи LUA QUIK
 
Цитата
nikolz написал:

---------------------
Могу предложить следующий алгоритм.
общее число сделок берете из объема.
Если свеча закрылась ниже открытия то на продажу было больше чем на покупку.
По расстоянию от открытия до закрытия можете судить существенно больше или нет.
----------------------------
Считать по обезличенным сделкам можно, но бесполезно для торговли.
-------------------------------
Приведенный мною алгоритм соответствует  теории японских свечей, которая работает на практике.
----------------------
Учите теорию.
 Сражен глубиной мысли и математическими познаниями. Мастера хрустального шара нервно икают
Как узнать кол-во сделок на покупку и продажу определенной свечи LUA QUIK
 
Выбрать из all_trades нужный диапазон даты и времени  
Закладки
 
Цитата
swerg написал:
https://quik2dde.ru/viewtopic.php?id=329
Как разместить таблицу на нужной вкладке
Отличный костыль. Только после старта main() нужно давать очень приличную задержку что бы окно открылось там где надо при перезапуске квика. Особенно если такой скрипт не один.

А что-то мы в текущем году это пожелание еще не регистрировали )
Последовательность функций обратного вызова
 
То, что искал - фильтрация таблицы из OnStopOrder по полю linked_ordер.
Ну и наверное по битовому флагу исполнения заявки.

Всем ответившим спасибо!
Последовательность функций обратного вызова
 
Всем добрый день!

При подаче и обработке лимитных заявок давно использую простую последовательность:

sendTransaction(...)( задание TRANS_ID) --> OnTransReply(...)(получение номера заявки order_num )-->OnTrade(...)(обработка исполнения заявки с номером  order_num)
Функцию OnOrder() тут не использую благо до сих пор не было необходимости.

Попытка сделать подобную схему для стоп-заявки типа тэйк-профит поставила в тупик - полученный от  OnTransReply при выставлении стоп-заявки order_num бесполезен т.к. после срабатывания условий тэйка  сервером выставляется новая заявка с новым номером  order_num который нужно как-то отфильтровать и получить.

Прошу у знатоков совета по оформлению последовательности функций обратного вызова для этого типа заявок.
Как закрыть форточку?
 
Цитата
Старатель написал:
https://forum.quik.ru/messages/forum10/message39685/topic1675/#message39685
Твоюжвбогадушумать :(
Как закрыть форточку?
 
Наверное я не точно сформулировал вопрос разработчикам и по этому не вижу ответа.
Вопрос:
 Почему после закрытия пользовательской таблицы (см. пример) функцией DestroyTable(skt_id), функция IsWindowClosed(skt_id) считает что окно таблицы по прежнему открыто?
Как закрыть форточку?
 
Код
      skt_id = AllocTable()
      CreateWindow(skt_id)
      SetWindowPos(skt_id, 500, 0, 800, 400)
      local iwc1=IsWindowClosed(skt_id)
      local dt=DestroyTable(skt_id)
      local iwc2=IsWindowClosed(skt_id)
      message(tostring(iwc1).."/"..tostring(dt).."/"..tostring(iwc2))
Пардон, криво пример вставил
Как закрыть форточку?
 
Сломал себе мозг пытаясь закрыть окно способом указанным в документации.
 Тестовый пример:
Скрытый текст
В итоге вывод message: false/true/false
Это нормально? Как его еще можно закрыть чтобы оно было закрыто?
Как из скрипта открыть окно на нужной вкладке?
 
Вася, это только начало длинного пути в который мы посланы разработчиками очень давно.
Не только с проблемой открытия таблицы в нужной вкладке, но и той что при перезапуске квика любая таблица открывается в последней открытой вкладке вместо нужной. Скоро отпразднуем 10-летний юбилей регистрации этих предложений.

Огромное спасибо Sverg и еще ребятам за то, что помогли частично закрыть эти проблемы.
Ниже функция которую я использую. Требуется библиотека w32
Код
function OpenTable(Name,kid,pos) -- функция открытия таблицы (kid) с координатами (pos) в нужной вкладке (Name)
   local mmes=""
   local hQuikWnd = GetQuikMainWindowHandle() -- handle главного окна QUIK
   local hTabWnd = 0 --  handle окна вкладок
      if hQuikWnd > 0 then
         hTabWnd = w32.FindWindowEx(hQuikWnd, 0, "SysTabControl32", "")
         if hTabWnd ~= 0 and not w32.IsWindowVisible(hTabWnd) then -- отображение вкладок отключено
            hTabWnd = 0
         end
      end
   if hTabWnd > 0 then --  вкладки в терминале отображаются
      local prevIdx = w32.TabCtrl_GetCurFocus(hTabWnd)  --  индекс текущей активной вкладки
      local idxGr = w32.TabCtrl_GetItemIndexByText(hTabWnd, Name) -- индекс заданной вкладки
      if idxGr >= 0 then -- вкладка найдена
         w32.TabCtrl_SetCurFocus(hTabWnd, idxGr) -- переключение на найденную вкладку
         local txt = w32.TabCtrl_GetItemText(hTabWnd) --  название текущей активной вкладки
         mmes="   Вкладка " .. tostring(txt)
         CreateWindow(kid)
         SetWindowPos(kid, pos.a, pos.b, pos.c, pos.d)
         w32.TabCtrl_SetCurFocus(hTabWnd, prevIdx) -- назад на исходную вкладку
      else
         CreateWindow(kid)
         SetWindowPos(kid, pos.a, pos.b, pos.c, pos.d)
         local txt = w32.TabCtrl_GetItemText(hTabWnd)
         mmes="   Вкладка не найдена. Текущая" .. tostring(txt)
      end
   else -- вкладки не отображены, открываем в текущей
      CreateWindow(kid)
      SetWindowPos(kid, pos.a, pos.b, pos.c, pos.d)
      mmes="   Вкладка текущая"
   end
   return mmes
end
Ошибка запуска скомпилированного файла
 
Цитата
Vladimir написал:
Всех благодарю за помощь. Заработало.
Vladimir, поделитесь как "Заработало".
По ходу пьесы налетел на эту проблему. Скрипты вроде по умолчанию запускаются в 5.3.5
getPortfolioInfoEx в девятой версии
 
Пардон, нашел баг в скрипте.
Звиняйте дядьки, админ потри эту ересь pls
getPortfolioInfoEx в девятой версии
 
  Может быть кто-то уже разбирался с этим?

Почему-то в девятке возвращаемое значение getPortfolioInfoEx(...,2).all_assets абсолютно не соответствует значению соответствующего поля ТекСредства таблицы  Клиентский портфель. В восьмерке такого не было (
Android X
 
Цитата
Kolossi написал:
Доброго дня всем.
Споткнулся на попытке запустить Quik Android X. Не устанавливается соединение с сервером webquik.vtb.ru.
С браузера на компе вебквик с этим логином и паролем работает. Попробовал достучатся до этого сервера с браузера смартфона - до формы входа дело не доходит, отлуп по таймауту.
Сменил браузер - та же байда, другие сайты открываются нормально.  Понятно, что что-то в настройках андроида. Может быть кто-то уже по этим граблям пробежался и подскажет где копать?
Вроде разобрался. В браузере был выключен ssl и битая версия webquik была взята с GetsApp
Android X
 
Доброго дня всем.
Споткнулся на попытке запустить Quik Android X. Не устанавливается соединение с сервером webquik.vtb.ru.
С браузера на компе вебквик с этим логином и паролем работает. Попробовал достучатся до этого сервера с браузера смартфона - до формы входа дело не доходит, отлуп по таймауту.
Сменил браузер - та же байда, другие сайты открываются нормально.  Понятно, что что-то в настройках андроида. Может быть кто-то уже по этим граблям пробежался и подскажет где копать?
Таблица алгоритмических заявок
 
Цитата
Sergey Hlynovskii написал:
Здравствуйте Kolossi,
Проверьте, пожалуйста, в тот момент, когда Вы наблюдаете данную картину в таблице алго-заявок, видны ли биржевые инструменты в списке доступных инструментов или нет?  
Да, видны
Таблица алгоритмических заявок
 
Цитата
Kolossi написал:
Наблюдается утром после коннекта с сервером брокера и до получения статуса сессии "открыта" (1)
Скрин пришлю завтра

на всякий случай ссылка на хостинг
https://hostingkartinok.com/show-image.php?id=45086c8ec3e4b4d25c402130084aaa54
Таблица алгоритмических заявок
 
Наблюдается утром после коннекта с сервером брокера и до получения статуса сессии "открыта" (1)
Скрин пришлю завтра
getParamEx "last" Возвращает 0 для фьючерсов
 
Точно так же c облигациями - пока после открытия не прошла хотя бы одна сделка last возвращает 0 и цена последней сделки в таблице текущих торгов стоит нулевая.
Таблица алгоритмических заявок
 
А можно узнать у уважаемых разработчиков по какой причине в таблице алгоритмических заявок утром до начала торгов по каждой заявке пустое поле "Инструмент сокр."? Какой смысл тогда заполнения остальных полей этой таблицы в это время?
Настройки и их сохранение.
 
Цитата
BlaZed написал:
Сталкивался с такой проблемой
https://forum.quik.ru/messages/forum1/message51971/topic6116/#message51971

Был косяк в версии 8.11.0.66, в 8.12 был исправлен
Так что либо обновиться, либо (если не желаете обновляться) перед закрытием программы, отключитесь и подключитесь к серверу заново, тогда настройки котировок сохранятся.
Спасибо. Потрясу бубном пока брокер не обновит версию.
Настройки и их сохранение.
 
Я чего-то недопонимаю в логике настроек переноса заказа данных в настройки (?).
Стоял фильтр заказа котировок. Снимаю галочку "фильтр инструмента" класса в
/Программа/Получение данных/Котировки и уверен что все хорошо. Однако при следующем входе галка на месте.
Ручное сохранение настроек эффекта не дает.   Версия 8.11
Получение тикеров инсрументов
 
Цитата
Артем написал:
getClassSecurities ( class )
Спасибо! Как-то я проскочил мимо нее в доках.
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Цитата
Артем написал:
Kolossi, это неважно - размер датасорца меняется в момент завершения загрузки данных. При работе с колбеками тоже неважно - они явно указывают какая свеча была загружена.
Те вы утверждаете, что ds(Size) будет отличен от нуля только после завершения загрузки?
Получение тикеров инсрументов
 
Добрый день всем.

Подскажите, есть ли возможность получить с сервера в свою таблицу список ВСЕХ тикеров по конкретному классу?
Типа той которая используется в таблицах квика для настройки фильтров и тп.
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Как много ответов от умных людей. Читал, много думал.))
Может быть все можно будет сделать гораздо проще, если кто-нибудь скажет правду:
c какой свечи CreateDataSource начинает грузить данные - с нулевой или с последней?
запуск из работающего скрипта другого скрипта или скриптов
 
Цитата
swerg написал:
Цитата
Kolossi написал:
или привязку пользовательской таблицы к вкладке

https://quik2dde.ru/viewtopic.php?id=329
Спасибо! Завтра поверчу в необходимых вариантах и отпишусь.  Очень востребованный костыль )
запуск из работающего скрипта другого скрипта или скриптов
 
Цитата
Юрий С написал:
Цитата
Артем написал:
QUIK в этом плане ничем не отличается от обычного программирования - изо всех модулей и файлов допустимо иметь ровно один бесконечный цикл, тот который в main(). Все остальные модули должны работать по вызову и должны возвращать управление обратно в main. В Lua можно имитировать многопоточность с помощью сопрограмм ("coroutine").
Антон, НО в квике же это реализовано!!! Мы же вручную можем запустить несколько файлов(скриптов), и они могут работать параллельно!! Я только это имею ввиду, мне не надо распараллеливать задачи по процессорам, только лишь обратиться к ответственному за запуск модулю квика из своего скрипта передав ему путь и имя файла со скриптом, который я хотел бы запустить, точно так же как я это делаю через таблицу доступных скриптов. И запускай хоть с main,хоть с бесконечным циклом. Вот в чем задача.
Поддержу Юрия. Мне бы тоже хотелось запускать все свои скрипты при помощи одного. Как это делается в операционках при помощи .bat или .sh файлов. Однако я полагаю такая мечта несбыточна.
Может быть в следующих версиях мы увидим еще перенос какого-то параметра из одного пункта меню, однако полагаю что мне уже не увидеть даже иконки окна скриптов на панели или привязку пользовательской таблицы к вкладке. Жизнь коротка (
Отладка QUIK 8.12
 
Цитата
Евгений написал:
А кто просил форму ввода пароля с текущим языком клавиатуры, покажите эту просьбу, это же в каждом виндовс есть. Кому счастье привалило и его желание исполнилось, где эта толпа пользователей?
Ну например мне привалило. И всем у кого квик на виртуальной машине под mac os или linux. Это сильно беспокоит?
PostMessage из LUA
 
Прочитал.  Преодоление трудностей наше все.  Если их нет, надо создать ))
Пару лет назад понадобилась отправка из скрипта e-mail сообщений. Сделал папку ..mail\ куда скрипт кладет файл сообщения.
Как только он там появляется штатный Automator операционки его подхватывает и отправляет. Все. До сих пор все шлется без нареканий.

Правда потом сделал создание файла в ..\tmp, а уже потом копирование его в ..mail\ что бы шустрый автоматор не отправил его частями в момент создания.
Подкиньте идею
 
Цитата
Nikolay написал:
Цитата
Легко давать советы не особенно вникая.)
Передать колбэк не проблема только вот что бы принять его другим скриптом механизма прерывания и включения параллельного потока нет. Или вы предлагаете main() в цикле опрашивать переменную на случай наступления события?
Да, опрашивать по изменению количества в очереди. Собственно, это не такая и редка задача: Квик исполнитель, а интерфейс может быть в базе данных, на таблицах.
Ясно, что лучше написать прямую библиотеку, но раз ее нет, надо передавать команды по каналам связи.
Попробую объяснить на пальцах.
В скрипте робота есть таблица в которой по дабл-клик на ячейку меняется значение некоторой переменной.
Таблица перенесена в другой скрипт.  Что дальше?
Никаких проблем нет с обработкой клика и передачи этого события в первый скрипт в виде изменения содержимого общей для двух скриптов переменной. Вопрос как ее получить в первом скрипте?
Постоянно опрашивая изменение в цикле? Это значит, что в определенном месте обработки скрипта. Замечу, что в первом случае это обрабатывается в параллельном потоке.
Подкиньте идею
 
Цитата
Nikolay написал:
Если у Вас ячейки привязаны к конкретному скрипту (т.е. реакция на нее однозначно для скрипта №2), особой разницы нет, где событие прошло. Делаете очередь событий и передаете события с параметрами обратно в скрипт через тот же механизм. А скрипт уже, в свою очередь, опрашивает на предмет нового события из своей области обмена.
Легко давать советы не особенно вникая.)
Передать колбэк не проблема только вот что бы принять его другим скриптом механизма прерывания и включения параллельного потока нет. Или вы предлагаете main() в цикле опрашивать переменную на случай наступления события?
Подкиньте идею
 
Swerg   огромное спасибо за библиотеку !!!
Все работает как хотелось. Дальше дело техники - передать цветовые коды и тп.

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

Ну и ладно, и так хорошо. Еще раз спасибо.
Подкиньте идею
 
Цитата
swerg написал:

Один скрипт выводит все таблицы, включая "сводную", другой кидает ему данные через

Цитата
Nikolay написал:
Библиотеки обмена: раз - StaticVar от swerg   https://quik2dde.ru/viewtopic.php?id=61   два - luashare от toxa   https://quik2dde.ru/viewtopic.php?id=306  

Ну или даже один скрипт выводит сводную таблицы, остальные ему кидают данные через указанные механизмы.
Спасибо, буду пробовать.
Подкиньте идею
 
Цитата
Старатель написал:
Вот  тут  пример организации обмена с двумя файлами: 1-й файл для передачи данных, 2-й - пустой файл, служит флагом для индикации готовности данных к считыванию.
И я плавно приехал от идеи общей таблицы к необходимости замены hdd на ssd
Подкиньте идею
 
Проверил. Нумерация окон меняется конкретно для каждого скрипта-увеличивается с каждым перезапуском начиная с запуска Квика.
Запустив два одинаковых скрипта при помощи перезапусков легко получил окна с одинаковыми идентификаторами.
Облом.
Подкиньте идею
 
Однако сейчас проверил. Номер окна выдает каждый раз следующий.
16-17-18-19... и так по порядку каждый раз при убиении и запуске скрипта.
Подкиньте идею
 
Цитата
Старатель написал:
Цитата
s_mike@rambler.ru написал:
Имея номер окна, можно писать в него из любых скриптов.
Не знаю, может у меня версия квика какая-то другая. Но нумерация окон не сквозная, у каждого скрипта своя, начинающаяся с 1.
Т.е., идентификаторы окон разных скриптов могут совпадать. И писать в окно другого скрипта не получается.
Ндааа, полил холодной водичкой (((
Подкиньте идею
 
Хотя...если проверять при помощи IsWindowClosed() и обращаться к файлу в случае получения true, то вроде рабочий вариант.
Спасибо.
Подкиньте идею
 
Опять же скрипты роботов должны постоянно проверять этот файл не сменился ли идентификатор в связи с перезапуском скрипта таблицы. Гемор с постоянным обращением к диску.
Страницы: Пред. 1 2 3 4 5 6 След.
Наверх