nikolz написал: Написал первый вариант такого скрипта.Пускаю его на тест сервере.Он обрабатывает всю таблицу это 330 инструментов и 1 млн 100 тысяч записейДля каждого инструмента и каждой записи он ищет по истории нужных роботов.Примерно так.
Поделитесь своими чудесами?
Когда пишу подобную информацию, то сообщаю о том, что можно получить на QUIK экспериментально, а не рассуждая теоретически или оплевывая вся и все. --------------------- Если для кого-то это чудеса, то рад за него и не хочу его разочаровывать в такой вере. ----------------------------------- Тот, кто сам экспериментирует может сообщить о своих достижениях. ----------------------------- Для меня подобная информация является руководством к новым экспериментам, если мне это интересно.
Константин написал: Забыл упомянуть в выше написанном. Акции должны выставляться на покупку пока не окончатся свободные финансы в наличии в порядке упорядочивания этого списка, при этом если уже есть в наличии более чем 2 лота, то инструмент пропустить и не покупать
Ээто пишется в виде скрипта на луа,. Прикольно, полагаю Вы считаете, что напишите это в виде одной строчки на скриптовый язык 1С, который напоминает бейсик и никогда не оптимизировался для компактных и быстрых приложений можт конкурировать с Луа, который вы очевидно не знаете. Верно? В Квике подобно бейсику 1С был Qpiile в прошлом веке. --------------------- Покажите на 1С свой запрос в виде одной строчки и дайте оценку времени исполнения.
Константин написал: Мне кажется если вкладывать в понятие "робот" какие то аналитические способности, то возможностей интеграций у 1С как платформы достаточно/предостаточно.
Я привел Вам результаты теста так как Вы указали сколько Вы делаете операций. -------------------- Причем далее Вы сами себе противоречите. То 5000 операций, то раз в день. -------------- Вы уж будьте последовательны в своих рассуждениях. -------------- Относительно аналитических возможностей. У меня нет никаких ограничений. Я могу использовать без 1С любые языки программирования, любые библиотеки и любые системы в том числе и ИИ. --------------- Напишите конкретнее , какие новые аналитические возможности даст 1С, кроме обеспечения доступа к системе управления и бухгалтерии предприятия. .
Константин написал: Ну не знаю. У меня в день (за 10 часов) выставляется ~5000 заявок (каждые 6-8 секунд пересчитывает состояние какого либо инструмента снимает лимитную заявку и выставляет новую). Само собой сделок гораздо меньше в зависимости от того сошлись ли мы по цене с покупателем/продавцом. Лично мне чаще не надо. (QUIK справляется. 1С справляется. При этом 1С пересчитывает индикаторы используя как раз Python скрипты). Я так понимаю и QUIK и 1С могут гораздо больше. Рынок не совершает таких колебаний, чтобы чаще снимать/выставлять.
Делал краш-тест на демо сервере для оценки скорости и надежности работы на QUIK в тесте на каждое изменение ТТП, которое приходило в колбеке Onparam выставлялась заявка после ее регистрации она снималась. По инструменту активной всегда была лишь одна заявка. ----------------- Итоги теста: ------------- Всего инструментов примерно 230. За 4 часа теста выставлено и снято более 200 тысяч заявок без сбоев и зависаний. При этом использовался пул потоков, из которого вызывалось одновременно до 12 потоков Делал максимум до 500 тысяч заявок пока меня разработчики не отключили от сервера. Больше так не делаю. ----------------- Можете сравнить с 1С.
Константин написал: Если вдруг захочется потом продавать робота, то мне кажется, что продавать на C, Java и т.п. будет немного сложновато. Мне кажется что, более или менее люди которые смогут купить робота так или иначе работают с 1С по своему основному месту работы
Вопрос к разработчикам. Тестирую скрипт на версии 13. и 10. Ошибка одна и та же. При вылете скрипта возникает ошибка системы с сообщением.
Удаление файлов с расширением dat не исправляет ошибку. Исправить можно лишь переустановкой QUIK. ------------------- Переустанавливать каждый раз при такой ошибке очень муторно. ---------------------- Предполагаю, что QUIK записывает какую-то информацию в служебный файл и после этого выдает всегда эту ошибку. =============== Какой файл удалить чтобы QUIK нормально загрузился при возникновении данной ошибки. =============== Для особо непонятливых поясняю. Сообщение о нехватке памяти -является фейком, так как при переустановке с тем же или даже меньшим объемом свободной памяти QUIK нормально работает до очередного затыка в скрипте.
Oleg Vazhnev написал: Хочется универсальный способ подходящий под любого брокера. Задержка не имеет значения, т.к. при торговле через интернет ты в любом случае будешь последним.
Пардон, опечатка Если надо еще круче, то делаем кластер, объединяя несколько компов или вешаем доп многоядерный сопроцессор (видеокарту) и используем CUDA
Добавлю --------------------- Если надо скорость, то используем Event в колбеках и Wait в main. Время реакции на колбек составляет не более 0.03 ms. -------------------- Если надо реализовать сложный алгоритм или обрабатывать сотни инструментов, То использую дополнительные потоки в которых работает Luajit. Luajit увеличивает скорость вычислений в 10 и более раз по сравнению с Lua5.4 Дополнительные потоки увеличивают скорость вычислений пропорционально числу ядер -------------------- Если надо еще круче, то делаем кластер, объединяя несколько компов или вешаем. ================== Но есть задержка Интернет. Ставим все в датацентр. Но это уже не бесплатно.
Вроде бы? Зачем утверждать то, в чём не уверен? Данные, которые может увидеть скрипт, при отсутствии ошибок, те же что и в видимой таблице. Легко проверить с помощью функций. Запрашиваешь количество строчек таблицы обезличенных сделок, а потом пробуешь получить значение из строки большей, чем их есть в видимой таблице. Выдаст значение nil. k = getNumberOf("all_trades") F=getItem("all_trades",k).flags Но как я и писал выше, в некоторых случаях случается ошибка, при редактировании параметров фильтров, замене инструментов перед экспирацией. Скрипт выдаёт значения из строк неверно, скорее всего из-за того что при редактировании параметров фильтра, некорректно обновляется файл, содержащий данные обезличенных сделок. Из-за это скрипты у меня, которые анализируют ТОС, начинают выдавать чушь. Правда ситуация исправляется перезаказом данных, но иногда это приходится делать по несколько раз. В последний раз у меня было такое, что я перезаказывал данные после замены инструментов перед экспирацией и у меня раз через раз отображалось то 42108 строчек, то 41958. Притом, что менялось и их программное отображение. В зависимости от того сколько отображалось строчек, у меня менялись первые свечки тикового графика. То их не было, то они появлялись, после перезаказа. И только на раз 8 перезаказа, после проверки, таблица начала выдавать данные, которые запрашивают. И поэтому когда происходят какие то изменения в параметрах фильтра таблицы обезличенных сделок, я проверяю корректное их обновление. В своё время, пока я не обнаружил эту ошибку, я сильно намучался, пытаясь понять почему мои скрипты работают неверно.
Написал "вроде бы" так как исследовал это надцать лет назад. Но специально для Вас сделал сейчас снова. ------------------ Да, я оказался прав. вот две картинки На этой таблица содержит все а на этой включен фильтр кол-во=10 но результат запроса числа строк в ТОС остается как без фильтра
вадим написал: Здравствуйте. В квике есть ошибки, связанные с таблицей обезличенных сделок (далее ТОС). При чём у меня два брокера и эта проблема есть в обоих QUIK. При включенном фильтре, когда убираешь какой-либо инструмент из ТОС, то программно он не убирается. Или когда происходит замена инструментов перед экспирацией, ТОС начинает выдавать не правильные данные. Возможно есть и другие ситуации, когда случаются ошибки, я встречал пока только эти. У меня скрипты собирают данные из ТОС. И я заметил ошибки, когда скрипты начали сбоить. Хоть визуально таблица правильно выглядит, программно из неё нельзя корректно получить данные. Сегодня произошла замена инструмента. И мне пришлось раз 8 перезаказать данные, ещё и перезапустить QUIK. Проверяю я работу выводом данных из случайных строк через функцию getItem. И только спустя столько перезагрузок, мне начало выдавать значения те, что и показываются в строке из которой я беру данные. Исправьте пожалуйста проблему в следующих версиях.
Вроде бы, если включить фильтры, то они действуют лишь на отображаемую таблицу. Скрипт будет видеть всю таблицу без фильтров.
Я хочу в QUIK увидеть статус отправки сообщения в Telegram. И вовремя увидеть, что статус сделок перестал улетать в телеграмм. Чтобы было понятно, я делюсь сделками, которые совершаю руками в QUIK с коллегами и хочу вовремя увидеть, что они перестали их получать, если что-то отвалилось в телеге.
такой вариант устроит:
Код
token="......" --робот в telegram
chat_id="....." --ваш в telegram
local mes="hello"
local serv= "https://api.telegram.org/bot"..token
local pref= serv.."/sendMessage?chat_id="..chat_id.."&text="
local cur_="curl -s "..'"'..pref
local f=io.popen(cur_..mes); s=f:read('*all'); f:close(); print("s="..s);
Я бы хотел иметь возможность в LUA видеть статус отправки сообщений в Телегу и если сообщения перестали уходить, то получить какой-то message, Версия с io.popen это позволяла бы сделать, как в приведённом выше примере, но он не работает :(. Ваш вариант отличный, но он позволит только постфактум узнать о проблемах. Но все равно, Вам огромное спасибо за идею в принципе! Это просто прекрасное решение почти всех моих запросов!
Отправьте по аналогии как я написал запрос /update и получите все сообщения. Можно запросить только последнее. Но как Вы собираетесь определить что сообщения перестали приходить ? ---------------- Возможно я не понял, но о каких проблемах Вы хотите узнать? О проблемах с bot в Telegram или о проблемах в QUIK или о проблемах с ПК или о проблемах со связью с биржей?
В заказе подключения надо поставить флажки. В ответе будут указано: ==================== Вам предоставлен доступ к учебному серверу QUIK компании ARQA Technologies сроком на один месяц. Участие в учебных торгах позволяет освоить базовый функционал системы QUIK, протестировать собственные алгоритмы в условиях, близких к реальным.
При доступе с Рабочего места QUIK доступен также функционал Модуля алгоритмических заявок QUIK. Алго-заявки в этом случае - это поручения особого вида, условия исполнения которых заданы заранее реализованными алгоритмами. В помощь - Algorithmic_trading_module_Light_manual.pdf (находится в папке с QUIK).
Фондовый рынок: Торги моделируются на основе информации о торгах акциями для одного из предыдущих торговых дней на Московской Бирже. Данные повторяются несколько раз в день, что позволяет совершать операции почти круглосуточно. Ваш код клиента:
Валютный рынок: Доступ к рынку организован через подключение к учебному серверу Валютного рынка Московской Биржи. Ваш код клиента: .
Срочный рынок: Доступ к рынку организован через подключение к учебному серверу Срочного рынка Московской Биржи. Ваш клиентский счет:
nikolz написал: Если Вы проверяете .junior на демо сервере.....
я не " проверяю .junior на демо сервере ", а просто запускаю QUIK (мышкой на компьютере) и жду более 30 секунд, пока он загрузится до окна ввода пароля
надеюсь, понятно объяснил))
специально для Вас сделал так. 1) jоткрываем терминал QUIK ( таблица обезличенных сделок открыта изначально) - время 30 секунд 2) удаляем таблицу, закрываем терминал QUIK. Открываем терминал QUIK -время 10 секунд ----------------------- Надеюсь, понятно объяснил.
Недавно от Финама прилетело обновление QUIK до версии 11.3.1.2. Установил и обнаружил, что загрузка (до окна ввода пароля) новой версии занимает от 30 до 40 секунд . Медленная загрузка (до окна ввода пароля) версии 11.3.1.2 наблюдается на разных устройствах с разными версиями Windows. При этом, в таск-менеджере Windows диск не активен, память не распухает, процессор грузится на 5-15%. Скорость не зависит от повторений загрузки (и первая и вторая и третья загрузка идут одинаково медленно)
QUIK много лет загружаю батником:
del info.log del alltrade.dat del archive info.exe -clear
Загрузка (до окна ввода пароля) предыдущих версий всегда занимала не более 10 секунд.
Вопрос:
Можно как-то ускорить процесс загрузки новой версии до привычных 10 секунд?
Если Вы проверяете .junior на демо сервере, то там у них в терминале установлено прием и отображение обезличенных сделок аж в пяти таблицах. А при старте это будет примерно 500 тысяч строк Вот это и тормозит. Чтобы исправить надо переделать все настройки окон и убрать таблицы обезличенных сделок. --------------- Разработчики уберите ваши настройки в терминале junior.
Михаил Филимонов написал: Да, и еще погрешность фунции засечки времени, кажется 16 мс., да и саму ошибку Указанная транзакция по указанному классу не найдена: "SPBFUT". выдает ДЛЛ или терминал, это не мое.
Цитата
Михаил Филимонов написал: Конечно различается, ордер "слетал" на Биржу и вернулся ответ.
А где ошибка, то все происходит на локальном компе, так что время не показатель.
Обидно то, что 3 с лишнем года все работало как часы, а вот теперь появилась проблема. Не знаю как устроен внутри Квик, но с МТ-5 постоянно "цапался" с разработчиками, как новый билд, так вылезает какая-либо ошибка.
Так как у Вас время при возникновении ошибки не отличается, то это говорит о том, что заявка никуда не летала. Это возможно, если ошибка в параметрах заявки. Т е ошибку обнаружил сам терминал. надо вывести в лог файл содержимое самой заявки. Возможно оно искажается либо там nil.
посмотрите на время: 25.07.2024 10:00:18.501 --> SetEnterOrder: Ордер CMH5 отправлен. 25.07.2024 10:00:18.501 --> Ошибка: Указанная транзакция по указанному классу не найдена: "SPBFUT". -------------------- там где ошибки нет, время различается. -------------- Предположу, что еще не прошла регистрация транзакции и что-то ее не нашло.
Написал первый вариант такого скрипта. Пускаю его на тест сервере. Он обрабатывает всю таблицу это 330 инструментов и 1 млн 100 тысяч записей Для каждого инструмента и каждой записи он ищет по истории нужных роботов. Примерно так.
VPM написал: Это небольшая но рабочая утилита, которая умеет управляться с таблицей всех сделок, то есть тиками. Конечно это не то что Вы хотите получить, но этот не большой скрипт легко превращается в поиск необходимых Вам данных и многое еще чего, достаточно дописать фильтры. Что делает данный скрипт, он предназначен для использования в торговой платформе QUIK, создает таблицу, отображающую баланс покупок и продаж за последние 5 минут, и обновляет ее при поступлении новых обезличенных сделок, в окно выводится баланс полученный за каждую 1 минуту. Это "классический" вариант, алгоритм и идея которого взяты от сюда QuikLuaCSharp.ru, за что автору отдельное "большое человеческое спасибо!", все что я сделал это превратил его в класс - модуль луа, для удобства использования в своих программах. В общем удачи. [CODE][/CODE]
Лена написал: по факту выходит, что квик не сделан для работы с большим числом графиковю и это очень плохо
У меня более 100 вкладок, на каждом по дваграфика и стакан. Светлая тема. Ничего не виснет. Надо искать причину.
у меня ДВА компа, ДВЕ оси, ДВА квика, десятка и 11, и везде одна проблема, тема черная, мне так удобно, зачем ее было создавать, если при ее работе все вылетает. И это явно не мо япроблема, раз на двух РАЗНЫХ компьютерах эта проблема вылазит. Памяти и всего прочего хватает, индикаторы не использую, на графиках только уровни. в ондом окне 5 ТФ и стакан, около 20 вкладок. Ели часто переключаюсь между вкладками, то квик вылетает, если работаю с одной, то держит.
Увы, но проблема Ваша. Иначе Вы бы не писали на форуме. ---------------------------- Поясняю еще раз медленно, почему так и как это обнаружить: ---------------------------- У Вас в общей сложности более 100 графиков (20 вкладок 5 ТФ на графике) и 20 стаканов. ------------------------- При этом, когда закладка не активна, то окна на ней не рисуются. --------------------------- Когда Вы начинаете бегать по вкладкам, то у вас начинается перерисовка всех окон вкладки. и компьютер просто затыкается. ----------------------- Если хотите это увидеть, то откройте радом с квиком окно диспетчера задач Процессы. -------------------------- Когда начнете бегать между закладками, то увидите на сколько процентов у Вас загрузится процессор.
Здравствуйте подскажите пожалуйста. Почему есть доход но нет свободных средств, что делать. Демо режим мобильная версияЗдравствуйте подскажите пожалуйста. Почему есть доход но нет свободных средств, что делать. Демо режим мобильная версия Quik .
хорошо бы увидеть диспетчер задач (загрузку процессора) и скрин экрана квик. Вы случаем тики не отображаете ? или таблицу обезличенных сделок случаем не смотрите? Если так, смотрите загрузку процессора.
Nikolay написал: Вы бы хотя бы какую-то информацию предоставили - версия терминала, темная или светлая тема, объем оперативной памяти рабочего места, установлен ли антивирус и т.д.
одна версия квика 10, вторая 11, обновление до последней версии не решило проблем, я писала ваше. оперативка на одном компе 8 гиг, на другом 16. с моими системами ВСЕ в порядке.
рабочая тема темная.
еще раз пишу, вылетает, если я сижу не в одном графике. а листаю вкладки.
Михаил написал: В последнее время постоянно испытываю проблемы у Сберброкера на ИИС = при выставлении заявки выскакивает красное окно, что либо маржа недоступна, либо я не квал.инвестор. Надо ли говорить, что и маржа есть, и я квал. Происходит это на ИИС, на обычном брок.счете всё нормально. Так же заявки штатно выставляются через МП Сбер Инвестиции. Версия квика 11.1.1.11, выше не обновляется. Глюк появляется рэндомно, но на целый день, на след.день обычно пропадает и всё нормально. Звонил в поддержку Сбера - там все как обычно, составляют обращение, ответ на которое ждать 30 дней. Что я могу сделать на своей стороне? Очень это раздражает
Добрый день.
Судя по описанию, некорректная настройка может присутствовать на каком-то из серверов Вашего брокера, куда Вы время от времени подключаетесь. Рекомендуем дождаться ответа от брокера, пока же можно при появлении ошибки пробовать переподключаться к серверу (есть вероятность попасть на другой сервер, на котором некорректной настройки не присутствует).
И по поводу цен. Считаю пример не уместным. Приходя в магазин, вы видите в первую очередь цены на смартфоны и автомобили. То же самое касается различных услуг, исполнитель называет свои цены смотря на объём работ. Я понимаю ваше правило, но я не готов тыкать пальцем в небо гадая цены. В конце концов я трейдер, моя задача анализировать цены, а не гадать :D
Чтобы реально определить трудоемкость серьезной разработки, а не поделки в 10 операторов, требуется тщательная проработка тех задания. --------------------- Каждая хотелка, если ее нет бесплатно в интернете, это индивидуальный заказ, типа "смартфон с экранами с двух сторон". ---------------------- Как правило, то, что хочет заказчик не соответствует тому, что он написал за пять минут раздумий над своей хотелкой. ---------------------- Если тех задание не написано с анализом возможных ситуаций и тщательным тестированием, то получится поделка, которую долго будет дорабатывать разработчик , либо будет долго ругаться заказчик, что разработчик плохой и сделал ему то, что работает не так, как он хочет. ----------------------------------- Вы предлагаете разработчику тыкать в небо и угадывать.
SellBuyStyle написал: Здравствуйте! Хочу заказать скрипт по поиску роботов, которые покупают или продают по рынку. Для примерного понимания ТЗ, есть бесплатный скринер: ( https://www.youtube.com/watch?v=-pTgrdbgpcg ) Мне нужно то же самое только более доработанное и лёгкое. Мне не нужен лишний функционал который имеется в этом скринере, меня интересует только поиск роботов. В этом скринере есть ряд недостатков и недостающих функций, из-за чего хочу заказать скрипт. В программировании ничего не понимаю, по этому финансово оценить никак не могу. Можете писать свои предложения в ЛС или в тему. Функции которые нужны в скрипте: 1) Определение роботов (Инструмент; Лотаж; Направление; Периодичность (Вплоть до миллисекунд); Время включения; Количество бросков; Время выключения) 2) Определение разнолотовых роботов. Например, робот с периодичностью 20сек кидает в рынок заявки объёмом 1105-1106. Скрипт должен их относить к одному роботу и выводить периодичность бросков (До миллисекунд). 3) Истории роботов, показывает когда скрипт заметил их и когда они выключились, какая была периодичность бросков (Время когда их заметил и когда они выключились можно было экспортировать в EXСEL) 4) Гибкие настройки. Например, регулировать процент/лотаж возможного отклонения объёма робота. Выбирать по каким бумагам будет работать скрипт. 5) Ну и просто звуковое оповещение в случае обнаружения робота Постарался описать всё, жду любой обратной связи) PS Не знаю возможно ли это уложить в скрипт, потому что вообще не шарю, поправьте если не прав.
Правильно понял , что критерий обнаружения это равные объемы с одинаковым периодом покупаются и продаются? Если верно, то скажите , Вы где читали или есть статистика, что такие дебильные роботы кто-то применяем? ---------------- Написать можно любую хотелку за Ваши деньги. Но у меня правило. Кому надо, тот и говорит за сколько надо. Вы же не знаете как делать смартфон или автомобиль, но знаете за сколько хотите купить. Пишите бюджет и время в личку.
local size = 1000000 local N=1023 local F = {}
local function shiftArray(x)
F[3] = F[2] F[2] = F[1] F[1] = x end
start = os.clock() for I=1,size do shiftArray(I) end time = 1000000*(os.clock()- start)/size
print("1. вариант 1(мкс):",time)
local index=0;
local function addElement(x) index=(index % 3)+1 F[index] = x end
start = os.clock() for I=1,size do addElement(I) end time = 1000000*(os.clock()- start)/size
print("2. вариант 1a(мкс):", time)
index=0;
local function addElement(x)
index=(index%3)+1 F[index]=x
local result = {} for i = 1,3 do result[i]=F[(index-i+3)%3 + 1] end
return result
end
local index=0 start= os.clock() for I=1,size do addElement(I) end time = 1000000*(os.clock()- start)/size
print("3. вариант 2:(мкс):", time)
---- 3. Простой вариант с переменной currentIndex
local cIndex = 1
local function addElement(x) F[cIndex]=x cIndex=cIndex+1 if cIndex>N then cIndex=1 end end
start = os.clock() for i= 1, size do addElement(i) end time = 1000000*(os.clock()- start)/size
print("4. вариант 3(мкс):", time)
local cIndex=1
local function addElementNK(x) F[cIndex&N]=x cIndex=cIndex + 1 end
start=os.clock() for i = 1, size do addElementNK(i) end time = 1000000*(os.clock()- start)/size
print("5. вариант NK(мкс):", time)
local cIndex = 1
start=os.clock() for i = 1, size do F[cIndex&N]=i;cIndex=cIndex+1 end time = 1000000*(os.clock()- start)/size
print("6. вариант NK без функции(мкс):", time)
результат Lua 5.4
Код
1. вариант 1(мкс): 0.047
2. вариант 1a(мкс): 0.048
3. вариант 2:(мкс): 0.721
4. вариант 3(мкс): 0.045
5. вариант NK(мкс): 0.04
6. вариант NK без функции(мкс): 0.012
>Exit code: 0
VPM, вот этот вариант можно сделать еще быстрее: это ваш вариант
Код
---- 3. Простой вариант с переменной currentIndex
local F = {} for i = 1, 1000 do F[i]=0 end
size=1000000
local N=1024
local currentIndex = 1
local function addElement(x) F[currentIndex]=x currentIndex=currentIndex+1 if currentIndex>N then currentIndex=1 end return F end
local start_time = os.clock()
for i = 1, size do addElement(i) end -- повторяем 1 млн.
local end_time = os.clock()
print("4. Время выполнения для варианта 3:", end_time - start_time, "секунд")
это мой вариант:
Код
local N=1024
local F = {} for i = 1,N do F[i]=0 end
size=1000000
local currentIndex = 1
local function addElementNK(x) F[currentIndex&(N-1)]=x currentIndex=currentIndex + 1 return F end
local start_time = os.clock()
for i = 1, size do addElementNK(i) end -- повторяем 1 млн.
local end_time = os.clock()
print("5. Время выполнения для варианта NK:", end_time - start_time, "секунд")
это результат:
Код
4. Время выполнения для варианта 3: 0.046 секунд
5. Время выполнения для варианта NK: 0.043 секунд
Пару слов без протокола. В этих функциях лишним является оператор return F т к нет смысла возвращать то, что изначально определено вне функции тоже самое относится и к переменной currentIndex нет смысла ее индексировать внутри функции, можно снаружи в моем случае все можно записать так:
Код
local N=1024
local F = {} for i = 1,N do F[i]=0 end
size=1000000
local currentIndex = 1
local start_time = os.clock()
for i = 1, size do F[currentIndex&(N-1)]=i;currentIndex=currentIndex + 1 end -- повторяем 1 млн.
local end_time = os.clock()
print("6. Время выполнения для варианта NK без функции:", end_time - start_time, "секунд")
результат:
Код
6. Время выполнения для варианта NK без функции: 0.014 секунд
а это время вычисления для 1 млн.элементов для циклического массива в 1000 элементов для стека указано время push pop для очереди указано время записи и извлечения Lua 5.4
Код
Время выполнения стек 0(сек): 0.048,0.051
Время выполнения очередь(сек): 0.036,0.051
>Exit code: 0
Luajit
Код
Время выполнения стек 0(сек): 0.003,0.001
Время выполнения очередь(сек): 0,0.001
Если интересует производительность, то вот результат запуска скрипта, который выше, в lua 5.4 и luajit ------------- lua5.4
Код
1. Время выполнения для варианта 1: 0.005 секунд
2. Время выполнения для варианта 1a: 0.005 секунд
3. Время выполнения для варианта 2: 0.077 секунд
4. Время выполнения для варианта 3: 0.004 секунд
>Exit code: 0
luajit
Код
1. Время выполнения для варианта 1: 0.001 секунд
2. Время выполнения для варианта 1a: 0.001 секунд
3. Время выполнения для варианта 2: 0.015 секунд
4. Время выполнения для варианта 3: 0 секунд
>Exit code: 0
Сергей написал: Благодарю, я так и предположил, что двойной расчёт идет. Написал "костыль", теперь показывает верно, правда только с первого просмотра, после обновления свечи опять слетает, но мне достаточно для анализа. ------------------------------- Создателям QUIK 'респект'
проблема решается путем установки в начальное значение всех переменных при индексе=1 например,так ваш скрипт:
Код
name="*Vet_Rollback"
Settings={Name =name};
function OnCalculate(i)
local Hi,Li=H(i),L(i)
if i==1 then
maxh=0
else
if Hi then
if maxh<Hi then maxh = Hi end
rollback=(Li-maxh)/maxh * 100
message(tostring(maxh..";"..Hi..";"..Li..";"..rollback))
end
end
return rollback
end
function Init()
Settings.line ={ { Color = RGB(153, 204, 0),Type = TYPE_HISTOGRAM,Width = 0}}
return #Settings.line
end
Сергей написал: что бы понятнее было, на графике просадка составила -31%, а на индикаторе -36, как от самого последнего хая.
У Вас так и считает скрипт. Т е просадка вычисляется от самого большого High. ------------------- Есть такая особенность в расчетах индикаторов: -------------------- Индикатор при запуске вычисляется два раза. В первый раз в нем запомнится самый большой максимум на графике Во второй раз вы и получите просадку всех значений относительного этого максимума. -------------- Такой способ вычисления индикаторов это такой прикол создателей QUIK. Чтобы жизнь медом не казалась. ------------- Про это писал лет ...надцать назад. Потом еще многие и много. ---------------- Пишите скрипт с учетом этого факта.
funduk написал: Maater , Вам же nikolz выше ответил с исправленным кодом робота
Да теперь надо адаптировать этого робота под QUICK версии от 11й. За денежку конечно.
Скрипт на луа не надо адаптировать под 11 версию. Вам надо исправить его под свои параметры. ------------------------ Кроме того, этот робот при запуске лезет на какой-то сайт . Я Вас спрашивал в личке об этом , Вы не ответили. ---------------------------- Переделывать этот мутный скрипт нет желание. Сомневаюсь, что он может что-то путное делать.
1) Вызываем QUIK Junior, но не подключаемся к серверу. 2) Открываем любой индикатор в отдельном окне Например ADX 3) Удаляем второе окно В результате QUIK зависает, окно не удаляется. 4) Принудительно убиваем QUIK