Полагаю, что Вы хотите учебник. Увы, его нет. чтобы разобраться с QLUA Вам полагаю надо изучить: 1) LUA 2) руководство по КВИК ( особо раздел 6 и раздел 8) 3) руководство по QPILE ---------------------- почитать книжку рихтера (так для понимания про потоки) почитать API C для Луа (так для понимания что можно делать еще)
kbrobot.ru написал: Добрый день! У меня в БКС почему то стакан стал обновляться медленно. Хорошо если раз в секунду. Может где — то какую-нибудь галочку поставить надо? И таблица сделок тоже прокачивается раз в 20-30 секунд только. Кто как решил данную проблему? А по акциям прокачка вроде живее идет
про задержки серверов БКС я писал. Полагаю, что у них загрузка серверов большая. Посмотрите пинги и время задержки обмена Если нормально то можете попробовать перейти на VIP сервер (есть такая услуга у БКС).
Николай Камынин написал: Можно проверять ошибки синтаксиса и ошибки алгоритма, отлаживать.
Скажите, а он сможет отлаживать робот, используя данные из Квика? А то действительно очень неудобно без нормального отладчика
Нет, разработчики SCiTe не знают про квик и ничего не сделали для отладки с QLUA и данными из квик. Поэтому это работа для энтузиастов. Вообще-то, есть набор типовых операций, которые нужны в любом роботе. их надо сделать один раз.
SciTe Это не только редактор, но и компилятор и запуск луа скриптов. Можно проверять ошибки синтаксиса и ошибки алгоритма, отлаживать. Notepad++ - это просто редактор текста.
Sergey Denegin написал: Как вывести значение переменной, это понятно. Мне нужно вывести ИМЯ ПЕРЕМЕННОЙ. Причем не конкретной переменной, это понятно как, а той, которая например в качестве параметра была передана внутрь функции
А я вот недавно написал софт для ARM контроллера , который обеспечивает ввод сигналов в 25 раз быстрее и в 10 раз точнее, чем официально разработанный. Но к фондовому рынку это тоже не имеет никакого отношения.
Ваше желание будет рассмотрено на очередной ассамблее ООН. Если оно не противоречит международному праву и мировое сообщество его одобрит, то оно будет внесено в программу развития сельского хозяйства до 2030 года. . Следите за новостями, не переключайтесь
каким образом будет формироваться идентификатор по умолчанию - это определят разработчики. Например, к имени окна дописывается имя инструмента(для инструмента) , либо имя индикатора(для индикатора). ------------------------------- Важно два момента. 1) идентификатор по умолчанию устанавливается лишь в пустую позицию 2) возможность замены идентификатора из скрипта .
Еще год назад предлагал это сделать , очевидно забыли. Повторю. Предлагаю сделать: 1) установку идентификатора графика по умолчанию. 2) установку идентификатора графика из скрипта. 3) чтение в скрипте списка идентификаторов на графике.
Язык - это очень важно. Мы лишь с помощью языка можем формулировать свои мысли - т е алгоритмы. Самый хороший язык тот, на котором умеешь мыслить. Вообще-то в прикладных областях знаний всегда есть свои сленги. Поэтому для разработки торговых роботов нужен язык прикладного программирования. В качестве примера подобного языка можно привести язык AFL амиброкера. Lua не является примером прикладного языка. А скорость исполнения скриптов зависит от реализации виртуальной машины. Вот если в квик поставит LUA JT вот тогда и скорость будет. А пока скорость делаем за счет DLL которые пишем на СИ.
эту задачу сравнительно просто решить с помощью скрипта управления стопами. Такой скрипт выставляет стопы для открытых позиций. В результате стоп будет ставиться на срабатывание любых условных и лимитных заявок.
Николай Камынин написал: Олег , Можете написать пример,что хотите реализовать?
Николай, я, кажется, понимаю, что имеет в виду Олег. Речь идёт о возможности создания стоп-заявки по исполнению другой стоп-заявки. Например, текущая цена актива 100. Ставится стоп-заявка на покупку по цене 103 и по условию исполнения этой стоп-заявки ставится ещё один стоп-приказ на продажу с ценой 101. Если цена дошла до 103, то сработает первый стоп и, если будет открыта позиция Лонг, то тогда выставится стандартный стоп на продажу по цене 101. Т.е. последний стоп будет выставлен только если удачно сработает первый. Сейчас в есть аналогичный функционал для заявок (стоп-заявка по исполнению). Но с его помощью нельзя открыть лонговую позицию по цене выше текущей, а только по более низкой цене.
Задача понятна. Полагаю, что на сервере брокера ее не будут реализовывать. В текущей версии эта задача решается размещением терминала пользователя в дата центре и написанием скрипта .
Олег написал: Николай Камынин,а причём здесь свет? -Заявки хранятся у брокера же,мой комп может быть вообще выключенным. Заявка по исполнению как раз и предусматривает автоматическое выставление стопа на открытую в твоё отсутствие позицию.Прочитай help " заявка по исполнению". Мой вопрос адресован в первую очередь разработчикам квика- почему заявка по исполнению в квике существует только для цены ниже рынка,а для цены выше рынка нет? Леня Голубков,дабы исключить возможное неисполнение заявки указывается достаточное проскальзывание.
Согласен, свет не влияет. Но это мало изменит результат, так как условная заявка против рынка имеет замечательное свойство выставится с в очередь с опозданием и остаться активной до Вашего прихода. Но, согласен, что , чем больше можно будет поручить серверу, тем меньше можно сидеть за компом.
Примеры общих и частных случаев: Все люди - негры. В частном случае (президент США) - это верно, в общем случае неверно Все млекопитающие травоядны. В частном случае (корова) т- верно, в общем - нет
оба утверждения верны и в общем случае. 1. Современная теория происхождение человека из африки 2. Все млекопитающие едят и траву( зерно.) Жвачные могут усваивать клетчатку, а остальные лишь крахмал и белок. ---------------------------------- И не надо верить всему что написано на заборе, т е в Википедии
А компьютер завис, либо свет отключили. И пришел вечером из своих дел, а позиции открыты против рынка а тот уже далеко от них. --------------------------------- Автоматически деньги лишь списываются.
Добрый день, можно рассчитать и отобразить любой индикатор . -------------------------------------------------------------------------------------------- А у Вас есть такой же, но с перламутровыми пуговицами? Нет? Будем искать.
Вообще-то сравнивать МТ5 и не корректно по той причине, что МТ5 - это среда разработки и торговый терминал А Луа - это скриптовый язык, виртуальная машина которого с библиотекой QLUA встроена в терминал QUIK. И ВСЕ. Т е в QUIK просто нет среды разработки и тестирования по определению. Вот это большой минус. А скорость языков вообще не имеет значения
А Я не против МТ5, так как знаю его хорошо. Я против указанных цифр и методики тестирования.. Относительно Вашего сравнения почти не возражаю. Я же написал здесь в ответ на данную тему. Но Вы не правы в одном. Луа встроен в терминал. Относительно скорости исполнения - в луа можно подключать DLL на нативном коде, как и в МТ5 следовательно, скорость исполнения будет примерно одинаковая. Мне незнакомо решение для квик со встроенным в него МТ5. Если знаете дайте ссылку, сделаю тест.
Еще бы рюшечки по краям сделать и чтобы вокруг экрана огоньки, как на елке сверкали. Типа как на Новый год. --------------------------- Если огоньков нет, то фейерверки, чтобы из экрана каждый час вылетали и трехкратное ура звучало в динамиках. Типа как бы парад на Красной площади. ------------------ А то какой-то скучный игра получается.
1) фотографирует сидящего перед экраном. 2) считывает отпечатки пальцев с клавиатуры 3) запрашивает в паспортном столе адрес прописки вроде бы все. да чуть было не забыл, 4) проверяет банковские счета. теперь все
А теперь про числа, которые написали авторы. они указали, что скорость ЛУА в 60 раз меньше ,чем у МТ5. В на моем компе скорость теста 0.125 мкс (см выше) т е 125 нс если на МТ5 в 60 раз быстрее, то это 2 нс. ------------- Теперь берем тест для Intel Core i5 2500 3.30GHz на СИ умножение целых числе (это время должно быть меньше чем плав тоска) (первое что нашел в инете) Время 12 нс. А я исполнял тест для Луа на одноядерном компе Таким образом, по оценке этих горе тестировщиков, МТ5 на моем компе работает в 6 раз (2 нс вместо 12) чем на процессоре Intel Core i5 2500 3.30GHz ------------------------ Резюме МТ5 обгоняет не только луа но и любой процессор в мире.
судя по тесту, товарищи плохо знают луа. и вообще плохо пишут тесты. поясняю: Очень безграмотно отображать абсолютное время вместо приведенного на одну операцию. Теперь про тест для луа. Берем исходный текст. приведенное время выполнения вычисления составит 0.353 мкс , а если мы переменные определим как локальные то получаем 0.187 мкс. Т е время в 2 раза меньше. А если переменные f1..а3 поместить внутри функции то получаем 0.125. Т е как видим скорость реально в 3 раза больше если знать луа
Код
-- TestFloat
local f0=0.0
local MAX_SIZE=1000 --35000
function Start()
local t=os.clock()
TestFloat()
local res=((os.clock()-t)*1000000)/(MAX_SIZE*MAX_SIZE)
-- результы выполнения занесем сюда
check=f0
print("TestFloat time=" ..res.." мкс check="..check);
end
function TestFloat()
-- в цикле мы проходим до значение на 1 меньше, чем MAX_SIZE
local f1=123.456789
local f2=98765.12345678998765432
local f3=12345678943.98
for i=1, MAX_SIZE do
for j=1, MAX_SIZE do
f0=f0+(f1/(i+1))-f2+(f3*i);
end
end
end
-- запускаем скрипт
Start()
Есть большая неудобная проблема с графиками. Когда на график инструмента накладываешь исторические данные, то в цене скажем могут появляться разрывы, пустые свечи. Их видно по признаку существования свечи, это не проблема. Проблема в отсутствии цифр на свече. Приходится постоянно бегать дополнительно по сегодняшнему графику, и искать последнее известное значение. Хотелось бы иметь возможность задавать в настройках возможность копирования последнего значения close на несуществующие свечи, что бы не возникало разрывов
Готов ответить на ваши вопросы.
Спасибо
Надо изменить логику алгоритма, так как исторические данные все известны и они не меняются, то циклы применять нет необходимости.
Алексей Ширяев написал: короче сделал я что-бы изначально при загрузке данных параметров из файла контролировалось присвоение им именно числового параметра с помощью "tonumber". Вроде пока заработало. Самое интересное, что при расчетах переменные ведут себя как обычные числа, а вот при сравнении - как строки.
Поясняю: Дело в том, что строки тоже сравниваются как числа. поэтому луа работает быстрее всех других скриптовых языков. сравниваются не ASCII коды а хеш. Так как вычисления выполняются над числами, то луа автоматом переводит формат из строки в числовое. а вот сравнивать можно и числа и строки, поэтому луа не может угадать, что Вы сравниваете и необходимо явно переводить формат.
тот самый написал: в qlua - существет две совершенно раздельные виртуальные машины: qlua-indicators VM и qlua-script-VM. Между собой - внятно, они могут общаться: 1. через LUA C API 2. и через файлы (хотя, по большому счёту - это можно включить и в п.1.)
О том, как это сделать - многое написано на форуме. Так что "ask to GOOGLE": site:forum.quik.ru "require"
либо: quik2dde.ru
Фактически даже не две, а три машины в скрипте - две машины, основной поток и main.
а еще лучше написать так: local x1=tonumber(tbl_set.volume_opt) local x2=tonumber(tbl_set.volume_opt_ex) if x1 and x2 and x1>x2 then CHANGE_OPT_price = Send_OPT_Transaction() end
Алексей Ширяев написал: if tbl_set.volume_opt > tbl_set.volume_opt_ex then CHANGE_OPT_price = Send_OPT_Transaction() end -- эта строка приводит к ошибке "attempt to compare number with string"
В сообщении об ошибке написано, что Вы пытаетесь сравнить число со строкой следовательно надо написать так:
if tonumber(tbl_set.volume_opt) > tonumber(tbl_set.volume_opt_ex) then CHANGE_OPT_price = Send_OPT_Transaction() end
и вообще. На фондовом рынке долго не живут (у большинства кончаются деньги) Поэтому сделано под новое поколение буратин. Ну а то, что есть долгожители ( я в том числе) это скорее нонсенс, чем правило. поэтому - новому поколению игроков - новый интерфейс, будет что изучать и на что ругаться, т е чем восхищаться. Софт все тяжелее и тяжелее, но зато брюлечки и завитушки всякие - ляпота.
Основная проблема при переходе с QPILE на LUA будет в отображении таблиц и изменении самой логики работы программы. Поэтому никакой конвертор делать конвертер не поможет. Единственный способ - это переписать программы QPILE на LUA. Оставить QPILE тоже не смогут, так как в новых версиях терминала надо будет поддерживать совместимость а именно это и собираются прекратить. Резюме про телегу и сани я уже написал. Поэтому пользователи QPILE приступайте к переписи своих программ на LUA, пока еще не поздно. Этот процесс не быстрый, как возможно некоторым ка-жет-ся.
Тогда в LUA можно собирать историю любую. Например, делал сборку истории очереди заявок с сохранением лишь новых значений. Сжатие данных по сравнению с хранением целого стакана примерно на уровне 60%.
В инете продают. Но полагаю, когда увидите цену, то желание отпадет. ------------------------------------------------------------------------ Хорошая информация стоит дорого. На халяву ее не получить. ------------------------------------------------------- Поэтому либо собираете сами, либо мечтаете о халяве, либо платите большие деньги.
Green написал: > Вы случаем форум не перепутали? Согласен, такой вопрос можно задать на любом программистском форуме. Этот форум интересен по след. причинам: - интересна данная предметная область (хочу написать робота) - я думаю, здесь в основном (не считая тех, кто не отличает луи второго) независимые программисты, которые не скованы правилами предприятий и сами исследуют, экспериментируют - повышенные требования к надежности ПО Поэтому интересно, используют ли опытные люди какие-либо математические (строгие) методы написания и отладки ПО (верификация, синтез из спецификации) или в основном используют обычное тестирование и здравый смысл.
Во всяком случае, надеюсь, кому-то это тема покажется интересной и перспективной.
По-моему мнению Ваш подход, как сказать по-мягче, не совсем в русле решаемых задач. Дело в том, что проблема создания торговых роботов лежит совсем в другой плоскости нежели возможность написать и отладить программу на каком-либо языке программирования. Проблема торговых роботов - это проблема искусственного интеллекта. А эта проблема связана с формализацией задачи обучения самообучения, а не с формализацией написания программ. Приходите на мой сайт.www.kamynin.ru Поговорим на данную тему.
Николай Камынин написал: Хорошо бы еще документацию на терминал QUIK прочитать Раздел 5 Все разжевано и с картинками. Если будет опять непонятно, то спрашивайте конкретно и по одному вопросу.
Добрый день, Николай. Спасибо, за ваше сообщение. Скажите, а вы работали в системе webQuiK, или просто даете советы не вникнув в суть вопроса? Во первых обычный клиент я поставить не могу,Мануалы кстати я смотрел и писал об этом выше, но как их адаптировать под WEB не понятно. Во вторых интерфейс webquika хоть и очень похож но все таки отличается от обычного клиента? По этому очень хотелось бы получить ответ от того, кто реально пользуется WebQuik. А вопрос у меня один , отложенные ордера. Если можете дать ответ по существу был бы очень благодарен.