Как говорится, делай добро и бросай его в воду.
Выношу на свет плоды своих трудов. Трудов не одного дня. На текущий момент это же решение уже работает у меня в составе робота.
Проверено.
Что это такое: с помощью скрипта
QApi.lua на стороне Quik организуется сервер, который умеет принимать команды с клиента и отдавать ему результаты выполнения этих команд.
какие команды и данные может выдавать скрипт
— получение стакана по заданной бумаге (class, security)
— получение последних N свечей по заданной бумаге (class, security, interval, count)
— получение времени сервера
— получение торговой даты
— получение статуса квика — подключен он к серверу или нет
Зачем это надо: работает достаточно быстро — десятые доли секунды, стакан отдаётся с разной скоростью, т.к. скрипт для начала ждёт чтобы стакан изменился (гарантированно последние данные), не требует на стороне квика никаких настроек и открытых графиков. всё что надо — запустить скрипт.
Как это работает используется Windows Named Pipe, работа с которой происходит чере технологию FFI — foreign function interface, эта технология поддерживается для многих языков, таких как Java и Perl, например. Из VBA и C# можно работать с Windows Pipe напрямую, сделав объявления соответствующих функций из kernel32.
Похвастаюсь, в процессе работы с FFI я нашел существенную ошибку, которая не позволяла корректно работать с Trans2Quik.dll (да, это я тоже сделал на Java, но это уже отдельный проект), а именно — падала при переходе в Callback по обновлению статуса заявки. Я связался с разработчиком и он любезно это исправил. На форуме Quik разные люди в разное время не могли побороть эту проблему 3 года...
Что нужно чтобы запустить у себя
- ну во-первых Quik, во вторых, нужна скомпилированная библиотека ffi.dll, я брал отсюда: github.com/jmckaskill/luaffi. Там надо будет подшаманить с qlua.dll, чтобы получить из неё qlua.lib
- затем, если вы будете работать на java, вам понадобиться jna, я брал отсюда https://github.com/twall/jna
Где можно взять исходники
а собственно вот:
github.com/boscogh/quik_pipe
Честно скажу, это мой первый опыт опен-сорса, может я что-то сделал не так, исправлюсь.
Надеюсь это всё кому-то поможет.
Зачем я всё это выкладываю? Хочу найти работу в очень серьёзном трейдинге. «Ну ваааазьмите меня»
Люблю системное программирование. И трейдинг.
клиент может подключаться и отключаться, сервер это легко переживает.
Вот эта штука, интересно, как реализована?
дайте, пжлст, мыло — есть темка.
тханк ю.
а мне интересно, как можно из своей софтины связаться с серваком брокера, чтобы он думал что моя софтина — квик и отдавал данные, и принимал команды