Quik, DDE, Excel
Напомню, что обмен по DDE придуман в далеком 1995 году, еще для Windows 3.1. DDE считается сильно устаревшим методом обмена данными и практически не поддерживается современными приложениями. Остался один Quik, который цепляется за DDE из последних сил.
Вывод по DDE в Excel еще и не удобен для обработки данных. Понадобилось мне, скажем, ввести дополнительно пару-тройку столбцов на опционную доску — в результате, в Excel все столбцы таблицы на листе сместятся, и всю адресацию ячеек листа Excel в программе надо будет переделывать заново.
В MS Access также имеется DDE-сервер, и есть возможность заполнять таблицы БД по DDE, однако Quik c Access по DDE работать не умеет.
В общем, решил, что экспорт таблицы из Quik по DDE надо запихнуть в таблицу базы данных (БД), и уже из БД программно работать с опционной доской. Что, кстати, гораздо удобней для любой таблицы Quik.
Хотел было через Lua — вроде все просто, Lua с таблицами работает. Ан нет, к доске опционов Lua доступа не имеет.
Наверное на С++ или C# связь по DDE надо делать.
И подумалось, а может у Смартлабовцев есть такие уже готовые рабочие решения, чего велосипеды изобретать? По крайней мере, для DDE (никогда программно с ним не работал), а в БД я и сам запихну, и если нужно поделюсь решением — здесь нет никаких ноу-хау.
Помогайте, граждане кто чем может.
Скрипты для греков неинтересны, у меня свои есть.
Доска — банальная совокупность отдельных инструментов. Подписываетесь на обновления по опционам и на каждом апдейте вносите изменения в БД.
Больше всего, кмк, Вам надо подумать над структурой таблички в самой базе. Наверное, Вы не можете упихать всю доску в одну строчку. Поэтому возникает вопрос что будет составным ключем и готовы ли Вы платить объёмом за удобство последующего использования?
Найти бы где готовый Excel совместимый DDE-сервер на С++ или лучше на C#.
Уже нашел здесь на C# — с исходниками и даже скомпилированный, но он оч. древний, и, видимо, работать не будет. Экзешник уже не запускается. Ну, это еще разбираться с исходниками буду.
Вы мне напоминаете участника Dmitryy: принципиально упретесь рогом, убьётесь, несколько лет потратите на освоение основ опционов и программирование (DDE, C#, VBA, C++, Python, R, Excel, SQL, СУБД,… ) своего собственного костыля…. Вместо того, чтобы сосредоточиться на торговле и вытаскивании остатков неэффективностей.
Работает или не работает — неважно. Зато всё своё!
С уважением и успехов!
ПС Сам такой был лет 10-15 назад. В своё «оправдание» могу привести только полное отсутствие хоть какого-то софта хотя бы отдаленно пригодного для алготорговли на ФОРТС. Тем более, для торговли опционами.
Но лучшее — враг хорошему.) А сделать можно между делом. Не ах какая сложная задача. А если здесь никто не сталкивался, так в инете рыба найдется.
ЗЫ Кстати, как вы остатки неэффективности вылавливать собираетесь без своего собственного софта? Питон, R или, хотя бы, Ексель.
3Qu, всё это — просто системы для быстрого прототипирования и неспешных размышлений о прекрасном.
R с задачей расчета улыбки в реальном потоке данных у меня вообще не справился.
Приятного кодирования,
Недавно обсуждал эту тему с Kvazar.
https://smart-lab.ru/blog/622377.php#comment11221190
Программно работаю и с DDE, и с Exсel.
Вы в Excel выводите данные из отдельных таблиц ?
Или обрабатываете таблицу всех сделок ?
Какой-то простенький проект С++ DLL для этого я публиковал здесь ранее, и еще Бегемот, кажется.
Возможно, то, что вы написали в https://smart-lab.ru/blog/622377.php#comment11221190 оно и есть. Если это не прямой экспорт в Ексель.
3Qu, вашего проекта к сожалению не видел.
У меня всё своё, сделанное на С#.
С DDE работаю через NDde.
Причём парсинг весь самописный.
C excel взаимодействую посредством библиотеки Microsoft.Office.Interop.Excel.
3Qu, для этого нужно накидать какой-нибудь простой пример.
Постараюсь сделать.
Ближе к началу следующей недели.
Сначала пособлю Kvazar, а потом сооружу вам.
Пока поищу этот Ndde.
Квик работает с ним по ODBC.
C Lua она тоже работать не умеет.
Иначе вопросов вообще не было.)
NDDE.dll, вообще-то 2006 года. Старовата, конечно, но и старше работают.
Если клиент забирает данные медленнее, чем отдает DDE — источник, то естественно он (DDE) будет переполнятся.
Не надо думать, что все кругом идиоты.)
Не могли бы подробнее написать где такая галка есть в Квике или картинку запостить ?
У меня Квик 7.27, но я что-то галки такой не вижу.
PS В общем, разобрался. Везде используются древние НЕТ фреймвоки. Ставить себе это не буду. М.б. что посвежее найду.
Сделал ДДЕ сервер на С++. Все оказалось достаточно просто, без всяких НЕТ-библиотек. Штатная DLL в Виндах. Работает, только Квик никак не хочет с ним соединяться.( А больше и не с чем и попробовать.
case XTYP_POKE:
return (HDDEDATA)DDE_FACK;
Все соединилось.
Толку от этого, правда никакого.)) Но как-то определились.
В case там уже вызовы функций из других листов.срр, а там уже malloc и пр. — хрен разберешь, кода много. Но, вообще, там интересно сделано. Пока разобрался поверхностно.
Да, спасибо за помощь! Оч вовремя.
smart-lab.ru/blog/205588.php
Не знаете, случайно, сокеты Lua совместимы с сокетами Python, C#, C++?
Пока получаю из Квик по DDE вот такую лабуду:
10 0 4 0 29 0 a 0 2 0 8d 0 7 ca ee e4 20 50 55 54 15 d6 e5 ed e0 20 ef ee f1 eb 2e 20 f1 e4 e5 eb ea e8 20 50 55 54 e d2 e5 ee f0 2e 20 f6 e5 ed e0 20 50 55 54 6 d1 f2 f0 e0 e9 ea f d2 e5 ee f0 2e 20 f6 e5 ed e0 20 43 41 4c 4c 16 d6 e5 ed e0 20 ef ee f1 eb 2e 20 f1 e4 e5 eb ea e8 20 43 41 4c 4c d c2 ee eb e0 f2 e8 eb fc ed ee f1 f2 fc 8 ca ee e4 20 43 41 4c 4c 10 d6 e5 ed e0 20 e1 e0 e7 2e 20 e0 ea f2 e8 e2 e0 9 d2 fd f2 и т.д.
Как строка char* она не печатается. Что с ней делать, пока понятия не имею.) Это я еще не проходил.)
как получить таблицу всех сделок за год
в удобном для анализа виде ?
(может в экселе)