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

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

Страницы: Пред. 1 ... 45 46 47 48 49 50 51 52 53 54 55 ... 80 След.
Скрипт продолжает работать после выключения терминала, разрыва соединения, снятия всех сделок, После разрыва соединения со стороны брокера, скрипт не остановился и продолжает работать, не ясно как выключить
 
Цитата
boolean.rat написал:
возможно, создалась некая очередь на транзации у брокера, что и исполняется, пока не закончилась, если верна догадка, были ли другие подобные прецеденты, есть ли инструмент у конечного пользователя эту очередь очистить, не ожидая брокера?
вообще-то это называется DDoS атака.
Но вы ее неправильно организовали,
поэтому сервер брокера не упал,
а брокер очевидно терпеливый.  
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
s_mike@rambler.ru написал:
Цитата
_sk_ написал:
Очень хочется увидеть ответ от разработчиков по поводу изучения данной проблемы, хотя бы после новогодних праздников. Ниже описывается пример, как большое количество таблиц может появляться в реальной программе.

Предположим, что скрипту нужно хранить в памяти для работы 3000 свечей (сколько отдаёт сервер при запросе данных по ликвидным инструментам) по 10 инструментам и 5 таймфреймам. Время свечи QLua отдаёт в виде таблицы

 
Код
    datetime   =   { year   =     2021  , month   =     12  , day   =     30  , hour   =     11  , min   =     0  , sec   =     0  , ms   =     0  , mcs   =     0  ,   ..  . }
    
 
Соответственно, сразу же имеем 3000 * 10 * 5 = 150 000 таблиц. А если скриптов несколько, то можно ещё на порядок увеличить количество таблиц в памяти.

Конечно, конкретно здесь можно закодировать дату в виде строки "2021-12-30T11:00:00.000" или вообще числом 20211230110000000 для эффективности, но придётся писать код для выделения из этого числа отдельных полей, и арифметика даты/времени станет неудобной.

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

_sk_,

вы видите проблему, где ее нет

function main()
t = {}
for i = 1,150000 do
t = os.time()
end
while true do
sleep()
end
end

запустите, посмотрите размер занимаемой памяти.
"И Остапа понесло"
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
TGB написал:
Цитата
nikolz написал:
попробуйте исполнить Ваш тест вне квика и сравните время исполнения.
  Предложение почти гениальное, особенно с учетом того, что обуждается проблема производительности скриптов в QUIK  ::
 У вас нет понимания, что при встраивании Lua в QUIK его разработчиком вносятся изменения, которые способны изменить встроенного Lua?

Цитата
nikolz написал:
Дело в том, что в ваш пример некорректный.0.00016  это 160 us0.0026 это 2.6 ms
   Переведите все в терасекунды и вам все станет понятнее  ::

Цитата
nikolz написал:
У Вас тест VMLua.
   Спасибо. А то я этого не знал  ::
Судя по Вашему нытью Вы этого не знаете.
-----------------------
VMLua - никакого отношения к КВИКУ не имеет.
-------------------------
Разработчики КВИКА ничего в нее не добавляют и не являются авторами VMLua.
-----------------------------
Поэтому Ваши претензии не по адресу.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Можете пояснить какое отношение этот тест имеет к QLUA библиотеке?
Что в нем из нее используется.
У Вас тест VMLua.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
TGB написал:
Цитата
nikolz написал:
Правильно я понял, что Вы сравниваете 0.16 ms v 0.26 ms в разных задачах?
   Вы поняли неправильно.  Задача одна и та же. Версии QUIK разные.
 Читайте:
Цитата
nikolz написал:
1) В QUIK 8.13.1.16 (QLua 5.4)  T = 0,00016 ;      
2) В QUIK 9.3.1.11 (QLua 5.4)  T = 0,0026  ??? (в 16,25 раз дольше)
Можете пояснить какое отношение этот тест имеет к QPUA библиотеке?
Что в нем из нее используется.
У Вас тест VMLua.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
TGB написал:
Цитата
nikolz написал:
Правильно я понял, что Вы сравниваете 0.16 ms v 0.26 ms в разных задачах?
   Вы поняли неправильно.  Задача одна и та же. Версии QUIK разные.
 Читайте:
Цитата
nikolz написал:
1) В QUIK 8.13.1.16 (QLua 5.4)  T = 0,00016 ;      
2) В QUIK 9.3.1.11 (QLua 5.4)  T = 0,0026  ??? (в 16,25 раз дольше)
попробуйте исполнить Ваш тест вне квика и сравните время исполнения.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
TGB написал:
Цитата
nikolz написал:
Правильно я понял, что Вы сравниваете 0.16 ms v 0.26 ms в разных задачах?
   Вы поняли неправильно.  Задача одна и та же. Версии QUIK разные.
 Читайте:
