Робот на С++ или C#
У меня инженерное образование. Окончил университет по специальности «Программное обеспечение ВТ». Так вышло, что по специальности не работал ни дня. Есть мысли по автоматизации процесса торговли. Нужна информация по стыковке (экспорту) данных из Quik. Может быть кто ссылочку кинет на ресурс с информацией или, в идеале, скинет в личку рыбу робота (проект в Visual studio) или библиотеку классов. Буду очень благодарен за помощь.
Если охота самому повозиться с коннектором, можно начать с этого:
sib-algo.ru/open-source/экспорт-котировок-из-quik.html
sib-algo.ru/open-source/выгрузка-свечей-на-chart-v-2.html
Есть вроде где-то исходники с примерами выставления заявок через Transe2Quik.dll.
А вообще, СтокШарп же есть. К квик вообще там вроде бы всё открыто, без сертификаций. github.com/stocksharp/stocksharp
Примеры кодов на С++ выставления заявок посредством T2Q и получения коллбэков об их исполнении есть на самом сайте Квика.
В 2012-м ещё не было на С#, а сейчас мне уже не надо — мне ещё в тот год помогли с переносом на С#. И траблов у написанного привода нет. Поэтому менять не хочется.
Никуда DDE из Квика не делся. Просто для роботов я качаю данные нужных мне таблиц в базу по ODBC и дальше на С# работаю с базой. А DDE по прежнему использую для закачки в Excel, но не доя роботов, а для аналитической работы. А для работы с заявками использую упоминавшийся здесь T2Q, для которого знающие люди мне сделали «класс» на С#, на основе примеров кодов из файлов с сайта Квика на С++.
Работать с Квик через базу данных — месье знает толк в извращениях.
Я не использую ни то, ни другое, а работаю напрямую с квиком. Какое мне дело, что в каких доппрограммах их выключили?
В 2012-м, когда я знакомился Стокшарпом, он там был, но я с ним не разобрался и Стокшарпо привёл, как пример библиотек на С#, решающих задачу закачки данных из Квика и отправки заявок в него.
Вы написали про них в своем сообщении. Не знаю, какое вам дело.
Я только написал, что там решались те задачи, о которых пишет автор в корневом топике. В чем я не прав? А закачка по DDE от Морошкина — это пример одного решения одной из задач, заявленных автором корневого топика. Надо внимательнее читать корневой топик и понимать, что я отвечал на его текст, а не писал сам по себе.
Я прокомментировал про ДДЕ. Приведенные вами программы от него отказались. Не просто так же. А вы советуете его, пишите про него.
Ну так бы и написали, что Стокшарп от него отказался. Потому что то, что Lua появился в Квике, я знаю. Как я должен был понять, что под «этими программами» подразумевается только один Стокшарп?
КуСкальп отказался от ДДЕ.
Прежде чем бежать писать на сайте, заявляя лишний раз о себе (раз нет результатов на ЛЧИ), лучше бы подучили матчасть. Стыдоба.
А где в моем сообщении про кускальп?
То, с чем я разбирался — это был отдельный файл с кодом на С# для закачки таблиц из Квика по DDE за авторством Морошкина, о чем я корректно и написал в своём сообщении. Какое мне дело до других программ автора кода, если я отвечаю про своё знание на вопрос, заданный в корневом топике?
Действительно, какое вам дело. Вам же просто отписаться. Лучше бы на ЛЧИ зарегистрировались, и показали, как умеете трейдить.
Таким, как мы, никакого смысла участия в этом шоу нет. Я уже публиковал наши результаты, завтра опубликую ещё один топик. Там нет сотен процентов годовых и не будет. Зато эти проценты получены на капитале, которого нет ни у кого в ЛЧИ.
Завтра все увидите и поймёте какой капитал нужен для содержания компании и получения прибыли для владельцев при заявленных доходностях. О порядке я писал ни раз -ХХХ млн. руб.
Когда у Вас клиенты на ДУ, только идиот будет публиковать нереальные результаты. Это трудно понять?
А как мы торгуем, транслируя сделки с большого счёта на маленький с увеличенным в полтора раза плечом есть в сети
www.zerich.com/internet-trading/trade-robots/forum-strategy.html
Это не по теме ветки, но Вы спросили, я ответил
Я не буду открывать счет в церихе и подписываться на ваши сигналы (или что вы там раздаете) только для того, чтобы проверить, что вы умеет управлять деньгами, а не очередной бабабол ввиде Писчикова и других, кого тут активно пиарят.
Нет результата в публичных конкурсах? Не смертельно, но доверия вашим словам еще меньше, чем если бы вы даже свои результаты не публиковали нигде.
Не вижу противоречия. Я рассказал то, как сам программирую торговых роботов. Как программирует IT-отдел ту же автотрансляцию сделок, я просто не знаю. Вернее знаю, что это делается посредством использования протоколов FIX и Плаза2, но не думаю, что автор корневого топика спрашивал об этом. Зачем я буду писать то, чего точно не знаюи о чем не спрашивали. А счёт в Церихе полностью подтверждён брокерскими отчётами. С «мокрыми печатями» и т. д… Это подтверждение куда более достоверное, чем результат на ЛЧИ. Но он же показывает, почему нам нет смысла участвовать в шоу под названием ЛЧИ. Быть там на 30-40-50 месте? Какой смысл? Первая десятка нам «светит» только за счёт удачи, на которую рассчитывать глупо.
Какого ответа? Заявку на участие в ренкинге управляющих мы подали сразу, как только о его тестировании объявила ММВБ. То, что с этим ренкингом биржа не решила технические вопросы, это вопрос не к нам.
Тервер, матстат — это все 10-ое.
Это специфика моих роботов. Работа с Timeseries существенно тормозит их работу и очень громозка по кодированию, когда из них надо загнать кусок данных разной длины в конечный массив, чтобы вычислять нелинейную функцию от него. Мне проще сразу качать данные в этот массив из базы данных и не париться с теми кодами, про которые написал.
Если Квик накроется, то и у меня ничего работать не будет. Было такое, когда у брокера свет в офисе вырубили и в компании было, когда арка кривой апгрейд нашего сервера сделала (мы там на аутсорсинге). В первом случае полдня не работало, во втором 40 минут.
— API импорта транзакций 1.2 (для версии 6.3 и выше)rar, 164.1 КБ или
— API импорта транзакций 1.3 (для версии 7.0 и старше)rar, 166.3 КБ
… — там есть примеры работы с trans2quik.dll… не робот конечно, но уже помощь…
1. Из квика, стакан и котировки из таблиц ловятся скриптом Lua и пишутся на RAM диск в виде файлов. Работает все очень быстро, ведь это же RAM Disk в памяти, 7ГБайт/сек обмен. DDE тут бесполезен (медленно). Как вариант, видел работу через сокеты — не пробовал.
2. Из квика портфель (сколько контрактов) и деньги передаются через DDE, т.к. там нет особенных скоростей. Квик кидает данные в мою программу на C# через DDE. Моя программа является сервером DDE (использовал NDDE библиотеку из сети).
3. Из программы заявки ставятся через trans2quik.dll и слушаются ответы (callback) о статусах (исполнена, сколько налили и т.д.) — пример работы на C# есть в сети.
Это если вам нужен квик. У меня еще есть брокер ITInvest.ru, там они предлагают библиотеку SmartCom для работы с их серверами. Пример есть на C# (на их же сайте). Можно открыть тестовый доступ и помацать пример.
local f2 = io.open(«g:\\StakanEDZ5.txt», «w»)
f2:write(«S|12345|E»)
f2:flush()
f2:close()
к тому же скрипт в lua надо исполнять максимально быстро, он в основном потоке квика исполняется.
На самом деле мне нужен был просто сервер сообщений, кинул в него — и забыл, пришло-не пришло. Можно в БД кидать, можно через сокет — но это все требует наличия ответной части, коннекта к ней. С файлами этого нет. Быстро и сердито. А из .Net поймать файл элементарно, там есть FileSystemWatcher чтоли (давно делал, уже не помню точно как называется класс). Его можно создать, сказать — слушай эту директорию и если есть изменения — вызови мой метод. Кстати метод вызывается асинхронно, так что программа на C# делает обработку каждого инструмента отдельно в своем потоке. Я складываю стакан и котировки каждого инструмента в свою директорию. Работает очень быстро, до 500 изменений в директории в секунду. Это перекрывает скорость поставки данных из квика.
quik2dde.ru/viewtopic.php?id=16
Но дело в том, что все интересное происходит в событиях, OnQuote (стакан), OnParam (котировки) — и их надо быстро-быстро исполнять. В main вообще нет никакой логики в моих скриптах, там просто sleep в цикле.
одна сделка за 4 секунду.
Зачем вам тогда суперскорости, если и DDE отработает?
Я об этом тут всех Квиковцев предупреждал года 3 назад, и даже тогда когда сами Морошкин и СтокШарп ещё продолжали восхвалять свой DDE.
Но выбирайте сами.
rem. Например у alor-а (брокера) есть свой терминал, он использует для доступа к его данным COM интерфейс, а не какой-то сраный DDE.
Проще и понятнее. 1- квик пишет данные в ячейку акцесса.
2- в акцессе для чтения данных из этой ячейки запускается каждый раз sql запрос (или объектный код ADO библиотеки к доступу ячейки) и т.о. акцесс даст вам со 100% гарантией не конфликт с записью в эту ячейку. REM. знаете почему сбойнет у вас dde (в стандартном варианте)? Потому что у DDE есть буфер который заполняется пока есть конфликт с доступом к записи. Как только буфер заполниться DDE или сбойнет или потеряет данные.
И учтите, это ваши деньги а не тех людей, включая меня, которые вам советуют. Пробуйте.Удачи.
Я думал, что с++ как раз подходит для широкого профиля.
Помогите с выбором, если не затруднит:
Язык выбирал для широкого профиля.
Писать маленькие программы для себя, в том числе и для торговли.
В тоже время, чтобы выученный язык помогал писать макросы в екселе.
Чтобы с этого языка можно было развивать навык программирования дальше.
Макросы для excel как я помню, пишутся на visual basic. Ну тогда можно Visual Basic.Net смотреть, но это уже немножко не то.
Плюсанул его второй топик (первый плюсанул сразу, как прочел). Решения интересные для тех, кому важна скорость. Мне просто секунда не принципиальна при работе с базой. Я вообще торгую по минутным барам, так как вероятность двух сделок на одной минуте у любого из моих роботов близка к нулю. Единственный «прибамбас»: минутные бары по всем эмитентам формируются при появлении сделки из следующей минуты, хотя бы в одном из эмитентов (исходный поток — это таблица всех сделок квика по выбранным эмитентам). Других потоков я не использую.
1. Разработать математику и где-то ее «покуртить повертеть» как можно быстрее и с наименьшими затратами труда. Что-бы графики отрисовались для загруженных исторических данных и т.п. На глаз оценили — все ок, то следующий этап:
2. Нужно протестировать на истории, протестировали, если все ок, двигаемся дальше
3. Определяем платформу через которую торгуем, если определили, делаем советник робота и коннектим к нему dll скомпилированную софтиной в которой делали этап 1
4. Запуск торговли.
И без матлаба, мэпла или математики, у вас «супер умных роботов, индикаторов и советников» не будет! А прибыльных простых стратегий — это единичные экземпляры (на среди 5000 индикаторов на сайте mql5 нет практически ни одного.
Бугага.
Have a fun!
Правильный ход мыслей. Только одного положительного матожидания недостаточно. Нужен еще параметр риск и по соотношению доходность-риск надо обойти лучшую из пассивных стратегий (Лонг, шорт или аут). И вторая не менее важная часть — это не допустить переподгонки.
ты прав — надо упрощать
главное не бери в руки чужой софт, пропадешь
пиши на луа, если знаешь что ты хочешь
потом уже отрабатывай узкие места
Без обид! Ключевиков для начала достаточно я тут накидал ;)
в двух словах — в Lua скрипте из Quik создаётся named pipe, через которую в Lua (Quik) засылаются запросы и получаются ответы.
named pipe можно читать/писать из любого языка. серверную часть на Lua можно дополнять любыми новыми запросами.
код немного староват, но новый никто не просил. с некоторой модификацией работает в бою у меня.
из серьёзных недостатков пока осталось использование lua-ffi обёртки, однопоточность и сериализация/парсинг данных в строковый формат при положении в pipe. эту часть можно упростить и гонять через pipe не текстовое представление цифр, а бинарные цифры.
немного длинно получилось. но так понятнее.
скорости получения стакана, свечек и ГО — доли миллисекунд.
сетевые тормоза и квиковские — гораздо больше, чем те что даёт робот. дальше только DMA и колокация. из квика HFT не вылепить.
ну, читайте топик из профиля :)
Извините, не понял вопроса