Алексей Ширяев написал: 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
Пять отличий старой версии Quik и новой седьмой версии Quik 7, Что изменилось в новой седьмой версии Quik и чем она отличается от старой версии
Пользователь
Сообщений: Регистрация: 30.01.2015
19.05.2016 19:00:46
и вообще. На фондовом рынке долго не живут (у большинства кончаются деньги) Поэтому сделано под новое поколение буратин. Ну а то, что есть долгожители ( я в том числе) это скорее нонсенс, чем правило. поэтому - новому поколению игроков - новый интерфейс, будет что изучать и на что ругаться, т е чем восхищаться. Софт все тяжелее и тяжелее, но зато брюлечки и завитушки всякие - ляпота.
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
Пользователь
Сообщений: Регистрация: 30.01.2015
18.05.2016 20:11:30
могу переписать любую прогу с QPILE на LUA, но не бесплатно.
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
Пользователь
Сообщений: Регистрация: 30.01.2015
18.05.2016 20:04:44
Основная проблема при переходе с QPILE на LUA будет в отображении таблиц и изменении самой логики работы программы. Поэтому никакой конвертор делать конвертер не поможет. Единственный способ - это переписать программы QPILE на LUA. Оставить QPILE тоже не смогут, так как в новых версиях терминала надо будет поддерживать совместимость а именно это и собираются прекратить. Резюме про телегу и сани я уже написал. Поэтому пользователи QPILE приступайте к переписи своих программ на LUA, пока еще не поздно. Этот процесс не быстрый, как возможно некоторым ка-жет-ся.
Считывание заявок всех участников торгов
Пользователь
Сообщений: Регистрация: 30.01.2015
18.05.2016 18:50:21
Тогда в LUA можно собирать историю любую. Например, делал сборку истории очереди заявок с сохранением лишь новых значений. Сжатие данных по сравнению с хранением целого стакана примерно на уровне 60%.
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
Пользователь
Сообщений: Регистрация: 30.01.2015
18.05.2016 05:53:00
Поэтому, пока гром не грянул, готовьте сани летом, а телегу зимой. (русская народная забава)
Считывание заявок всех участников торгов
Пользователь
Сообщений: Регистрация: 30.01.2015
18.05.2016 05:51:16
В инете продают. Но полагаю, когда увидите цену, то желание отпадет. ------------------------------------------------------------------------ Хорошая информация стоит дорого. На халяву ее не получить. ------------------------------------------------------- Поэтому либо собираете сами, либо мечтаете о халяве, либо платите большие деньги.
Формальные методы
Пользователь
Сообщений: Регистрация: 30.01.2015
17.05.2016 21:58:44
Цитата
Green написал: > Вы случаем форум не перепутали? Согласен, такой вопрос можно задать на любом программистском форуме. Этот форум интересен по след. причинам: - интересна данная предметная область (хочу написать робота) - я думаю, здесь в основном (не считая тех, кто не отличает луи второго) независимые программисты, которые не скованы правилами предприятий и сами исследуют, экспериментируют - повышенные требования к надежности ПО Поэтому интересно, используют ли опытные люди какие-либо математические (строгие) методы написания и отладки ПО (верификация, синтез из спецификации) или в основном используют обычное тестирование и здравый смысл.
Во всяком случае, надеюсь, кому-то это тема покажется интересной и перспективной.
По-моему мнению Ваш подход, как сказать по-мягче, не совсем в русле решаемых задач. Дело в том, что проблема создания торговых роботов лежит совсем в другой плоскости нежели возможность написать и отладить программу на каком-либо языке программирования. Проблема торговых роботов - это проблема искусственного интеллекта. А эта проблема связана с формализацией задачи обучения самообучения, а не с формализацией написания программ. Приходите на мой сайт. Поговорим на данную тему.
Николай Камынин написал: Хорошо бы еще документацию на терминал QUIK прочитать Раздел 5 Все разжевано и с картинками. Если будет опять непонятно, то спрашивайте конкретно и по одному вопросу.
Добрый день, Николай. Спасибо, за ваше сообщение. Скажите, а вы работали в системе webQuiK, или просто даете советы не вникнув в суть вопроса? Во первых обычный клиент я поставить не могу,Мануалы кстати я смотрел и писал об этом выше, но как их адаптировать под WEB не понятно. Во вторых интерфейс webquika хоть и очень похож но все таки отличается от обычного клиента? По этому очень хотелось бы получить ответ от того, кто реально пользуется WebQuik. А вопрос у меня один , отложенные ордера. Если можете дать ответ по существу был бы очень благодарен.
Приношу извинение, не въехал, что речь о WebQuik
Формальные методы
Пользователь
Сообщений: Регистрация: 30.01.2015
16.05.2016 20:46:12
На этом форуме большинство посетителей луа от луи второго отличить не могут, а Вы про формальные методы.
Формальные методы
Пользователь
Сообщений: Регистрация: 30.01.2015
16.05.2016 20:42:49
Вы случаем форум не перепутали? ---------------------------------------------------- Я конечно не против , чтобы вечером, после работы, либо по праздникам, но не до такой же степени!!
Хорошо бы еще документацию на терминал QUIK прочитать Раздел 5 Все разжевано и с картинками. Если будет опять непонятно, то спрашивайте конкретно и по одному вопросу.
Актуальные способы импорта данных QUIK в другую программу
Sergey Gorokhov написал: ЦитатаVasya Ivanov написал: Т.е. я прав через DDE историю вытянуть не получится?
Не правы, если история есть в таблице то можно вытянуть по DDE
Извиняюсь, я неправильно сформулировал мысль: в первую очередь интересна история стакана. А он отображает только текущую информацию. Итого, из трех способов остается QLua.
Тогда последний вопрос: Quik как-то различает заявки выставляемые через QLua и вручную? Т.е. нужно ли у брокера спрашивать разрешение на использование такого "робота"?
Читайте регламент брокера. Все , что не запрещено - разрешено.
Откуда Quik берёт данные для графиков после удаления alltrades.dat и папки archive?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.05.2016 09:35:52
попробуйте удалить все это из корзины.
и снова о медленной работе quik
Пользователь
Сообщений: Регистрация: 30.01.2015
15.05.2016 18:49:59
если Вы используете много индикаторов, то рекомендую изучить их применимость , так как все индикаторы - это примитивные фильтры с очень слабыми фильтрующими свойствами и возбуждающими фантазию названиями. Поэтому можно смело выкинуть процентов 90 из них. -----------------------------
и снова о медленной работе quik
Пользователь
Сообщений: Регистрация: 30.01.2015
15.05.2016 18:46:29
есть еще один источник большого потока данных - это опционы. Если Вы с ними не работаете (а если вы не профи, то рекомендую с ними не работать, так как опционы имеют наибольший уровень риска ), то отключите их как класс.
и снова о медленной работе quik
Пользователь
Сообщений: Регистрация: 30.01.2015
15.05.2016 18:38:16
выход один - сокращайте избыточность информации. Сомневаюсь, что Вы физически можете анализировать одновременно все то, что выводите на экран.
и снова о медленной работе quik
Пользователь
Сообщений: Регистрация: 30.01.2015
15.05.2016 18:36:13
Полагаю, что получаемая Вами скорость - соответствует данному велосипеду --------------------------------------------- Не следует ожидать от мопеда КВИК скорости болида формулы 1.
и снова о медленной работе quik
Пользователь
Сообщений: Регистрация: 30.01.2015
15.05.2016 18:33:27
Цитата
sandyman написал: В продолжение темы: в основном все рекомендации которые даёт техподдержка в случае замедления работы программы так или иначе связаны с уменьшением потока загружаемых с сервера брокера данных, а как объяснить замедление работы в случае отсутствия такого подключения, когда данные уже загружены? Вот сижу я в выходные и без подключения к серверу пытаюсь анализировать графики, которые предварительно загрузил накануне: к одной ТТП привязаны 3 графика разных тайм-фреймов - при смене инструмента в ТТП смена графиков происходит через 6-10 секунд! Это как объяснить и как лечить?
Т е Вы рисуете графики по параметрам. Верно? Это значит, что Вы храните всю историю торгов в dat файле. Какой у Вас размер info.dat?
Quik 7 + Wine (Linux, OS X)
Пользователь
Сообщений: Регистрация: 30.01.2015
15.05.2016 17:03:07
Ну вот и до нового форума боты добрались. с ботиком Вас поздравляю
Imersio Arrigo написал: А в чем именно "крещение"? Темная тема не работает под wine-ом. Виснет на старте. А в светлой все нормально.
Ну вот в этом и вопрос - сделать, чтоб тёмная тоже работала. Сейчас выходит так, что скачал дистриб квика, поставил с нуля и пойди догадайся почему оно не работает. Если следом они и со светлой что-то сделают - вообще печально будет.
Николай Камынин написал: и боже упаси Вас открывать браузеры перед загрузкой терминала QUIk.
а почему именно перед загрузкой квика и как браузер вообще влияет на работу квика? Это как-то связано с загрузкой канала связи?
это шутка, а-ля "Собачье сердце" А если серьезно, то все современные браузеры сильно грузят комп ( обычно браузер создает порядка 60 потоков) . А 60 потоков будут тормозить любое железо и каналы. поэтому , если надо ускорить загрузку квика, то "и боже упаси...".
и снова о медленной работе quik
Пользователь
Сообщений: Регистрация: 30.01.2015
15.05.2016 05:56:16
попробуйте сначала подключить QScalp, а потом сделать соединение. -------------------------------------- Кроме info.dat надо удалить еще некоторые файлы с расширением dat, но какие, для этой версии, надо узнать у разработчиков.
SetUpdateCallback
Пользователь
Сообщений: Регистрация: 30.01.2015
15.05.2016 05:51:41
Цитата
Андрей 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
Пользователь
Сообщений: Регистрация: 30.01.2015
14.05.2016 19:27:21
еще желательно не открывать много стаканов, а открытые сворачивать, если нет надобности.
и снова о медленной работе quik
Пользователь
Сообщений: Регистрация: 30.01.2015
14.05.2016 19:26:22
Как вариант, еще можно перед закрытием свернуть окна графиков, либо выходить из квака на закладке, где нет окон. ------------------------- Сворачивание окон графиков существенно разгружает процессор.
и снова о медленной работе quik
Пользователь
Сообщений: Регистрация: 30.01.2015
14.05.2016 19:21:56
попробуйте перед стартом QUIK убить info.dat. ---------------------------------------------------------- и боже упаси Вас открывать браузеры перед загрузкой терминала QUIk.
SetUpdateCallback
Пользователь
Сообщений: Регистрация: 30.01.2015
14.05.2016 19:16:09
Последняя строчка Вашего вопроса вроде бы уже содержит ответ, или нет?
Список купленых активов
Пользователь
Сообщений: Регистрация: 30.01.2015
13.05.2016 18:53:36
Для фьючерсов таблица позиций по клиентским счетам таблица ограничений по клиентским счетам -------------------------------- Если методом тыка и авось не получается, то пора читать документацию.
Коллбэк OnTrade не пришёл в один из скриптов
Пользователь
Сообщений: Регистрация: 30.01.2015
13.05.2016 08:26:18
Аксиома : Не бывает программ без ошибок. следствия из нее: 1) В программе всегда есть ошибки, время которых еще не пришло. 2) Невозможно сделать тест, который выявит все ошибки.
require( 'mylib' ) - Подключение DLL, не правильно работает QLUA, не подключается DLL
Пользователь
Сообщений: Регистрация: 30.01.2015
12.05.2016 20:25:33
для просмотра зависимостей используйте Dependency walker
require( 'mylib' ) - Подключение DLL, не правильно работает QLUA, не подключается DLL
Пользователь
Сообщений: Регистрация: 30.01.2015
12.05.2016 20:23:08
посмотрите зависимости dll и найдете причину.
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 30.01.2015
12.05.2016 16:15:21
Цитата
Космонавт написал: Николай, но при это внизу нет никаких ошибок. Выглядит как незапущенный скрипт, вот так
Поставьте вывод в лог файл из колбека onInit
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 30.01.2015
12.05.2016 12:13:19
Цитата
Sergey Denegin написал: Очень странно, но у меня такая же картина со скриптами. Но при этом если робота запустить вручную, даже при отсутствии соединения с сервером, он прекрасно запускается и никакой ошибки не выдает. Он у меня может работать по историческим данным. Как тогда объяснить то, что он не запускается автоматически при старте Квика?
Причины такие же. --------------------- При автомате робот запустится раньше, чем будет принята вся информация. Именно это и приведет к ошибкам. -------------------------- Запуск в ручную это не тоже самое. --------------------- Проверяйте.
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 30.01.2015
12.05.2016 09:36:48
при запуске ( т е при соединении с сервером) нет информации, а у Вас в роботах нет проверки на ее отсутствие в результате получаете nil и ошибки , которые аварийно завершают работу скриптов
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 30.01.2015
12.05.2016 09:34:57
от ошибок при запуске
Входа в интерфейс с паролем, Входа в интерфейс с паролем
Пользователь
Сообщений: Регистрация: 30.01.2015
12.05.2016 09:14:15
Цитата
Сергей Иванов написал: Не один год надеюсь, что будет внедрена доработка входа в интерфейс с паролем. Сначала была необходимость чтобы посторонние случайно не залезли в работающую программу на компьютере, Теперь я использую виртуальный сервер, где работает Quik. Было-бы намного спокойнее если открыть интерфейс можно было только с паролем. Планируется-ли подобная опция?
Вообще-то с помощью какой проги Вы отошлете заявку на сервер квик не имеет никакого значения. Важен лишь факт подключения к серверу, а для этого Вы вводите пароль и логин в терминале. ------------------------ Поэтому Ваши беспокойства должны быть относительно ключей, а не запуска терминала QUIK. ---------------------------------------------- Торговый терминал QUIK - это лишь способ подачи поручений брокеру. Их можно и по телефону подать.
Встроенные индикаторы в скриптах индикаторов, Встроенные индикаторы в скриптах индикаторов
Пользователь
Сообщений: Регистрация: 30.01.2015
11.05.2016 18:57:00
Цитата
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 транслирует или ещё не начиналась.
Прочитайте локальную дату и время и сравните ее с датой текущей сессии и временем сервера. И будет ваш скрипт знать точно, что и когда.
Как сделать чтобы при автоматическом масштабировании графика не учитывались значения индикаторов?
Пользователь
Сообщений: Регистрация: 30.01.2015
11.05.2016 05:57:00
Цитата
sandyman написал: Самописный индикатор, расположенный в одной области с графиком цены, в некоторых случаях отрисовывает линии на значительном удалении от текущих цен. При этом автоматическое масштабирование графика по вертикали хочет показать не только видимые значения цены, но и видимые значения индикатора(ов), что приводит к плохой читабельности графика цены. Можно ли сделать так, чтобы значения индикатора(ов) исключались при автоматическом масштабировании?
PS если нет такой возможностей, то прошу техподдержку зарегистрировать пожелание на добавление такой возможности, например, по аналогии с галочкой "с учётом цен заявок и позиций" в диалоге настройки автомасштабирования можно было бы предусмотреть и галочку "с учётом значений индикаторов"
Добрый день, В самописных скриптах я использую настраиваемый параметр максимального удаления индикатора, при котором индикатор перестает отображаться. Такой метод позволяет отображать графики в наиболее удобном масштабе. Предлагаю реализовать данный метод для встроенных индикаторов.
Ошибка запуска "Unable to load..."
Пользователь
Сообщений: Регистрация: 30.01.2015
10.05.2016 13:43:49
т е путь своего скрипта добавьте в начале описания
Ошибка запуска "Unable to load..."
Пользователь
Сообщений: Регистрация: 30.01.2015
10.05.2016 13:42:40
возможно путь становится длинным. перенесите путь в начало описания путей.
Шорт, открытый вчера, проходит сегодня, как лонг, Учебный сервер
Пользователь
Сообщений: Регистрация: 30.01.2015
10.05.2016 10:54:07
поэтому не имеет смысла искать смысл там, где его не может быть.
Шорт, открытый вчера, проходит сегодня, как лонг, Учебный сервер
Пользователь
Сообщений: Регистрация: 30.01.2015
10.05.2016 10:52:57
учебный сервер вообще не для торгов и тренировок. Это тестовый сервер для освоения работы с терминалом Т е результаты Ваших сделок на нем не имеют никакого смысла с точки зрения торговли.
Шорт, открытый вчера, проходит сегодня, как лонг, Учебный сервер
Пользователь
Сообщений: Регистрация: 30.01.2015
10.05.2016 09:46:43
На учебном сервере нет "вчера", есть лишь - "сегодня"
То есть чтобы отслеживать два стакана, нужно запускать два скрипта ?
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
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
10.05.2016 06:26:01
пардон, верно первое -------- getInfoParam('SERVERTIME') возвращает пустую строку ----------------------------------- string.gsub от пустой строки - пустая строка ----------------------------- message , если если его параметр пустая строка, выводит локальное время. ------------------------------- таким образом, данный прикол - это особенность работы функции message -----------------------------
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
10.05.2016 06:20:31
пардон, опечатка string.gsub от пустой строки - nil ----------------------------- message , если если nil, выводит локальное время. -------------------------------
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
10.05.2016 06:14:44
Цитата
Роман написал: Не могу понять, у меня почему то getInfoParam не разбирается как стринг, это глюк или только у меня такая проблема
Добрый день, объясняю, почему так происходит. --------------------------------- getInfoParam('SERVERTIME') возвращает пустую строку ----------------------------------- string.gsub от пустой строки - пустая строка ----------------------------- message , если если его параметр пустая строка, выводит локальное время. ------------------------------- таким образом, данный прикол - это особенность работы функции message ----------------------------- Успехов в изучении КВИК.