Цитата
nikolz написал:
1) В QUIK 8.13.1.16 (QLua 5.4)  T = 0,00016 ;      
2) В QUIK 9.3.1.11 (QLua 5.4)  T = 0,0026  ??? (в 16,25 раз дольше)
Было бы неплохо, если бы Вы писали ед изм.
----------------------  
Но особой разницы в числе нулей нет.
---------------------
Дело в том, что в ваш пример некорректный.
0.00016  это 160 us
0.0026 это 2.6 ms
А минимальный квант времени задачи это 10 ms или 10 000 us
------------------  
У вас миллион циклов
Поток, исполняющий эти циклы может иметь низкий приоритет
и будет прерываться системой  
которая будет выгружать эту задачу
-----------------------
У меня к Вам вопрос.  С какой погрешностью Вы измерили эти величины?
или иначе какая стабильность этих показаний?
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
TGB написал:
В ниже приведенном коде выделена строка символами ###, которая в QUIK 9.3.1.11 (QLua 5.4) выполняется в 16,25 раз дольше чем в QUIK 8.13.1.16 (QLua 5.4)
 Где поддержка??
Код
   --- Загрузка CPU --- 
IsRun  =   true 
 function   main ()
     local  T
    local  hour  =   0 , N
   N  =   1000000 
     ------------------- 
     while  IsRun  do  
       T  =   os.clock () 
       for  i  =   1 , N  do  hour  =  {}  end       
      T  =  ( os.clock ()  - T)  *   1000  / N      ---- ### !! Без подключения к серверу: 1) В QUIK 8.13.1.16 (QLua 5.4)  T = 0,00016 ;      
                                                                 ---                                                         2) В QUIK 9.3.1.11 (QLua 5.4)  T = 0,0026  ??? (в 16,25 раз дольше) 
       message  (tostring(T))
         sleep ( 500 )  
     end 
     ------------------ 
 end    
   
 function   OnStop ()
     IsRun  =   false 
     return   10000    
 end 
   
Правильно я понял, что Вы сравниваете 0.16 ms v 0.26 ms в разных задачах?
Но время минимального кванта для задачи 10 ms.  
Т е вы сравниваете величины разность которых можно объяснить затратами на выгружения одной задачи и загрузкой другой или разностью  приоритетом задач или  минимальным квантом времени для исполнения задачи.
Иначе говоря, особенностями обслуживания данных задач операционной системой.
Еще один вопрос про потоки
 
Цитата
Коc написал:
Здравствуйте.
Кто может подсказать как идет поток ордеров в таблице обезличенных сделок, например одномоментно  в 10:10:00 прошло 7 продаж (7 строк) 20 контрактов, 18, 15, 10 и 5. Эти 7 строк в ленте отображаются разом или каждая строчка по отдельности только очень быстро?    
присылают блоком вот  поэтому видите разом но с разным временем.
количество в блоке зависит от интенсивности торгов.
-----------------------  
исследовать реальную задержку можно сравнивая время сделок с временем сервера точного времени.
Попробуйте и увидите много интересного.  
Добавить временную метку в потоках маркет-даты
 
Цитата
r написал:
Цитата
Daniil Pozdnyakov написал:
Касательно времени в потоке Level 2. Параметр времени не транслируется, однако можно использовать функцию getInfoParam("SERVERTIME ") для получения  времени сервера. Подробно об этом написано в документе QLUA.chm в разделе "Сервисные функции" в соответствующем пункте "getInfoParam".

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

Daniil Pozdnyakov, поясните, какая связь между Level 2, ТТТ и временем сервера. Заодно и nikolz почитает для общего развития.

Также поясните, чьё время указано в свечах по параметрам из ТТТ, кто и в какой момент проставляет это время?
Увы,Вы невнимательно читаете
Про свечи я указал что данные приходят с опозданием до 10 секунд. т е свеча на графике появляется когда время сервера брокера, время  сервера точного времени уже на 10 секунд отстоит от времени свечи, которое и есть время сервера точного времени.  
Рекомендую изучить алгоритм формирования свечи.
Trans2Quik + DDE пропускает котировки
 
Цитата
Михаил Филимонов написал:
Цитата
nikolz написал:
  предположу что проблема в поделке на C#.  
