В данном случае следует учитывать не погрешность вычислений а дискретность (шаг дискретизации) значений(цены). Он указывается биржей для каждого инструмента свой. Например, сербанк 0.01. при цене 100 имеем шаг дискретизации 1/10000 т е не более пяти значащих цифр. Тип float - 7 значащих цифр. double -15 цифр. Получаем, погрешность вычисления даже с типом float меньше шага дискретности в 100 раз. ---------------------------------------------------------------------------- Резюме, точность вычисления (величина обратная погрешности ) для биржевых цен идеальная. Погрешность вычислений практически не влияет на величину прогнозируемых цен.
Возьмите sciTE он к тому же написан на луа и в него модно добавить различные примочки и более того в него встроен компилятор и даже есть с отладчиком луа ---------------------------- И будет Вам счастье
Если надо работать с очередями с 5000 элементов, то надо просто написать спец модуль такой очереди для луа на СИ. ------------------------------------------------- Я делаю именно так для обработки больших массивов, очередей, списков, пулов, ну и т д --------------------------------- Полагаю, что если чел смело берется за потоки с очередями в 5000 элементов, то создать спец модуль очереди для него - раз плюнуть.
Проблема (возможно кто-то уже решил): ------------------------------ Метки на графиках всегда привязываются к левой оси Y. Причем, их нельзя привязать к правой. А индикатор по умолчанию - к правой. Т е метки можно применить лишь к индикатору, который привязан к левой оси. А если графика два - цена и объем, то метки липнут к графику, который на левой оси (т е метки по цене, а слева - объем) в результате на экране меток нет. ------------------------------------------- Предложение (делал давно, наверное забыли) 1) сделать возможность перепривязывать метки по осям 2) сделать автоматическое привязывание меток и индикатора той оси, к которой привязан график с указанным тегом.
Deserf пишет: Здравствуйте, можно сделать по тикам, но тогда графики с идентификаторами tag1 и tag2 должны всего лишь быть тиковыми (во вкладке период графика указать "tick")
В реале, в текущей свече индикатор рассчитываться по тикам,но отображается лишь текущее значение.
Это не тарабарщина а символ нулевого кода в тестовой строке. Попробуйте отключить отображение управляющих символов в редакторе текста, на котором смотрите сообщение или убрать их из выводимой строки.
DronGO пишет: Кстати table. s insert table. s remove, работают очень медленно, в сотни раз медленнее, чем lock-free системы. И в своей работе их использовать не стал.
Самый быстрый способ удалить элемент таблицы - присвоить ему nil.
Попробуйте так: ------------------------------ local ClassCode=getSecurityInfo('',left[i].name).class_code if ClassCode~=nil and type(ClassCode~="table") and ClassCode~="" then Subscribe_Level_II_Quotes (ClssCode, left[i].name) end
В некоторых индикаторах в квике есть заморочки с периодом вместо используется удвоенное значение. Сравнивал AMA,SMA,EMA, RSI соответствуют и совпадают.
Михаил, Вы заблуждаетесь. Есть ограничение на чиcло локальных переменных Я уже писал об этом на форуме, а читал в документации ссылку дать не могу, так как не фиксировал. Более того, это ограничение я уже наблюдал в скриптах индикаторах. Пришлось повозиться, пока дошло что это оно самое.
Если изучать Луа по несколько минут в день, то работающий скрипт, от которого будет реальная помощь а не сообщение "Хелло луа" получится в следующем году. ------------------------------------------- процесс познания увлекателен, но утомителен, особенно когда никому не доверяешь.
Alexey K пишет: Хочу чтобы скрипт отслеживал определенное нажатие клавиши. Можете подсказать где и что почитать, чтобы сделать это без лишних заморочек?
Если нужно отследить с вашей таблицы, то поможет то, что предлагает Николай Камынин , а если нужно круче , то придется писать приложение или подключать стороннюю библиотеку.
А если не делать умное лицо и нужно просто и незатейливо, то пишется скрипт js из трех строчек. Этот скрипт дописывает файл протокола клавиш. Вызывается по сочетанию клавиш (быстрый вызов). Протокол клавиш читается откуда угодно.
Михаил, Я пытаюсь представить Ваше лицо в момент написания этого послания человечеству. Ну, то что оно не умное, это понятно, но какое?
Виталий пишет: Я не знаю ни языка qpile, ни lua, но мне надо сделать программу, воспроизводящую звуковой файл при пересечении двух АМА с разными периодами. Какой из этих языков лучше изучить для реализации данной программы?
))) Мне нужно поменять резину на колесах. Какое монтажное оборудование посоветуете? А если серьезно, то пару тыров заплатить программеру и забыть.
Не тот пример (очевидно, потому что, кроме колес ничего у авто больше открутить нельзя). ---------------------------------------------- Например так , надо сделать тормоз к авто, так как тормоза вообще нет, да и авто нет, но есть телега, но без коня. --------------------- Но нужен тормоз, его тоже нет.
Я Вас искренне спрашиваю, а Вы обижаетесь. Стаканы получать без открытия просили не в прошлом году а уже десять лет, еще когда лишь QPILE был, потом когда перевели все функции QPILE на луа тоже просили (сам лично просил) это было лет пять назад. Т е то была вполне естественная проблема. То что просите Вы, по моему пониманию - это невозможно технически и бессмысленно практически. попробуйте ответить на мой вопрос про базу отсчета. Допускаю, что Вы в этом не разбирались, но настоятельно рекомендую изучить каким же образом мы на компьютере узнаем на сколько точно в миллисекундах локальное время отстает или опережает время биржи. Посмотрите девиацию задержек ответов сервера. Я этим вопросом занимался подробно поэтому Вам и написал.
Николай Камынин пишет: Процесс увлекательный, но бессмысленный.
Смысл всегда есть. К примеру не было активности, а потом сразу 10 стаканов пришло. Как определить изменения в каком стакане повлияли на другие?(Т.е. какой стакан первым обновился?) В лучшем случае, можно получить время сервера "SERVERTIME" и предположить, что именно это время когда, был сделан снимок стакана, а оно с точностью до секунды. А если стакан изменится несколько раз за сек?Ставить разным стаканам одинаковую временную метку? Или какие то копии стакана проигнорировать?Какие? Первую копию или последнюю оставить? Как синхронизировать ленту всех сделок с поступающими новыми стаканами(может последний стакан отстаёт на 1-2 сек)? А определить должно быть просто. Время последнего внесённого изменения и есть время этого стакана.
А можно пример из жизни, а то Ваш пример из страшного сна.
Sam Gold пишет: Здравствуйте! Мне нужен совет, я не знаю к кому обратиться для создания торгового робота. Вопросы которые для меня актуальны: 1) Какой язык программирования оптимальней для работы через quik 2) Стоит ли доверять частным лицам или все таки это должна быть компания (пускай маленькая) 3) Могу ли я рассчитывать на нормальную оболочку у софта. Или будет все совсем кустарно и архаично
Если не в ту тему, то с ориентируйте пожалуйста куда идти и к кому обратиться. Буду очень признателен. Кто вообще лидеры рынка и кому стоит доверять?
1. Неважно. Исполнитель сам выберет подходящую среду программирования (если он в состоянии это сделать) 2. Компания в подавляющем большинстве случаев наймет того же частника, но ей вы тоже заплатите 3. Можете. Все зависит от глубины вашего кармана
Вот хорошая статья , которую имеет смысл прочесть перед заказом робота.
Михаил скромно не сказал, что рекламирует свой сайт. А статью, которую Вы поместили на сайт написана любителем торговать на форексе и освоившим написание в метатрейдере. ------------------------ Ямщик ты о чем поешь? Так что вижу так и о том и пою. А что видишь-то? Степь, да степь кругом.
Интересно узнать от какой базы считать время с погрешностью в миллисекунды. И что потом делать с этими циферками на компе. Это подобно нарезанию морской волны на кусочки с погрешностью мм с помощью бензопилы.
Кроме того, имеющийся в LUA механизм подключения модулей позволяет создавать модули на любых языках программирования и подключать любые сторонние библиотеки, реализованные в виде DLL, чего сделать в QPILE невозможно.
дополню инфой из документации, ссылку дать не могу так как не помню. ------------------- При работе VMLUA с таблицами происходит следующее. -------------------- Элементы не проверяются на содержимое так как это замедляло бы работу. --------------------- поэтому если элементу присвоить nil и он не последний, то сборщик его не видит так как нет функции упаковки разряженных таблиц. т е элемент существует , а что внутри таблицы сборщик мусора никогда не проверяет. Это существенно ускоряет вычисления.
Например, решение может быть следующим: самое простое: 1) Если Таблица Settings содержит параметр Settings.chart_tag, то это и будет идентификатором окна. чуть сложнее: 2) когда скрипт индикатора помещаем в окно,то VMLUA присваивает данному окну chart_tag из своего внутреннего списка. функция getDataSourceInfo может нам вернуть параметр chart_tag для пользования.
Добрый день, Если данный вопрос уже решен, то просьба дать ссылку. ------------------------------- Хотелось бы не тратить время на повторное программирование уже имеющихся индикаторов, а иметь возможность: 1) вызвать в скрипте расчет встроенного индикатора 2) Прочитать значения встроенного индикатора, размещенного в окне скрипта-индикатора, без создания руками или ногами идентификатора графика chart_tag. 3) Если такой возможности нет, то прошу зарегистрировать пожелание. Спасибо
Добрый день, возможно вопрос уже решен. Тогда просьба дать ссылку. ------------------------------------------------- Чтобы использовать функции работы с метками необходимо изначально метить руками или ногами окно графика идентификатором chart_tag. ----------------------------------- ВопросЫ: 1) Есть ли возможность сделать это автоматом в скрипте индикатора? 2) Если есть значение chart_tag по умолчанию, то как его взять? 3) Если нет такой возможности, то просьба сделать. ----------- Спасибо
Sergey Gorokhov пишет: Дмитрий, Отсутствие функционала не является ошибкой. Ошибкой, можно считать любое девиантное поведение софта.
Вики пиет: Девиа́нтное поведе́ние (также социальная девиация) — это поведение, отклоняющееся от общепринятых, наиболее распространённых и устоявшихся норм в определённых сообществах в определённый период их развития --------------------- вопрос: Если софт имеет поведение, то может это диагноз?
Увы, по Булгакову не получится (век не тот, страна другая, юристов больше, чем программистов ну и т д). --------------------------------- Мужайтесь! Импортозамещение нам поможет!
Индекс РТС либо считается точно, либо в действительности считаете не индекс РТС, а какой-то свой индекс. Поэтому "почти точно" - почти тоже самое, что "почти беременная"
Дмитрий Сазонов пишет: "Unknown error. Possible external module error."
Сообщение "Unknown error. Possible external module error." говорит о том что луа не смогла поймать и распознать ошибку. Это значит, что ошибка может быть абсолютно любой.
Дмитрий Сазонов пишет: Здравствуйте. У меня такой вопрос: есть потребность вызывать методы c# класса из QLua. В какой-то степени удалось что-то сделать с помощью LuaInterface.dll и luanet.dll, которые как раз и предназначены для этого. Однако возникла такая проблема: почему-то методы вызываются, если они применяются в main функции. Если же я вызываю экспортируемые методы из обработчиков событий, то ничего не происходит, как будто куска кода нет. Кто-то может сказать, в чем причина кроется? Насколько я знаю, обработчики и main функция крутятся в разных потоках, может это связано с этим? Вообще у кого-то есть успешный опыт использования c#, или подобные вещи стоит делать только через с api lua ?
Верно. Проблема в двухпоточности. Эти библиотеки можно использовать только из того потока, в котором они созданы.
api lua, без вариантов
Если михаил прав, то можно библиотеки C# открыть в потоке main. Так как предпочитаю С и С++ вместо С#, то так не делал, это лишь предположение.
Николай Камынин пишет: Но вот простой пример, который дает на правильный ответ
Звучит, как "А сейчас я расскажу вам всю правду..." Ну, ну, ага.
Цитата
Николай Камынин пишет: Но делать вывод что onParam быстрее, когда вызов OnQuote в 2 раза чаще - это прикольно.
Это тем более забавно, когда вы делаете выводы на основе данных с игрового сервера.
Ну вот скажите, зачем желаемое выдавать за действительное? У Вас слишком богатая фантазия. Вам это надо? Ну, Врать? ---------------------------- Я никогда не делаю тесты на игровых. Но Вы можете, я не против. --------------------------- Это результаты на моем реальном счете и соответственно рабочем сервере в реальном времени.
Как много написано. Но вот простой пример, который дает на правильный ответ: .... ------------------------------ function OnQuote(cl,se) if se~=set or mstart==false then return end; nqute=nqute+1; Log(nqute,"qut"); end
function OnParam(cl,se) if se~=set or mstart==false then return end; npar= npar+1; Log(npar,"par") end ... А вот результат для сбербанка: 06/18/15 19:15:06 par=230 -- это число вызовов колбека оnParam в том числе и по изменению стакана 06/18/15 19:15:06 qut=415 -- это число вызовов OnQuote при изменении стакана Т е если следить за изменением очереди котировок не нужно, а надо лишь какую-нибудь цену, которая была лучшей когда-то то можно работать по onParam. Но делать вывод что onParam быстрее, когда вызов OnQuote в 2 раза чаще - это прикольно.
Старатель пишет: Оба графика имеют разные таймфреймы.
Вообще-то , свечи - это нелинейное сжатие исходных данных. Поэтому непонятна сама постановка задачи обработки двух свечных графиков разного тайма. Какую задачу решаете? -------------------------------------- Можно, например, взять оба графика одного тайма(наименьшего) и далее вычислять нужные параметры на любом тайме больше исходного.
так сказать, закрывая тему - на форуме forum.qlua.org - есть вся информация, чтоб создать такого робота "с нуля" и не платя никому деньги. Задумайтесь над этим. Мы все когда-то, что-то не умели.
Так сказать, продолжая тему, на свалке можно найти даже слиток золота, но проблема лишь в умении его найти, в потраченном времени и в отсутствии уверенности в успешном поиске. ------------------------------------------- Поэтому самому сделать можно Все или почти все, но чтобы сделанное Вами работало, как мечталось, надо Либо быть в этом деле спецом, Либо бросить занятие, в котором Вы спец, и обучиться новой специальности. ------------------------------------------- Вам выбирать - либо процесс познания, либо результат мечтаний.
Michael Bulychev пишет: Нет, просто нет такого механизма в Lua. за конкретным объектом должен следить сам пользователь.
Но в луа нет ни функций QLUA, ни возможности создания функции main в отдельном потоке. - Это все сугубо ноу-хау QUIK. Может быть,продолжая развитие данного направления, сделать необходимые механизмы синхронизации потоков для всех пользователей? Я для себя кое-что сделал. Но некоторые вопросы удобнее решить на стороне терминала .