Алексей Ширяев написал: короче сделал я что-бы изначально при загрузке данных параметров из файла контролировалось присвоение им именно числового параметра с помощью "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. А вопрос у меня один , отложенные ордера. Если можете дать ответ по существу был бы очень благодарен.
Вы случаем форум не перепутали? ---------------------------------------------------- Я конечно не против , чтобы вечером, после работы, либо по праздникам, но не до такой же степени!!
Хорошо бы еще документацию на терминал QUIK прочитать Раздел 5 Все разжевано и с картинками. Если будет опять непонятно, то спрашивайте конкретно и по одному вопросу.
Sergey Gorokhov написал: ЦитатаVasya Ivanov написал: Т.е. я прав через DDE историю вытянуть не получится?
Не правы, если история есть в таблице то можно вытянуть по DDE
Извиняюсь, я неправильно сформулировал мысль: в первую очередь интересна история стакана. А он отображает только текущую информацию. Итого, из трех способов остается QLua.
Тогда последний вопрос: Quik как-то различает заявки выставляемые через QLua и вручную? Т.е. нужно ли у брокера спрашивать разрешение на использование такого "робота"?
Читайте регламент брокера. Все , что не запрещено - разрешено.
если Вы используете много индикаторов, то рекомендую изучить их применимость , так как все индикаторы - это примитивные фильтры с очень слабыми фильтрующими свойствами и возбуждающими фантазию названиями. Поэтому можно смело выкинуть процентов 90 из них. -----------------------------
есть еще один источник большого потока данных - это опционы. Если Вы с ними не работаете (а если вы не профи, то рекомендую с ними не работать, так как опционы имеют наибольший уровень риска ), то отключите их как класс.
Полагаю, что получаемая Вами скорость - соответствует данному велосипеду --------------------------------------------- Не следует ожидать от мопеда КВИК скорости болида формулы 1.
sandyman написал: В продолжение темы: в основном все рекомендации которые даёт техподдержка в случае замедления работы программы так или иначе связаны с уменьшением потока загружаемых с сервера брокера данных, а как объяснить замедление работы в случае отсутствия такого подключения, когда данные уже загружены? Вот сижу я в выходные и без подключения к серверу пытаюсь анализировать графики, которые предварительно загрузил накануне: к одной ТТП привязаны 3 графика разных тайм-фреймов - при смене инструмента в ТТП смена графиков происходит через 6-10 секунд! Это как объяснить и как лечить?
Т е Вы рисуете графики по параметрам. Верно? Это значит, что Вы храните всю историю торгов в dat файле. Какой у Вас размер info.dat?
Imersio Arrigo написал: А в чем именно "крещение"? Темная тема не работает под wine-ом. Виснет на старте. А в светлой все нормально.
Ну вот в этом и вопрос - сделать, чтоб тёмная тоже работала. Сейчас выходит так, что скачал дистриб квика, поставил с нуля и пойди догадайся почему оно не работает. Если следом они и со светлой что-то сделают - вообще печально будет.
Николай Камынин написал: и боже упаси Вас открывать браузеры перед загрузкой терминала QUIk.
а почему именно перед загрузкой квика и как браузер вообще влияет на работу квика? Это как-то связано с загрузкой канала связи?
это шутка, а-ля "Собачье сердце" А если серьезно, то все современные браузеры сильно грузят комп ( обычно браузер создает порядка 60 потоков) . А 60 потоков будут тормозить любое железо и каналы. поэтому , если надо ускорить загрузку квика, то "и боже упаси...".
попробуйте сначала подключить QScalp, а потом сделать соединение. -------------------------------------- Кроме info.dat надо удалить еще некоторые файлы с расширением dat, но какие, для этой версии, надо узнать у разработчиков.
Андрей 77 написал: function ucb(index,ds) c = ds:C(index) ... end
for i=1,n do sec.ds = CreateDataSource(sec.ClassCode,sec.SecCode,sec.Int) sec.ds:SetUpdateCallback(ucb) end
т е Вам не нравится такое решение:
for i=1,n do sec.ds = CreateDataSource(sec.ClassCode,sec.SecCode,sec.Int) sec.ds:SetUpdateCallback(function (index) ucb(index,ds) end) end -------- по причине лишнего вызова функции? Понятно.
Как вариант, еще можно перед закрытием свернуть окна графиков, либо выходить из квака на закладке, где нет окон. ------------------------- Сворачивание окон графиков существенно разгружает процессор.
попробуйте перед стартом QUIK убить info.dat. ---------------------------------------------------------- и боже упаси Вас открывать браузеры перед загрузкой терминала QUIk.
Для фьючерсов таблица позиций по клиентским счетам таблица ограничений по клиентским счетам -------------------------------- Если методом тыка и авось не получается, то пора читать документацию.
Аксиома : Не бывает программ без ошибок. следствия из нее: 1) В программе всегда есть ошибки, время которых еще не пришло. 2) Невозможно сделать тест, который выявит все ошибки.
Sergey Denegin написал: Очень странно, но у меня такая же картина со скриптами. Но при этом если робота запустить вручную, даже при отсутствии соединения с сервером, он прекрасно запускается и никакой ошибки не выдает. Он у меня может работать по историческим данным. Как тогда объяснить то, что он не запускается автоматически при старте Квика?
Причины такие же. --------------------- При автомате робот запустится раньше, чем будет принята вся информация. Именно это и приведет к ошибкам. -------------------------- Запуск в ручную это не тоже самое. --------------------- Проверяйте.
при запуске ( т е при соединении с сервером) нет информации, а у Вас в роботах нет проверки на ее отсутствие в результате получаете nil и ошибки , которые аварийно завершают работу скриптов
Сергей Иванов написал: Не один год надеюсь, что будет внедрена доработка входа в интерфейс с паролем. Сначала была необходимость чтобы посторонние случайно не залезли в работающую программу на компьютере, Теперь я использую виртуальный сервер, где работает Quik. Было-бы намного спокойнее если открыть интерфейс можно было только с паролем. Планируется-ли подобная опция?
Вообще-то с помощью какой проги Вы отошлете заявку на сервер квик не имеет никакого значения. Важен лишь факт подключения к серверу, а для этого Вы вводите пароль и логин в терминале. ------------------------ Поэтому Ваши беспокойства должны быть относительно ключей, а не запуска терминала QUIK. ---------------------------------------------- Торговый терминал QUIK - это лишь способ подачи поручений брокеру. Их можно и по телефону подать.
PFelix написал: Здравствуйте. При написании индикатора столкнулся с проблемой: конструкция cndl,_,_=getCandlesByIndex(Settings.Name_gr,0,index - 1,1) local PH = cndl[0].high local PL = cndl[0].low иногда выдает PH = 0 и PL - тоже Но я хочу написать универсальный индикатор, который бы использовал на входе любой график (и с нулевыми значениями тоже) Как сделать проверку на корректность данных? Спасибо.
Если я правильно понял, то ноль получаете для встроенных индикаторов которые читаете с графика. Проще всего делать самому расчет нужного индикатора. --------------------------- либо надо делать так: cndl,_,_=getCandlesByIndex(Settings.Name_gr,0,getNumCandles (Settings.Name_gr) - 1,1)
Время сервера: 10:52:46 - "началась новая торговая сессия" от 06.05.2016 При этом на графике уже есть свеча за 18:45 от 06.05.2016.
Исправьте это недоразумение, чтобы скрипт всегда мог однозначно понять закончилась ли торговая сессия, дату которой QUIK транслирует или ещё не начиналась.
Прочитайте локальную дату и время и сравните ее с датой текущей сессии и временем сервера. И будет ваш скрипт знать точно, что и когда.
sandyman написал: Самописный индикатор, расположенный в одной области с графиком цены, в некоторых случаях отрисовывает линии на значительном удалении от текущих цен. При этом автоматическое масштабирование графика по вертикали хочет показать не только видимые значения цены, но и видимые значения индикатора(ов), что приводит к плохой читабельности графика цены. Можно ли сделать так, чтобы значения индикатора(ов) исключались при автоматическом масштабировании?
PS если нет такой возможностей, то прошу техподдержку зарегистрировать пожелание на добавление такой возможности, например, по аналогии с галочкой "с учётом цен заявок и позиций" в диалоге настройки автомасштабирования можно было бы предусмотреть и галочку "с учётом значений индикаторов"
Добрый день, В самописных скриптах я использую настраиваемый параметр максимального удаления индикатора, при котором индикатор перестает отображаться. Такой метод позволяет отображать графики в наиболее удобном масштабе. Предлагаю реализовать данный метод для встроенных индикаторов.
учебный сервер вообще не для торгов и тренировок. Это тестовый сервер для освоения работы с терминалом Т е результаты Ваших сделок на нем не имеют никакого смысла с точки зрения торговли.
То есть чтобы отслеживать два стакана, нужно запускать два скрипта ?
function OnQuote(class, sec ) ql2 = getQuoteLevel2(class, sec) if class ==clas1 and sec ==sec1 then -- первый инструмент end if class ==clas2 and sec ==sec2 then --второй инструмент end end