Поэтому задайте вопрос автору этой поделки.
----------------------------------------------
Для чистоты эксперимента сделайте экспорт Вашей таблицы по DDE без костылей на C#
Какая разница С# или что-то другое?
Не все сделки передаются по DDE из таблицы "Текущие торги"
Что пришло по DDE, то и записалось.
А сегодня, по BR-1.22 направление сделки указано не верно (Таблица всех сделок)
разница следующая.
DDE передает данные в формате EXCEL  
В поделке на C# реализовано преобразование этого формата и запись данных в память.
Как это реализовано нигде нет
------------------  
В прошлой жизни еще до по явления в КВИКЕ луа я использовал именно DDE и свой клиент-сервер для получения данных
много исследовал результаты работы DDE
Никаких пропусков никогда не наблюдал.
--------------------  
Поэтому еще раз советую сделать экспорт данных по DDE непосредственно в Excel и сравнить результаты.
как за AddLabel() отметку цены
 
Вам ехать или шашечки на дверь?
Шкала времени
 
Цитата
Николай-77 написал:
Добрый день!
Нельзя ли сделать, чтоб шкала времени занимала поменьше места? Например, как в МТ5, NT8 и мн. др. терминалах? А то сейчас у Квика соотношение полезной площади окна (где собственно цена) к площади всего окна графика пожалуй самое маленькое среди большинства терминалов - это не есть хорошо.
p/s Про то, что шкалу времени можно совсем отключить, я в курсе.
Можно поставить второй  монитор и вынести на него  окно графика.  
 
Не понятная ошибка помогите, луа самп тут, (exception) and (error)
 
Цитата
Fasmin написал:
Script died due to an error
Цитата
Fasmin написал:
(exception) update.luac: error reading ini file: D:\SAMP\CLEAR SBORKA SAMP\moonloader\script_update.ini: cannot open file[17:34:47.955073] (error) update.luac: D:\SAMP\CLEAR SBORKA SAMP\moonloader\update.luac:0: attempt to index global 'updateIni' (a nil value)stack traceback: D:\SAMP\CLEAR SBORKA SAMP\moonloader\update.luac: in function  [17:34:47.955073] (error) update.luac: Script died due to an error. (0F3649BC)
Вам система говорит, что
ошибка при чтении ini-файла: D:\SAMP\CLEAR СБОРКА SAMP\moonloader\script_update.ini: не удается открыть файл
[17:34:47.955073] (ошибка) обновление.luac: D:\SAMP\CLEAR СБОРКА SAMP\moonloader\update.luac:0: попытка индексировать глобальный "файл обновления" (нулевое значение)
Странная ошибка в скрипте с автообновлением., Ошибка: D:\SAMP\CLEAR SBORKA SAMP\moonloader\update.luac:0: attempt to compare nil with number
 
а Вы форумом не ошиблись?
Доступные скрипты, Значки для скриптов с ошибками
 
Цитата
Старатель написал:
Сделать другие значки для скриптов:
1) остановившихся в результате ошибки;
2) в которых возникла ошибка, но скрипт продолжил работу (ошибка в колбеке)
прикольно.  
-----------------  
3)  сообщать на форуме все теплые материнские слова об авторе такого скрипта и сопровождать эти сообщения гудком паровоза.  
Добавить временную метку в потоках маркет-даты
 
Цитата
r написал:
Цитата
s_mike@rambler.ru написал:
миллисееундв найдете. Микросекунды тоже
У вас значения ms и mcs для параметров бывают отличны от нуля?
Но вопрос в том, чье время там проставлено (явно не биржевое) и насколько ему можно доверять?
Не может ли случиться так, что сервер пришлет старые данные, а время проставит текущее?
синхронизируйте компьютер с сервером точного времени и получите время биржи с погрешностью не более 10 ms (при соответстующих настройках винды)
потом можете сравнить с временем сервера и потока сделок.
-------------------------  
На основе собственного опыта могу сказать, что время сервера брокера с точным временем совпадает в пределах погрешности.
А вот данные по свечам обычно отстают , иногда до 10 секунд.  
Прибавить к текущей дате 30 дней (или произвольное кол-во дней)
 
Цитата
Иван написал:
Как на языке луа сделать прибавление текущей даты + 30 дней (или произвольное кол-во)?
А учебник почитать слабо?  
Ошибка запуска скомпилированного файла
 
