Несколько возможных причин, по которым уведомления на смартфоне приходят с задержкой после блокировки экрана, и способы их устранения:
Некорректный статус приложений. Узнать и изменить его можно в расширенных настройках через меню «Режим разработчика». Для этого нужно перейти в «Настройки» → «Сведения о телефоне» → «Сведения о ПО» и 7 раз подряд нажать на пункт «Номер сборки». После в меню главных настроек появится пункт «Режим разработчика». В нём нужно найти пункт «Приложения в режиме ожидания» и в списке найти приложения, уведомления от которых приходят с задержкой. Затем просмотреть их статус и при необходимости изменить на «Active».
Режим энергосбережения. Нужно проверить, что он отключён на смартфоне.
Добрый день, В своей таблице использую обработку нажатия правой и левой кнопки мыши. С левой все нормально, а справой такая проблема После обработки нажатия правой кнопки мыши в моем колбеке,терминал выдает предложение сортировки:
Как сделать так, чтобы это предложение не появлялось.
Lelikov написал: Спасибо за ответ. Можно ли даже в функции OnCalculate(i) вызвать время свечи? Как узнать, к примеру, время открытия 555 свечи на минутном графике газпрома?
можно:
просто прочитайте параметры свечи с номером 555:
Функции для доступа к источнику данных: Функции для доступа к источнику данных O,
H, L, C, V, T принимают в качестве параметра индекс свечи и возвращают соответствующее значение в формате:
NUMBER <названиефункции>(NUMBER index)
Функция Size возвращает текущее количество свечек в источнике данных. Формат функции: NUMBER Size()
Описание значений функций O, H, L, C, V, T , Size совпадает со значениями, приведенными в разделе Функции для работы с графиками.
-------------------------
если надо читать индикатор то эта функция: GetValue - Функция предназначена для определения значения, установленного на выбранной линии указанной свечи индикатора:
Формат вызова: NUMBER value GetValue(NUMBER index, NUMBER line_number)
Параметры:
index – индекс свечи;
line_number – номер линии.
-------------------- Т е цена закрытия 555 свечи -это C(555) , время свечи T(555) - это таблица см док.
Lelikov написал: Доброго дня. Наверное, данная тема обсуждалась, но найти ее не смог. Имеются расчеты индикатора (массив данных на определенное количество минутных свечей) и время в секундах откуда он должен начинаться. Каким образом можно в индикаторе (без использования идентификатора) определить к какой свечке относится данное время? Можно ли в индюке определять время открытия какой-то определенной свечи? К примеру: Время начала индикатора (Старт 1736477971). Как установить по данному времени индикатор на минутном или другом таймфрейме? Какая это свечка от начала графика? Можно ли ее определить в функции Init() индикатора или другом месте кода?
при запуске индикатора ,функция OnCalculate(i) будет исполнена для всех свечей истории на графике. В этой функции для каждого номера свечи (i) сравниваете ее время с заданным.
Acaw написал: Спасибо за ответы, отец! разбираюсь с обработкой коллбэков по заявкам, onTransReply, onOrder, onTrade. При этом есть коллбэки на изменение позиций по деньгам и инструментам. Т.е. если у нас выставилась заявка значит изменилась позиция по деньгам, т.к. заблокировался объем, если прошла сделка, значит изменилась позиция по депо. А что если использовать эти коллбэки и смотреть в соответствующие таблицы для подбития баланса. В моих целях отслеживание коллбэков по заявкам нужно для понимания именно позиций по деньгам и инструментам, чтобы например не накупить лишнего, не превысить лимиты робота, не попасть на маржинальную позицию. Что думаете и как обстоят дела в реальности с этими коллбэками?
Все верно. Но при старте или каждом новом соединении надо просматривать соответствующие таблицы. -------------------------- Можно и без этих колбеков. Если зарегистрировали новую активную заявку, то изменится баланс по деньгам. Если зарегистрировали исполнение заявки, то изменится баланс по деньгам и бумагам. Таким образом, достаточно коблека заявок и таблиц money_limits и depo_limits для акций или аналогичные таблицы для фьючерсов и опционов.
Acaw написал: Отцы, с праздниками! Посоветуйте, пожалуйста, есть ли возможность в квике возможность связать сделку с позицией, а именно узнать время образования позиции? Т.е. у меня задача закрыть позицию не позднее 3 свечей от свечи, когда прошла сделка. Можно ли в квике как-то понять, что имеющаяся позиция возникла тогда-то и во столько?
Есть таблица сделок и там время сделки. Есть библиотека QLUA и там функции для чтения параметров сделки т е времени этой сделки.
nikolz написал: Надо цену прикрепить к правой шкале,а объем к левой получится вот так:
Спасибо за ответ! С объемом закрепленным к левой шкале стало лучше, но свечи повсеместно пересекаются с объемом и разделить их не получается (картинка ниже).
Прокрутил график МТ5 - объем нигде с ценой не пересекается. Но даже если бы пересечение произошло, график цены легко сжимается и свечи отдаляются от объемов.
А в Quik-e цена сжимается вместе с объемами, хотя мы закрепили цену к правой шкале, а объемы - к левой и объемы должны были остаться на месте.
Надо настроить диапазон для графиков Например, так - сжимаемся
pilot написал: Объемы в отдельном окне съедают очень много полезнй площади. Добавил объемы в окне с графиком кцены - получилась белиберда, свечи слились в одно линию. Как настроить график, чтобы объем и цена были в одном окне, но при этом каждый использовал собственную шкалу и не мешал другому? ПС В платформах других производительй это работает.
Надо цену прикрепить к правой шкале, а объем к левой получится вот так:
Kolossi написал: Даже в голову не приходило. Я под словом "пустышка" понял пустые функции с тем же именем в коде. Можно подробнее про создание dll и подключения его (куда?) для той же getWorkingFolder()?
Предположил, что Ваше приложение написано на API C for Lua. Это так? Но судя по вопросу, полагаю, что ошибся. Поясните подробнее про свое приложение и его тестирование.
Помогите, пожалуйста, разобраться, как пользоваться индикаторами, которые выложены тут.
Такой код выдает nil
dofile(getWorkingFolder().."\\LuaIndicators\\MA.lua") ds = CreateDataSource("TQBR", "NLMK", INTERVAL_D1) sleep(5000) k = ds:Size() message("==="..tostring(k)) -- для проверки получения данных message("==="..tostring(ds:H(k))) func = MA() ema8 = func(k, {Period=8, Metod = "EMA", VType="Close"}, ds) message("==="..tostring(ema8))
Последний message выдает nil, хотя данные в ds есть
В индикаторах есть инструкция в которой сказано: ------------------------------ Данный архив содержит примеры функций расчета индикаторов терминала QUIK. Файлы предоставляются "как есть". Допускаются любые правки на свое усмотрение.
ИНСТРУКЦИЯ: Скопируйте каталог LuaIndicators из архива, в папку с терминалом QUIK. После этого в терминале, в окне с графиком, станет возможным добавить индикаторы из архива. Имя каждого из индикаторов начинается с символа *.
----------------это пример для скрипта-- --Пример расчета индикатора Moving Average по произвольному набору чисел: dofile(getWorkingFolder().."\\LuaIndicators\\MA.lua") tbl = {[1]=2587.5, [2]=2588.5, [3]=2585.1, [4]=2583.7, [5]=2582.6, [6]=2581.2, [7]=2579.2, [8]=2574.7, [9]=2571.5, [10]=2570.8, [11]=2569.9, [12]=2569.7, [13]=2567.2, [14]=2569.3, [15]=2566.1, [16]=2567, [17]=2563.3, [18]=2565.2, [19]=2564.3, [20]=2565.9, [21]=2568.5, [22]=2572.2, [23]=2572, [24]=2572, [25]=2571.3} function main() func = MA() t_id = AllocTable() AddColumn(t_id,1,"Price",true,QTABLE_INT_TYPE,10) AddColumn(t_id,2,"MA",true,QTABLE_INT_TYPE,10) CreateWindow(t_id) SetWindowCaption(t_id,"MA") for i=1,#tbl do ma_out=func(i, {Period=3, Metod = EMA, VType=ANY}, {[i]=tbl[i]}) tmp=InsertRow(t_id,-1) SetCell(t_id,tmp,1,tostring(tbl[i]),tbl[i]) SetCell(t_id,tmp,2,tostring(ma_out),ma_out) end end
Kolossi написал: Ну как-то ручные манипуляции с пустышками по 3 тысячам строк кода не особо вдохновляют. И даже если собрать все q-функции в одном месте, то делать подмену после каждой правки то еще удовольствие. Возможность подключение к редактору qlua буду изучать. Я просто подумал может быть кто подскажет как в скрипте объявить функцию внешней и успокоить интерпретатор что, мол, она типа существует.
А причем здесь размер кода? Вы делаете пустышки как dll и подключаете.
Kolossi написал: Sublime Text 3 при проверке синтаксиса путем тестовой прогонки скрипта (Build) ругается на встроенные функции qlua, например на getWorkingFolder(). Понятно, что встроенный интерпретатор Lua их не знает и считает не объявленными глобальными переменными. Как его заткнуть? Мешает.
Nikolay написал: Не видел таких проблем для единого счёта. Вы бы вывели поля каждого счёта, да посмотрели что у него в поле классов.
У Вас единый счет? И указанный выше цикл его находит? -------------------------------- У меня нет единого счета и все работает автоматом. -------------------- Но у заказчика единый счет и x.trdaccid=nil . Пока решил проблему просто указав явно account. ------------------------- Но при дальнейшем изучении вопроса обнаружил в документации функции:
Функции получения информации по единой денежной позиции
getTrdAccByClientCode
getClientCodeByTrdAcc
isUcpClient
Таким образом, работа с единым счетом отличается от работы с раздельными счетами. Но нигде в документации это явно не объяснено и нет нигде ни слова о том, в какой таблице QUIK этот счет содержится. ---------------------- Если это не военная тайна, то хотелось бы получить вразумительное объяснение от разработчиков.
local str, x, account
local class_code = getClassInfo ( 'QJSIM' ) and 'QJSIM' or 'TQBR' -- в песочнице 'QJSIM', а в продуктиве 'TQBR'
str = "trade_accounts" ;
for i = 0 , getNumberOf (str) - 1 do
x = getItem (str,i)
if string.find (x.class_codes, class_code) then account = x.trdaccid; break ; end
end
Возможно я непонятно объяснил. Если счета различные, то все работает. Но если счет единый, то nil. Вопрос: Как получить торговый счет для формирования транзакции , если он единый.
Вопрос к разработчикам. Тестирую на демо поиск счата таким образом: ------------------------- str="trade_accounts"; for i=0,getNumberOf(str)-1 do x=getItem(str,i) if string.find(x.class_codes,c) then account=x.trdaccid; break; end end -------------------- Все находит замечательно. Но на реальном едином счете, счет не находится. Что не так?
Добрый день, Иногда можно замечать, как время сервера брокера куда-то убегает относительно времени компьютера и времени сделок. ----------------------- В моей практике были случаи, когда сервер брокера отставал. Получалось прикольно, время сделок было в будущем. ---------------------- Особенно важным становится знание точного времени в момент открытия торгов, если Вы совершаете сделки на открытие. ------------------------- Как известно, все биржи сверяют свои часы по серверам точного времени. -------------------- Сделал это на своем компьютере. Проверить насколько точно синхронизирован ваш компьютер можно здесь: https://www.ntp-servers.net/ у меня так:
еще я бы посоветовал для проверки откатится на версию 8.7.1.3. По моим наблюдениям это самая стабильная версия. Я в сбере так с нее и не ушел, хотя пытался уходить и на 10 и на 11 . Последние версии гоняю лишь в тестовом режиме.
на форуме тема уже обсуждалась. я приводил результаты теста обмена через файл. Это самый простой и достаточно быстрый способ. Рекомендую начать с него.
Как передать данные в КВИК из сторонней программы?? Из Квика во внешний мир я отправляю через SOCKET сервер который я поднял на ПИТОНЕ.
А в Квик из внешнего мира не получается(((
Если сторонняя программа на том же ПК, то нет надобности использовать SOCKET. Можно обмениваться через память или файлы. По скорости будет также или быстрее. ----------------- Если надо обмениваться через SOCKET то сделайте на Lua сервер и клиент в одном скрипте. В сторонней программе можно на любом языке. Универсально сделать все на си и обернуть для нужных языков . В инете есть примеры
Спасибо за ответ
СОКЕТ не принципиален
Подскажи пож-ста как обмениваться через ПАМЯТЬ ?? Через файлы умею, но хочу еще научится через память делать обмен данными
Спасибо
Для этого Вам надо будет написать функции на С или обернуть такие функции для Lua Методы обмена между процессами через память: Shared memory и Mapping memory.
Как передать данные в КВИК из сторонней программы?? Из Квика во внешний мир я отправляю через SOCKET сервер который я поднял на ПИТОНЕ.
А в Квик из внешнего мира не получается(((
Если сторонняя программа на том же ПК, то нет надобности использовать SOCKET. Можно обмениваться через память или файлы. По скорости будет также или быстрее. ----------------- Если надо обмениваться через SOCKET то сделайте на Lua сервер и клиент в одном скрипте. В сторонней программе можно на любом языке. Универсально сделать все на си и обернуть для нужных языков . В инете есть примеры
Лена написал: на компьютере открыто 36 вкладок ,на каждой вкладке 5 графиков и стакан. квик вылетает каждую минуту. Места на диске, где он установлен свобоно 100ГИГ, оперативка 8гиг Разрабы, откройте у себя 40 вкладок и выведите на каждую по 5 графиков и поработайте, выйдет у вас или нет. Бесит уже такая ситуация.
напомню, у меня ДВА инструмента-комп с виндой 7 и ноут с виндой 10, везде памяти вагон и везде одна и таже проблема и мне еще говорят-что проблема в моих девайсах? ну вот ага
когда квик вылетает есть сообщения или он просто закрывает все окна? и хорошо бы при этом наблюдать диспетчер задач (загрузка процессора и памяти)
VPM написал: Но в отличии от функции исполнение идет в собственном потоке, низко затратам, без использования задержек и блокировки основного потока, может приостанавливать исполнение и возобновлять впоследствии. Подход, в котором каждая стратегия работает в своей корутине, позволяет молниеносно обрабатывать ее, практически не влияя на производительность
Вы опять ошибаетесь . корутина выполняется не в отдельном потоке , а в отдельном стеке . Но поток в смысле многопоточность ОС будет один Т е все корутины , которые вы создадите будут исполняться на одном ядре и последовательно. они не мешают друг другу так как при их создании выделяется отдельный стек. ------------------ Но Вы можете верить что у вас все параллельно.
Такая проблема возникала и у Сбера. Заметил, что это обычно возникало, если подключаешься до начала торгов. Как правило, через некоторое время после такого сообщения соединение устанавливается без каких либо пинков.
Serge123 написал: В 9:50 выставил заявку в квике, перезагрузился для отмены алгоритма Нейгла, опять запускаю квик, на ввод пароля получаю сообщение, что у меня какие-то неправильные ключи и что-то не то с авторизацией, и так 2 раза.
А что было бы, если бы я попытался залогиниться в 4-й раз? Я, наверно, попал бы на блокировку аккаунта?
А волатильность сейчас высокая, может потребоваться срочно снять заявку (так оно и случилось), а то при её выполнении я стану должен брокеру хорошую сумму, а цена может пойти ещё ниже... Я методом тыка выбрал дополнительный сервер у брокера для связи и тогда только смог залогиниться.
Вопрос: что это была за ерунда такая?
Иногда я для подстраховки держу запущенную торговую программу на телефоне, но особого спокойствия всё равно не чувствую...
Сервер обнаруживает отсутствие связи через некоторое время. Поэтому если сразу и быстро, то может быть как у Вас.
ДмитрийР написал: Есть потребность сохранить одно число и иметь возможность использовать его в разных скриптах и индикаторах. Как это можно сделать без чтения\записи в фаил?
См API C for Lua или готовые внешние dll. ------------------- Зря пренебрегаете файлами. Работают быстро так как хранятся в памяти.
unikum33 написал: Подскажите, пожалуйста, как можно откатиться на 10-ю версию квика, пока идёт багфиксинг. Просто копирование, как при апдейте, через файловый архив не работает. QUIK просто не запускается.
есть в квике папка backup там в папках по датам Ваша предыдущая версия Берете оттуда файлы и копируете в QUIK. (на всякий случай сначала сделайте архив текущего содержания)
ну я и пишу,что квик не умеет работать с большим числом графиков. так что это не моя проблема а разрабов. я не долгосрочный инвестор, который купил и забыл. я внутри дн торгую разные инструменты и, естественно, мне надо переключаться между ними, а иначе как вы себе это представляете?
резюмирую - это не у меня система плохая и даже на игровом мощном буке все летит с квиком в тартарары,а квик сам не умеет работать с большим числом окон.
когда раньше я сидела с парой инструментов, проблем не было. вот и все
Ваш рассказ не содержит технических характеристик загрузки Вашего компьютера, поэтому могу лишь посочувствовать Вам. ------------------------------- Если биржа вернет торговый день с 7-00 до 23-59 и Вы будете все это время активно бегать по бумагам т е по графикам, то Вас надолго не хватит. -------------------- Что касается QUIK как торгового терминала, то писал на форуме результат краштеста для 200 бумаг, примерно 200 тысяч выставленных и снятых заявок за 4 часа. Загрузка процессора примерно 10%. ------------------- Если хотите конкретной помощи, то выкладывайте параметры из менеджера задач и оптимизируйте работу компа и свое беганье по графикам. --------------------- Есть еще один универсальный способ решить проблему. Надо поднять правую руку над головой. Глубоко вдохнуть и , резко опустив руку вниз , громко сказать "ну и ...... c ним ( тут по желанию можно добавить что-то про QUIK или про компьютер или про рынок )" После такого сложного дела можно попить кофе.
VPM написал: nikolz, Не понял что мешает организовать свой поток маин? Вот накидал на скорую руку, попробуйте так поставив свои данные. [CODE][/CODE]
Да ничего не мешает. Функцию я эту использую. Но у меня все иначе написано и проблем с этой функцией не было. ----------------------- Поэтому и хотел посмотреть именно ваше решение, в котором есть проблемы. ------------------------ Относительно задержки процессора. Я использую Event, об этом писал и вы знаете. В результате реакция на колбек запаздывает не более, чем на 0.00001 сек, а загрузка процессора 3-7%.