Alexey K пишет: Хочу чтобы скрипт отслеживал определенное нажатие клавиши. Можете подсказать где и что почитать, чтобы сделать это без лишних заморочек?
Если нужно отследить с вашей таблицы, то поможет то, что предлагает , а если нужно круче , то придется писать приложение или подключать стороннюю библиотеку.
А если не делать умное лицо и нужно просто и незатейливо, то пишется скрипт js из трех строчек. Этот скрипт дописывает файл протокола клавиш. Вызывается по сочетанию клавиш (быстрый вызов). Протокол клавиш читается откуда угодно.
Пасхалочка для Алексея Иванникова:
Кому заказать робота, Попытка разобраться куда и к кому идти за торговым роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
01.07.2015 21:14:19
Цитата
Sam Gold пишет: Здравствуйте! Мне нужен совет, я не знаю к кому обратиться для создания торгового робота. Вопросы которые для меня актуальны: 1) Какой язык программирования оптимальней для работы через quik 2) Стоит ли доверять частным лицам или все таки это должна быть компания (пускай маленькая) 3) Могу ли я рассчитывать на нормальную оболочку у софта. Или будет все совсем кустарно и архаично
Если не в ту тему, то с ориентируйте пожалуйста куда идти и к кому обратиться. Буду очень признателен. Кто вообще лидеры рынка и кому стоит доверять?
1. Неважно. Исполнитель сам выберет подходящую среду программирования (если он в состоянии это сделать) 2. Компания в подавляющем большинстве случаев наймет того же частника, но ей вы тоже заплатите 3. Можете. Все зависит от глубины вашего кармана
Вот хорошая , которую имеет смысл прочесть перед заказом робота.
Пасхалочка для Алексея Иванникова:
Добавьте пожалуйста горизонтальные объемы.
Пользователь
Сообщений: Регистрация: 30.01.2015
29.06.2015 16:28:06
Цитата
ISR пишет: Добавьте, пожалуйста, отображение горизонтальных объемов на графике цены, по аналогии с вертикальными!!! (уже без надежды в голосе :~~~( )
Пасхалочка для Алексея Иванникова:
Вывод информации в exel
Пользователь
Сообщений: Регистрация: 30.01.2015
25.06.2015 23:32:40
*Для экспорта в excel*
Пасхалочка для Алексея Иванникова:
Вывод информации в exel
Пользователь
Сообщений: Регистрация: 30.01.2015
25.06.2015 23:30:06
можно.
создайте 2 таблицы текущих параметров. В одной - все для глаз, во второй-только точто что нужно для экспота в квик. вторую и экспортируйте.
Или напишите скрипт, который будет пулять в лист экселя ровно то, что вам надо.
Пасхалочка для Алексея Иванникова:
Длина таблицы
Пользователь
Сообщений: Регистрация: 30.01.2015
25.06.2015 10:21:09
Во втором примере первым попался элемент с индексом 3. Он тоже подходит под определение.
Пасхалочка для Алексея Иванникова:
Длина таблицы
Пользователь
Сообщений: Регистрация: 30.01.2015
25.06.2015 10:17:50
Давайте я вам переведу.
Длина таблицы t определяется как ЛЮБОЙ числовой индекс, такой, что that t[n] ~= nil и t[n+1] == nil
В вашем примере элемент с индексом 9 подходит под это определение? Подходит. Результат #tab равен 9
Согласно , длина такой таблицы (#tab) должна быть 6 , но у меня показывает 9 . Это ошибка в документации или в самом Lua/QLUA?
Ошибки нет.
The length of a table t is defined to be ANY integer index n such that t[n] is not nil and t[n+1] is nil; moreover, if t[1] is nil, n can be zero. For a regular array, with non-nil values from 1 to a given n, its length is exactly that n, the index of its last value. If the array has "holes" (that is, nil values between other non-nil values), then #t can be ANY of the indices that directly precedes a nil value (that is, it may consider any such nil value as the end of the array).
Я выделил слово ANY из вашей документации большими буквами.
Сделайте так, чтобы можно было на текущих исторических данных прогнать роботов написанных на QPILE и на LUA, а то непонятно как тестировать робота, т.е. получается купил робота на QPILE, а чтобы подогнать ему оптимальные параметры, приходится такого-же робота заказывать например под TSLab и там уже тестировать. Геморой однако выходит, а если ты не программист, то еще и двойная трата денег.
Посмотрите вот это:
Пасхалочка для Алексея Иванникова:
getinfoparam
Пользователь
Сообщений: Регистрация: 30.01.2015
24.06.2015 17:10:52
Михаил. Методом научного тыка обнаружил виновника. Какая-то проблема обосновалась в table.sforeachi. Что там конкретно - сказать не могу. Ощущение, что sforeachi, будучи вызвана из главного потока quik что-то не делит со вложенными table.s*
А может, все совсем и не так. Но после замены sforeachi на обычные семафоры эффект пропал.
Пасхалочка для Алексея Иванникова:
getinfoparam
Пользователь
Сообщений: Регистрация: 30.01.2015
24.06.2015 13:25:42
Ув. Разработчики.
Эффект стабилен.
Пожалуйста, прокомментируйте механизм работы конструкции getInfoParam("servertime") более детально. Если есть особенности, связанные с потоковой моделью, остановитесь на этом пожалуйста максимально подробно.
Спасибо.
Пасхалочка для Алексея Иванникова:
Что предпочесть при выборе провайдера VDS ?, многоядерность или оперативки побольше
Пользователь
Сообщений: Регистрация: 30.01.2015
23.06.2015 09:36:24
Цитата
Сергей Парахин пишет: Здравствуйте ! Минимальные системные требования читал. Все же, что важнее при выборе провайдера VDS для квика под WIndows Server 2012 R2. При одинаковой стоимости какую конф-ю выбрать: 1) Intel Xeon, 2.6ГГц - 4 ядра,2 гига опертивки; 2) Intel Xeon, 2.6ГГц - 1 ядро, 4 гига оперативки. Или вообще хватит 2 ядра и 2 оперативки ? Будут крутиться два портфеля на qpile.
Сергей. Запустите конфигурацию, которая должна работать на VDS на своем локальном компьютере.
Посмотрите, какой объём памяти занимает терминал квик. Округлите до гигабайта в бОльшую сторону и прибавьте гигабайт для операционной системы - столько памяти вам потребуется.
Про ядра. Посмотрите загрузку , которую даёт процесс квик в диспетчре процессов. Если она менее 15% - вам хватит одного ядра.
На winServer 2012 квик прекрасно работает, если не извращаться с разными заумностями.
Пасхалочка для Алексея Иванникова:
getinfoparam
Пользователь
Сообщений: Регистрация: 30.01.2015
22.06.2015 19:03:33
Добрый день. Не могу осознать.
Вот фрагмент скрипта, выполняющийся в цикле потока main
В таком виде все прекрасно работает, в логе верные цифры, никаких проблем нет.
Если я заменяю 00:00:00 на получение серверного времени, то через некоторое (разное) время зависает главный поток терминала. При этом логирование ВСЕГДА завершается выводом цифры 4. Эффект абсолютно стабильный, самомодификации кода в скрипте нет.
В колбеках идет активная работа со стаканами, таблицей сделок и обработка .tro файла
та же функция но, только в QLUA-script VM - ведёт себя абсолютно стабильно:
Код
message(getScriptPath())
is_run = true
function main()
while is_run do
sleep(100)
end
end
function OnStop()
is_run = false
return 1000
end
Что говорит о том, что эти функции - абсолютно разные физически и имеют лишь общим - только название.
Это говорит лишь о том, что скрипты и индикаторы исполняются в разных средах. Что, в общем-то, должно быть очевидно.
Ваш бы энергию да в мирных целях...
Пасхалочка для Алексея Иванникова:
QLua + C#, вызов методов с# из QLua
Пользователь
Сообщений: Регистрация: 30.01.2015
19.06.2015 00:23:47
Цитата
Дмитрий Сазонов пишет: Здравствуйте. У меня такой вопрос: есть потребность вызывать методы c# класса из QLua. В какой-то степени удалось что-то сделать с помощью LuaInterface.dll и luanet.dll, которые как раз и предназначены для этого. Однако возникла такая проблема: почему-то методы вызываются, если они применяются в main функции. Если же я вызываю экспортируемые методы из обработчиков событий, то ничего не происходит, как будто куска кода нет. Кто-то может сказать, в чем причина кроется? Насколько я знаю, обработчики и main функция крутятся в разных потоках, может это связано с этим? Вообще у кого-то есть успешный опыт использования c#, или подобные вещи стоит делать только через с api lua ?
Верно. Проблема в двухпоточности. Эти библиотеки можно использовать только из того потока, в котором они созданы.
api lua, без вариантов
Пасхалочка для Алексея Иванникова:
не соответствует время
Пользователь
Сообщений: Регистрация: 30.01.2015
19.06.2015 00:20:36
Цитата
Юрий пишет: Ну вот развели демагогию, а умный человек подсказал, что все действительно придумано до нас: getInfoParam("SERVERTIME") - время сервера, а с миллисекундами: в таблице «Таблица сделок» («trades») в datetime есть поле с миллисекундами и поле с микросекундами, т.е. getItem(«trades»,e).datetime.ms и getItem(«trades»,e).datetime.mcs соответственно. Вот и все.
Вам это только кажется.
servertine - это время сервера. Время сделок идет по времени биржи. Они похожи, но не равны. А еще есть время доставки данных от брокера до вас.
Например, когда вы спрашиваете сервертиме, то получаете время в момент прихода запроса на сервер. Далее оно возвращается вам. Ничто не мешает его вам получить уже в следующей секунде.
Путь тупиковый. В идеальных условиях все будет более-менее нормально, чуть посложнее - и все рассыплется.
Пасхалочка для Алексея Иванникова:
Получить доступное количество
Пользователь
Сообщений: Регистрация: 30.01.2015
18.06.2015 16:00:11
Цитата
Космонавт пишет: можно ли в какой то из таблиц средствами Луа получить количество доступных лотов, которое видно в окошке ввода заявки?
CalcBuySell()
Пасхалочка для Алексея Иванникова:
OnFuturesClientHolding, как работает данный коллбэк
Пользователь
Сообщений: Регистрация: 30.01.2015
18.06.2015 15:45:07
Цитата
Eugene Korno пишет: Добрый день. Подскажите как работает данный коллбэк. У меня он срабатывает несколько раз при изменении позиции. Код приведен ниже.
Код
require"QL"
log="log.log"
is_run = true
function OnStop(s)
is_run = false
toLog(log,'OnStop. Script finished manually')
message ("auto_stop finished manually", 2)
end
function OnFuturesClientHolding(fut_pos)
message("Произошла сделка по инструменту "..fut_pos.sec_code,3)
end
function main()
log=getScriptPath()..'\\'..log
toLog(log,"Start main")
while is_run do
sleep(5000)
end
toLog(log,"Main ended")
end
Евгений. Этот колбек срабатывает не на сделку, на какие-то изменения в портфеле срочного рынка. Эти изменения могут быть вам видны глазом в экранной таблице квика, а могут быть и не видны.
Нет никакой гарантии, что сделка по инструменту вызовет только один колбек, и точно также нет никакой гарантии, что этот колбек будет срабатывать только про исполнению сделок (причин для изменений в таблице позиций срочного рынка много разных)
Для установления факта сделки существует колбек onTrade.
swerg пишет: По русски же пишет - нет файла core.dll по указанному пути Скопируйте его туда из того места, где он есть.
swerg, всё на месте. В соседнем КВИКе работает.
Неполный комплект поставки на текущем компьютере. Не все необходимые модули второго уровня имеются в наличии или доступны
Пасхалочка для Алексея Иванникова:
графический интерфейс, библиотека для создания формы ввода
Пользователь
Сообщений: Регистрация: 30.01.2015
17.06.2015 20:22:56
Цитата
Сергей Радченко пишет: какая сейчас актуальная и без багов библиотека для реализации графического интерфейса(формы) для ввода данных пользователем в рамках Quik Lua?
В рамках Qlua все что есть, описано в документации.
Внешние библиотеки на первый взгляд позволяют создавать граф интерфейс к скриптам, но на второй - уже нет. В текущей реализации Qlua использование внешних граф библиотек гарантированно сопряжено с проблемами. Причина известна и на текущий момент средствами пользователя неустранима.
Рассинхронизация времени вашего компьютера с вреенем биржи или брокера обозримыми способами не лечится.
Пасхалочка для Алексея Иванникова:
Что приходит в OnTransReply ?
Пользователь
Сообщений: Регистрация: 30.01.2015
12.06.2015 02:27:20
Цитата
Юрий пишет: А эти, по крайней мере, те, что попадались, не совпадают.
Сможете привести пример? Будет интересно
Пасхалочка для Алексея Иванникова:
Данные из Таблицы параметров опционов...., Данные из Таблицы параметров опционов.
Пользователь
Сообщений: Регистрация: 30.01.2015
11.06.2015 20:20:48
Цитата
Дмитрий пишет: Под "подробными комментариями относительно назначения каждого параметра и т.п." я имел в виду нечто большее, чем просто русскоязычный текст с названием параметра. Иногда только по названию сложно однозначно понять, что именно обозначает тот или иной параметр, как он рассчитывается биржей и т.п. Разработчики в данном случае любят отсылать за подробностями на биржу, но на сайте Московской биржи я не замечал подробных описаний параметров (да и вообще каких-либо их описаний). Было бы очень хорошо, если бы разработчики привели хотя бы ссылку на такую информацию на сайте биржи. Ведь сами они где-то брали в свое время описание всех параметров ТТП, которое приведено в руководстве по QUIK (которое правда уже несколько отстало от жизни).
Дмитрий.
Бирж в мире очень много разных. У каждой биржи свои параметры и свои особенности этих параметров. Шлюзы есть к нескольким из них. Описать все нюансы невозможно.
Пасхалочка для Алексея Иванникова:
Что приходит в OnTransReply ?
Пользователь
Сообщений: Регистрация: 30.01.2015
11.06.2015 19:51:21
ifuse(`transaction',`status',` function transaction.status(reply) return ({ [0] = "Транзакция отправлена серверу", [1] = "Транзакция получена на сервер QUIK от клиента", [2] = "Отсутствует подключение шлюза ММВБ", [3] = "Транзакция выполнена", [4] = "Транзакция не исполнена", [5] = "Транзакция не прошла проверку сервера QUIK", [6] = "Транзакция не прошла проверку лимитов сервера QUIK", [10] = "Транзакция не поддерживается торговой системой", [11] = "Транзакция не прошла проверку электронной подписи", [12] = "Нет ответа на транзакцию", [13] = "Кросс-сделка" })[reply.status] end ')
С одним маленьким но.
Код 12 придется эмулировать самому.
Пасхалочка для Алексея Иванникова:
CreateDataSource если график не открыт
Пользователь
Сообщений: Регистрация: 30.01.2015
10.06.2015 12:29:18
Цитата
Павел Bosco пишет: Почему для того чтобы CreateDataSource вернул не пустой массив, нужно чтобы на рабочем месте хоть раз был открыт график по этому инструменту? Сегодня проводил несколько экспериментов - создавал DataSource для пятиминуток в Si-9.15 Изначально графиков с ним открытых не было - только Si-6.15 (предыдущий) и возвращался в результате пустой DS если Si-9.15 внести в таблицу параметров - это не влияет на DataSource - так и возвращается пустой. если же открыть хотя бы часовой график Si-9.15, то DataSource даже для 5минуток начинает возвращать свечи.
в настройках стоит "с учётом настроек Связь/Списки", в настройках "Связь/Списки" фильр для инструментов не задан (доступны все).
неужели обязательно теперь будет открывать новый график, чтобы программа на Lua корректно получала данные?
Если график инструмента на нужном таймфрейме открыт - данные есть в наличии и вы их видите сразу Если график не открыт, то требуется время для доставки данных в терминал.
Надо подождать, прежде чем получать значения.
Пасхалочка для Алексея Иванникова:
Узнать таймфрейм графика
Пользователь
Сообщений: Регистрация: 30.01.2015
07.06.2015 15:41:36
Пасхалочка для Алексея Иванникова:
QLua-Indicators SandBox Internals
Пользователь
Сообщений: Регистрация: 30.01.2015
06.06.2015 07:23:43
Цитата
Код
Что такое function getQuoteLevel2Ex . У нас, как бы ведь уже есть не "Ex"
Это аналог с некоторыми изменениями. Прироста производительности не даёт. Не документирована и потому к использованию не рекомендуется.
Функции O, H, L, C, V, T Функции в качестве параметра принимают индекс свечи и возвращают соответствующее значение. Время свечи возвращается с точностью до миллисекунд в виде таблицы с полями: {year, month, day, week_day, hour, min, sec, ms, count}
Почему параметры sec и ms всегда равны нулю?
Потому что вы смотрите регулярный таймфрейм. Переключитесь на тики.
Пасхалочка для Алексея Иванникова:
Take Profit, Как правильно выставить величину отступа и спрэда
s_mike@rambler.ru пишет: Сергей, при помощи этой библиотеки можно общаться далеко не со всеми почтовыми серверами.
Значит нужно выбрать тот сервер с которым она работает
Серверов, не нуждающихся, например, в TLS/SSL, уже мало и количество их уменьшается. Обычно это древние сервера. Дописывать библиотеку для поддержки новых стандартов, как я понимаю, никто не собирается.
Пасхалочка для Алексея Иванникова:
Кто как решил вопрос уведомления о сделках?
Пользователь
Сообщений: Регистрация: 30.01.2015
29.05.2015 00:02:53
Сергей, при помощи этой библиотеки можно общаться далеко не со всеми почтовыми серверами.
Николай Бехтерев пишет: Есть какая-нибудь возможность кидать хотя бы е-мейлы через скрипт?
Здравствуйте, Способов много, тот же email можно отправлять через
Сергей, Вы сами пробовали использовать эту библиотеку с qlua?
Пасхалочка для Алексея Иванникова:
получение параметров индикатора, обращение к line
Пользователь
Сообщений: Регистрация: 30.01.2015
27.05.2015 15:09:57
Цитата
Старатель пишет: Что интересно, вне функций и внутри Init параметр line доступен. Далее он отсутствует, как будто удаляется из Settings.
Как понимаю, сделано это с целью запретить изменять настройки "на лету" из самого индикатора.
Пасхалочка для Алексея Иванникова:
получение параметров индикатора, обращение к line
Пользователь
Сообщений: Регистрация: 30.01.2015
27.05.2015 12:47:09
Николай, исполнение индикатора в терминале quik отличается от исполнения скрипта в интерпретаторе lua. Так проверять нельзя.
Пасхалочка для Алексея Иванникова:
Volume At Price для QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
24.05.2015 19:51:35
Вы продублировали это сообщение у меня на сайте по ссылке выше. Я ответил Вам там.
Пасхалочка для Алексея Иванникова:
Volume At Price для QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
23.05.2015 16:43:05
Цитата
sam063rus пишет: полагаю, что Вы уже прочитали этот линк? :
хотелось бы услышать для начала какова цена проекта такого уровня (по сути, - уровня vclua)?
Я не участвую во всякой ерунде.
Пасхалочка для Алексея Иванникова:
Volume At Price для QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
23.05.2015 16:36:07
Цитата
sam063rus пишет: думаю, совсем было бы чудом, если со временем каким-то образом можно было бы построить полноценную "улыбку волатильности", а также весь открытый интерес по всем страйкам (страйки по абсциссе, а величина OI - по ординате разумеется). Но, это уже врядли возможно без создания полноценного модуля отрисовки чартов.
s_mike@rambler.ru пишет: Но если уже на то пошло, то имея на руках алгоритм работы условной стоп-заявки на сервере брокера, узнать можно. Тут сработает тейк-профит . Однако это сокровенное знание не является документированным.
Без анализа движения цены разве можно так утверждать?
При ТАКОМ движении цены - можно. При ДРУГОМ движении цены за время жизни этой же стоп-заявки результат может быть иным.
Николай Камынин пишет: если выставление стопов соответствует их названию, то можно определить по расположению цены сделки предшествующей срабатыванию стопа по отношению к расположению позиции относительно рынка.
В общем случае это неверно. В большинстве случаев так прикинуть можно, но далеко не всегда.
Поэтому утвердительно ответить на первоначальный вопрос нельзя.
Это голословное утверждение. приведите пример, но соблюдайте указанные мною условия.
Условий я не видел.
Вот вам живой пример:
стоп лосс 99 тейкпрофит 101 / 2 Выставляется, когда цена равна 100
движение цены: 100 -> 101 -> 99
Условие срабатывания неопределено.
---------------------
Но если уже на то пошло, то имея на руках алгоритм работы условной стоп-заявки на сервере брокера, узнать можно. Тут сработает тейк-профит. Однако это сокровенное знание не является документированным.