Цитата
Игорь М написал:
Цитата
Nikolay написал: Но покупать алгоритм - то еще занятие.
Так в основном продают программы с возможностью менять параметры, которые пользователь и должен подобрать таким образом, чтобы выйти в плюс. Пользователь подобрал - молодец, нет - пусть подбирает дальше.
Роботы продаваемые в интернете  за смешные деньги - это полный развод буратин т.е. лохотрон.
--------------------------------------
Все роботы, которые Вы  можете купить - это просто одноразовый  лотерейный билет,
но перебором коэффициентов можно занять пустую голову работой по угадыванию чисел.  
----------------------------
Поэтому покупайте билеты   Спортлото -   меньше проиграете.  
Как создать экземпляры класса в цикле?
 
Цитата
Nikolay написал:
Таблицы lua - это хэш таблицы. Точнее весь lua - это операции над таблицами.
Поэтому банально
t[1] = что-то
t[2] = что-то
....

Или

t['что-то'] = вот-это
t['еще'] = другое

Можно даже в качестве индекса другую таблицу указать

tbl = {}
t[tbl] = 'что-то'

Так что как сохранить - это больше вопрос как лучше сохранить в данном случае.
не совсем верно.
Таблицы содержат хэш массив и индексный массив
если индекс или значение - строка то эта строка преобразуется в хэш, хэш строки помещается в хэш массив, а значение хэша в индексный массив
Если индекc - это число то значение хранится по индексу в массиве
Поэтому, чтобы работать быстро надо использовать целые числа в качестве индекса.
Ошибка запуска скомпилированного файла
 
Цитата
Nikolay написал:
Если себе, то смысла никакого. Если на заказ, то уже имеет смысл.
Ну да, типа скрыть тот ужас, который нагородили  в роботе, который сливает депозит, но за деньги заказчика.
Чтобы не было мучительно стыдно за такой развод.
Тогда обязательно.  
Быстродействие Quik
 
Цитата
Иван написал:
Есть какие-то рекомендации для увеличения скорости работы (быстродействия) квика?
Сегодня нашел в папке квика лог в корневой директории (вес 1 ГБ+). Удалил его и квик вроде как быстрее стал работать раза в 3.

Подскажите пожалуйста рекомендации что еще можно сделать?
Версия квика 7.
1) не создавайте индикаторы по параметрам таблиц.
2) установите в настройках флаги
 "С учетом настроек, ..." , "Только данные, отражающие текущее состояние"
3) не открывайте много окон и стаканов
4) сворачивайте ненужные окна  
Как создать экземпляры класса в цикле?
 
Цитата
Вася написал:
Есть класс. Нужно создать 10 его экземпляров в цикле. Как это сделать?
А зачем, если не секрет.
А какая разница - класс или не класс?
Напишите что хотите сделать в понятиях луа  (еще лучше, если сначала научитесь программировать на луа)
Ошибка запуска скомпилированного файла
 
Цитата
Vladimir написал:
Всех благодарю за помощь. Заработало.
Не поделитесь секретом, зачем компилируете в байт код и потом грузите?
Это же делается автоматически, когда запускаете .lua файл.
Зависание Квика после выхода из спящего режима
 
предложу такое решение.
---------------------
Так как при отправке компа в сон КВИК не может поддерживать соединение,
то возможно два варианта решения:
----------------
1) закрыть КВИК перед уходом спать. При просыпании запускать КВИК снова.
----------------------
2) разорвать соединение КВИК с сервером , но не выгружать при уходе спать. При просыпании запускать КВИК не требуется,  надо лишь восстановить соединение.
------------------------
При надлежащем уровне эти решения можно реализовать в виде скриптов, например, на AutoIt.
Trans2Quik + DDE пропускает котировки
 
Цитата
Михаил Филимонов написал:
Цитата
Daniil Pozdnyakov написал:
Если да, то такое поведение является нормальным, так как данная таблица обновляется с определённым промежутком.
.
И что? Обновление таблицы должно передаваться по DDE, а сделок просто нет....

Поясните подробно, какую таблицу Вы передаете по DDE. и нафига фам костыль на C#.
------------------------------
предположу что проблема в поделке на C#.  
Поэтому задайте вопрос автору этой поделки.
----------------------------------------------
Для чистоты эксперимента сделайте экспорт Вашей таблицы по DDE без костылей на C#.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
boolean.rat написал:
06a0:err:ntdll:RtlpWaitForCriticalSection section 00000000090CF890
предположу что у Вас произошла взаимная блокировка потоков ( скрипта и основного терминала )
Смотрите свой скрипт.  Хотя скорее всего это проблема разработчиков.  
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
еще советую (на всякий случай) проверить размеры свободной памяти и файла свопинга.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
Владимир написал:
Anton, Так он и вылетать бы не должен, а час назад снова "неизвестное программное исключение", но на этот раз с убийством Квика и снова без малейших телодвижений с моей стороны.
Неизвестное программное исключение (0xe0434352)  - это ошибка, связанная с установкой .NET .
Большинство причин этой ошибки связаны с неисправностью .NET Framework ,
другая причина - в некоторых поврежденных файлах или старых драйверах ,
которые противоречат Windows .
---------------------------------  
Очевидно, что  Неизвестное программное исключение связано с попыткой выполнить за границами кода приложения .
В этом случае такое исключение не может быть опознано системой.  
Где в настройках QUIK указывается количество свечей, которое он хранит?
 
Цитата
Optimus1 Optimus1 написал:
Цитата
Egor Zaytsev написал:
 
Цитата
Optimus1 Optimus1  написал:
 
Цитата
 Александр Копяткевич   написал:
Здравствуйте,    Sergey Denegin   .
Как таковой настройки на сохранение истории графиков нет. В терминале QUIK максимально отображаются 3 тысячи свечей, а хранится максимум 65 тысяч.

Уточните, пожалуйста, на втором терминале (на котором история сохранилась за 4 месяца) Вы постоянно держали график открытым? Когда график открыт он постоянно сохраняет данные при обновлении.
Так же, уточните, пожалуйста, подключаются ли терминалы к одному и тому же серверу брокера или каждый к отдельному?  
  С какой целью разработчики Quik Сделали хранения свечей в кол-ве 65 000, если реализовали отображение только 3000 ?? Зачем разработчики просто так занимают место на HDD Клиента ?
 Добрый день.
В текущей реализации сервер не сохраняется более 3000 тысяч свечей, по просьбе пользователей было решено пока реализовать хранение истории локально на рабочем месте.
Тут вопрос еще немного в другом- " В терминале QUIK максимально отображаются 3 тысячи свечей". Фактически, если я правильно интерпретирую, то, что вижу - в окне по конкретной бумаге к примеру на минутном графике отображается статистика минутных свечей примерно за 2 месяца, а это ни как не 3000 минутных свечей. Все таки фраза -  " В терминале QUIK максимально отображаются 3 тысячи свечей" - некорректная или устаревшая ?  
в терминале отгображаются все свечи , которые хранятся на Вашем компе.
При очередном подключении к серверу на комп загружается история от текущего до последнего сохраненного но не более 3000 свечей.
Если Вы перезакажите данные,  то на компе все сотрется и загрузится с сервера последние 3000 свечей.
Если не перезаказывать, то данные накапливаются и все отображаются и используются в индикаторах.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
Владимир написал:
Anton,  
Цитата
Луа для квика - черный ящик.
Я и говорю: программисты вымерли. До знакомства с Квиком мне и в страшном сне не могло привидеться, что интерпретируемый код способен подвесить задачу.

Согласен, "слава богу, арка вроде не пытается ее ломать под каждое пожелание трудящихся, бо ничего кроме аццких глюков это не принесет".

В моих диалоговых задачах любой обработчик всегда сбрасывал обработанные им события, а остаток передавал следующему - никогда никаких проблем это не вызывало, даже если следующих обработчиков на момент передачи ещё не существовало. А здесь...  
Цитата
Табличка как в иконку превращается, чай, очищается в колбеке? Тогда засада:
Честно говоря, не помню. Подачу заявок я точно из коллбека выбросил, но это мало помогло... да, блин, именно там и сидит, зараза! Спасибо, попробую вынести. Кстати, именно там же и точно так же я лечу по Enter глюк "пропадание текста в ячейках", именно через DestroyTable с последующим AllocTable - уже несколько месяцев работает, как часы!  ::  
Н-да, из таблицы получились часы, прикольно.
Как достать параметр "Допуск к дополнительной сессии?", таблица параметров qpile
 
Цитата
Роман написал:
Добрый день.
Есть некий скрипт который циклично смотри на разные активы по инструментам раздела "TQBR"
В нем есть инструменты, которые торгуются только в основную, а так же в основную и дополнительные сессии.
Соответственно у меня возникает проблема посмотреть в автоматическом режиме какие-то свечи, на доп. сессиях (утром и вечером)
Пример: допустим у одних будет свеча закрытия 15 минуток например 18:45 (AKRN) а у других 23:45 (GAZP), ровно тоже самое с открытием.....
В таблице доступных параметров есть пункт "Допуск к дополнительной сессии" или кратко "Доп.сессия" - как взять этот параметр через GET_PARAM() или GET_PARAM_EX() чтобы скрипт различал куда иму идти за датой по основной сессии или по полной? Хочу именно по нему различать и сортировать инструменты в обработке. Спасибо.

PS: разработчик в suppot молчит.
чтобы узнать имя столбца  любой таблицы quik для чтения данных из него функцией GET_PARAM(),
сделайте экспорт таблицы по DDE в Excel с установленным флагом  "формальные заголовки" и получите имя столбца на англ.
Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex
 
Цитата
Сергей написал:
Здравствуйте!
Есть функция чтения последней свечи, которая несколько лет работала стабильно, но последнее время, раз в несколько дней выдает ошибку(хотя свечи на графике есть).
Функция читает таблицу с одной последней свечой в tab2. Иногда при попытке обратиться к таблице по индексу " if (tab2[0]==nil) then " - вылетает ошибка "attempt to index a function value (local 'tab2')"
Добавил проверку tab2==nil, и она в момент ошибки не срабатывает, т.е. tab2 - задана.
Код
   function   last_condle ()  -- самая последняя свеча 
    local  tmp_max =  getNumCandles (options.future .. "_price")
    local  tab2, n1, tmpname =  getCandlesByIndex (options.future .. "_price",  0 ,tmp_max -  1 ,  1 ) 

         -- Костыль №1 
    if  (tab2 =  =  nil )  then 
      say( " Ошибка 1748 - нет данных!!! - входим в режим ожидания данных tmp_max="  .. tmp_max)
       while  (tab2 =  =  nil )  do 
          sleep ( 731 )
         tab2, n1, tmpname =  getCandlesByIndex (options.future .. "_price",  0 ,tmp_max -  1 ,  1 )    
       end  
    end    

    -- Костыль №2 
    if  (tab2[ 0 ] =  =  nil )  then   -- Тут иногда ошибка "attempt to index a function value (local 'tab2')" 
      say( " Ошибка 1739 - нет данных!!! - входим в режим ожидания данных tmp_max="  .. tmp_max)
       while  (tab2[ 0 ] =  =  nil )  do 
          sleep ( 731 )
         tab2, n1, tmpname =  getCandlesByIndex (options.future .. "_price",  0 ,tmp_max -  1 ,  1 )    
       end  
    end 

    return  tab2[ 0 ]
 end 
  
Если я правильно понимаю, LUA считает что tab2 - функция? Но getCandlesByIndex не должен функий выдавать. Как это вылечить?

LUA 5.4.1
У Вас ошибка при обращении к нулевому индексу в таблице.
Т е обращение к такому индексу происходит первый раз. Это подобно обращению за границы таблицы.
Т е не ни элемента, а индекса ноль. Но при этом сама таблица существует.
----------------------------------
Но в первом случае Вы проверяете на nil не индекс а само значение ,
а во втором Вы проверяете опять не индекс а существование таблицы.
--------------------------
Вот Вам система и говорит что индекса 0 нет, а не значения и не таблицы.
Как минимум Вам надо проверять число элементов в таблице.   т е  (#tab2~=0)
Но так как стандартно в таблицу пишется всегда с 1, а запись нулевого элемента - это творчество разработчиков QLUA, то проверка  числа элементов таблицы может быть недостаточна.
---------------------
Теперь понятно?
Перестал работать SERVERTIME. не могу понять в чём проблема
 
Цитата
BlaZed написал:
isRun = true

base_time = "22:16:30"
base_hour,base_min,base_sec = string.match(base_time,"(%d*):(%d*):(%d*)")
base_offset=base_hour*3600+base_min*60+base_sec

function main()
 while isRun do
   srv_hour,srv_min,srv_sec = string.match(getInfoParam('SERVERTIME'),"(%d*):(%d*):(%d*)")
   srv_offset=srv_hour*3600+srv_min*60+srv_sec
   if(srv_offset>=base_offset)then
     message("go")
     isRun = false
   else
     message("wait")
   end
     sleep(100)
  end
end
можно еще проще:
-------------
Код
isRun = true
base_time = 0+string.gsub("22:16:30",':','');

function main()
  while isRun do
    srv_time = 0+string.gsub(getInfoParam('SERVERTIME'),':','')
    if(srv_time>=base_time)then
      message("go")
      isRun = false
    else
      message("wait")
    end
      sleep(100)
   end
end
Перестал работать SERVERTIME. не могу понять в чём проблема
 
Цитата
Hired написал:
уточню: данный скрипт на событие по времени сервера quik. скрипт зацикливается если например указать на 5-6 часов больше, если меньше 5 часов то условие срабатывает, хотя по факту время ещё не наступило
может ли это как то связано с изменение формата времени в windows. сброс формата не помог, так перевод времени и часового пояса на МСК не помогло
трудно гадать без результатов.
Возможно не работают сравнения.
покажите сообщения( message)
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
Владимир написал:
Не баг и не фича. И уж точно "не до этих мелочей". Чем меньше техподдержка будет реагировать на подобные темы, тем лучше. Квик и без того грузится чуть ли не дольше, чем операционка - это ещё хрен бы с ним. А то, что он отвисает в самых безобидных ситуациях, иногда даже без входа в Сеть - это как? А то, что вообще вылетает, причём молча - взглянешь на комп, а один из моих Квиков как корова языком слизнула. А на всякие "неизвестные исключения" или даже "unknown hard error" я уже и внимание перестал обращать: не вылетела - и ладно. И упаси меня, Господи, от новых версий!

Теперь второй вариант: какие-то придурки понаоткрывают себе всяких таблиц, графиков, стаканов, заведут немеряное количество разных переменных, подпишутся на все возможные колбеки, да ещё скулят при этом: "Повышенная загрузка CPU" - баг, панимаш! И фонтанируют своими идиотскими предложениями: то им не так, да это не этак. Ручонки кривые, а не баг! С какой радости техподдержка должна таких уродов ублажать?
Просто , КВИК- это добротная телега.
А некоторым мерещится студебекер лили даже ероплан.
Вот они на этой телеге с обрыва и прыгают.  
И потом долго по форуму пишется : '...Твою мать, ...Твою мать,... Твою мать"
Вопрос по написанию скрипта
 
Цитата
Vladimir написал:
Цитата
swerg написал:
Да, предоставляет
Спасибо, еще вопрос. У меня есть мысль, чтобы когда цена какой-нибудь бумаги подходила к линии Боллинджера, то она как-то подсвечивалась или давала мне сигнал что подошла. Индикаторы вроде как все закрытые, у вас есть идея как это реализовать?
это просто реализовать и на графиках.
Для этого используете две штрих-линии .
Одну - выводите , когда далеко, другую -когда близко.
Чтобы они отличались используете толщину и цвет.
Проблема с оперативной памятью Lua на Windows Server 2019
 
Цитата
Руслан написал:
Прошу прощения за долгое отсутствие, на работе почти все заболели, в результате случился аврал.
Непонятно , зачем Вы квик посадили на выделенный сервер, если торгуете по двум индикаторам  и по свечам.
----------------------
И уж совсем непонятно зачем Вы ставите эту монстр-связку с шарпом.
Написали бы на луа и не мучались бы так.
------------------------------------
Если же переносите на выделенный сервер, то тогда и квик надо выкидывать.
В этом смысле неплохая поделка у финам "Высокоскоростной Transaq"  но делал на ней давно, когда была все сыро.
Возможно сейчас все лучше. Но в любом случае это лучше чем делать на квике для робота в дата центре.
Да и памяти надо в этом случае в разы меньше и работать будет на порядок быстрее.
--------------------------
Но если Вы начинающий в написании роботов, то выделенный сервер вам тем более не нужен.
Проблема с оперативной памятью Lua на Windows Server 2019
 
Цитата
Руслан написал:
Пользуясь случаем, что тема открыта, хочу задать еще один вопрос.

Недавно заметил, что после вечернего клиринга биржа начинает работать в разное время. То есть прямо позавчера в четверг стакан "ожил" только ровно в 19:05, а вчера уже в 19:00 все работало. Есть какая-то закономерность или расписание происходящего?

На сайте ммвб кроме этой картинки с информацией о том, что вечерняя сессия начинается в 19:00, ничего не нашел.
Обычно, если есть экспирация фьючерсов, то вечерняя сессия начинается в 19-05,  иначе в 19-00.
Получение из таблицы текущих торгов всех доступных на текущий момент фьючерсов по инструменту
 
потом проверяем по таблице загруженных инструментов что есть а чего нет.
Получение из таблицы текущих торгов всех доступных на текущий момент фьючерсов по инструменту
 
решается проблема очень просто.
Когда-то давно делал так:
Берем с биржи правила формирования имени фьючерса и на  основе этих правил и диапазона нужных дат формируете  имена фьючерсов для конкретной акции.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Цитата
Старатель написал:
Демонстрационный скрипт:
    Скрытый текст        
Код
   local  n  =   50000 
 for  i  =   1 , n  do 
  _G[ "f"  .. i]  =   function  ()  end 
 end 

 local  class  =   "SPBFUT" 
 local  sec  =   "SiZ1" 
 local  param  =  {"BIDDEPTHT",  "OFFERDEPTHT" }

 local  run  =   true 
 function   OnStop ()
  run  =   nil 
 end 

 function   main ()
  assert( Subscribe_Level_II_Quotes (class, sec))
   for  i  =   1 ,  # param  do 
    ParamRequest(class, sec, param[i])
   end 
   while  run  do   sleep ( 500 )  end 
   Unsubscribe_Level_II_Quotes (class, sec)
   for  i  =   1 ,  # param  do 
    CancelParamRequest(class, sec, param[i])
   end 
 end 

 function   OnQuote (class_code, sec_code)  end 
 function   OnParam (class_code, sec_code)  end 
 function   OnAllTrade (alltrade)  end   

QUIK 9.3.1.11, Lua 5.4
Открыто, как минимум одно окно: стакан ликвидного инструмента.
Конечно, никто не запускает скрипты с тысячами функций, но при нескольких запущенных скриптах с десятками функций при высокой активности на бирже получаем нихилую загрузку CPU.

ЗЫ: У кого "один скрипт на все случаи жизни" с парой функций, может игнорировать эту тему.
Без флуда!
Согласен, что всегда можно написать скрипт, который загрузит бессмысленными вычислениями любой супер компьютер.
Но вопрос лишь в том, виноват ли в этом скрипт?
----------------------------------
Пару слов по существу проблемы (это мой опыт решения данной проблемы. При этом  даже нейронная сеть на ХР c одним ядром загружает CPU не более , чем на 30%.)
-------------------
1) Снизить загрузку процессора можно простым сворачиванием окон квика.
2) Если в скрипте и его функциях используются циклы в историю данных, то это очень плохой скрипт.
3)  Язык луа не предназначен для сложных вычислений (обработка больших массивов данных) поэтому используйте API C for Lua.
4)  Вызов кобеков QLUA реализуйте в одном скрипте для любого количества роботов и скриптов, в которых используете данные колбеков
5)  Не надо лазить постоянно в архив терминала, используйте таблицы луа для хранения получаемых с биржи и от брокера данных .
ищу программиста создать программу на платной основе, выгружать данные OHLC и индикаторы в файлик
 
Цитата
Владимир написал:
Ну и я дам, тоже бесплатный.

Если вы собираетесь работать менее, чем с 10 инструментами, лучше храните деньги в сберегательной кассе. На одном инструменте вы можете ждать своего "профита" годами. А можете и не дождаться никогда. А даже если и дождётесь, это ровным счётом ничего не скажет о качестве вашего алгоритма.
к слову, на одном ликвидном инструменте профит с начала года до настоящего времени 200%.
ищу программиста создать программу на платной основе, выгружать данные OHLC и индикаторы в файлик
 
Совет начинающим (бесплатный)
Возьмите один ликвидный инструмент и работайте с ним. Когда на нем получите профит, то Вам будет понятно есть ли смысл брать что-то еще.
Если на ливидной бумаге не получите профит, то брать что-то еще вообще нет никакого смысла.
ищу программиста создать программу на платной основе, выгружать данные OHLC и индикаторы в файлик
 
Полагаю , что такая программа называется "Иди туда, не знаю куда, принеси то,не знаю что"
О такой проге мечтают все начинающие, так как не знают куда бежать  и что тянуть.
По каким критериям определять, что сервер QUIK сдох
 
Можно смотреть число полученных записей за  фиксированный интервал времени.
-----------------------------
Интервал можно взять 1 секунду, если изменений нет, то кирдык.
-------------------------------
Но не представляю, что Вы будете делать , когда узнаете таким образом на 60 секунд раньше, чем средствами квика.
Проблема с оперативной памятью Lua на Windows Server 2019
 
возможно, что у Вас падает не из-за памяти, а из-за зависания в расчетах робота.
Проблема с оперативной памятью Lua на Windows Server 2019
 
В качестве совета на будущее.
Выкиньте коннектор QUIKSharp .
В вашем распоряжении есть DDE и API C для LUA , mapping (https://habr.com/ru/post/320446/).
Это самые быстрые способы передачи данных в сторонние программы роботов.
Проблема с оперативной памятью Lua на Windows Server 2019
 
Спросите у автора скрипта коннектора QUIKSharp о данной проблеме. Возможно Вы не первый.
Проблема с оперативной памятью Lua на Windows Server 2019
 
Если используете тики, попробуйте их отключить.
Страницы: Пред. 1 ... 45 46 47 48 49 50 51 52 53 54 55 ... 80 След.
Наверх