Блог им. Tinych

Квик DDE, таблицы Экселя, Пайтон

Чтобы не свихнуться от захлестнувшего мир сумасшествия. Решил освоить модный нонче Пайтон.
До этого был небольшой опыт программирования на языке R. Столкнулся с одной проблемой. Пайтон прекрасно читает данные из таблиц Эксель. Например, копирую таблицу текущих параметров Квика. Сохраняю в Эксель, все читается, можно обрабатывать данные. Вывожу эту же таблицу по DDE в Эксель, данные выводятся. Если не сохранять эту таблицу, то Пайтон ничего не видит. Если же ее сохранить, то видит только последние сохраненные данные. Причина, скорее всего, не в Пайтоне, а Экселе. Собственно вопрос: как прочитать Пайтоном таблицу Эксель, с данными, получаемыми по DDE от Квика?

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
  • обсудить на форуме:
  • QUIK
567 | ★1
21 комментарий
Рекомендовал бы не связываться с DDE. Так себе решение, проходили. Попробуйте написать скрипт qlua, где в цикле каждые N секунд сбрасывайте таблицу в файл. Сбрасывать можно на диск в памяти.
Ну а потом этот файл читать из питона.
Рекомендую в конце файла ставить какой нибудь индикатор конца файла, а то квик еще не записал файл до конца, а питон уже начал читать и закончил, хотя данные еще не записались.
Счастливый Конец, Спасибо. А с помощью qlua Квик позволяет обращаться к своим штатным таблицам? 
Vladimir Diaditchev, конечно позволяет. Найдите в папке квика файл QLUA.chm и там перечислены таблицы и их поля. Читаете строка за строкой нужные поля, сбрасываете в файл и дальше делайте что хотите. А так вам выше написали, в экселе есть VBA, прямо в нем можно анализировать. VBA это visual basic for application, встроенный в эксель (и в ворд тоже) язык программирования. Можете повесить событие на изменение чего либо и выводить результат куда либо.
Счастливый Конец, Ок. надо попробовать, Спасибо.

нафига накручивать всякую всячину в виде питон-скриптов поверх excel если в том же VBA можно запилить любой код при изменении книги/листа/ячейки. Через DDE обновляется таблица в excel, это обновление обрабатывает vba на лету

Вот это вообще не понял:
Если не сохранять эту таблицу, то Пайтон ничего не видит. Если же ее сохранить, то видит только последние сохраненные данные.

скрин таблицы квика, которую пытаетесь влить в excel прикрепите. Если котировки, то для интрадей DDE при большой частоте тиков отвратителен.

копирую таблицу текущих параметров Квика. Сохраняю в Эксель

Что вы вкладываете в понятие «копировать таблицу в excel» и «сохранить в excel»? У вас питон-скрипт к чему обращается к текущим данным в книге «на лету» или к сохраненному файлу excel на диске?
avatar
Serj90,  чего тут непонятного, квик через DDE посылает данные в открытую таблицу Excel (сам эксель тоже запущен) и все работает. Но питон открывает таблицу как файл, а в файл после DDE никто не сохраняет и питон изменений не видит.
Счастливый Конец, Так и происходит. 
Vladimir Diaditchev, Попробуйте в VBA сделать сохранение документа после изменения листа экселя. Как это сделать уже не могу сказать, лет 20 уже этот VBA не трогаю. Зайдите в редактор макросов и посмотрите события листа на которые можно повесить созхранение.
Serj90, Скрин таблицы, данные из которой хотел получать в Пайтоне.
В Пайтоне достаточно просто решается обработка полученных данных, представление их в удобном для восприятия виде и тп.  
Вот таблица получаема по DDE:

Данные в таблице меняются, по мере поступления. Но Пайтон именно  изменения не видит, при периодическом чтении таблицы выводит одни и те же данные, у меня ячейку B2? таблицы.

В таблице Эксель данные меняются, Пайтон читает только сохраненные данные.

«копировать таблицу в excel» -копирование из Квик в Эксель через буфер обмена. «сохранить в excel» нажатие иконки сохранения. 
Vladimir Diaditchev, тогда решение: автосохранение по изменению значения в ячейке. Но представьте к вам валится 100 тиков в секунду… Повторюсь у меня i5, 8gb ram, ssd. Первые 30 минут начала торгов и я выгружаю только цену последней сделки — дикие просадки в произволительности, а вам еще и сохранение требуется.
avatar
Выгружайте через ODBC в MsAccess, а оттуда забирайте в Питон, например через SQL запросы 
T-800, если необходимо использовать  обезличенннеы слелки, ордера и стопы — access не тройгате. от него сам уходил на MS SQL+VB NET. Почему? потому что необходимо использовать bigint -19-значные номера сделок. Это при условии что робот полноценный. ODBC--MS SQL(здесь на вкус цвет)-- ЯП (на вкус и цвет). 
avatar
Счастливый Конец, ну перечитай мой коммент и поймешь что было из топика не понятно
avatar

Два варианта автосохранения файла Excel используя VBA.

Вариант 1:
Модуль ЭтаКнига:Private Sub Workbook_Open()      Call save20  End Sub   Модуль Модуле1:Sub save20()      thisWorkbook.Save      Application.OnTime Now + TimeValue(«00:00:20»), «save20»  End Sub

Вариант 2:
Module1 :Public TimerFlag As BooleanPublic MyEarliestTime As Variant Sub Timer_Tick()    If TimerFlag Then        ThisWorkbook.Save        MyEarliestTime = Now + TimeValue(«00:00:20»)        Application.OnTime EarliestTime:=MyEarliestTime, Procedure:=«Timer_Tick»    End IfEnd Sub Модуль ЭтаКнига:Private Sub Workbook_Open()    TimerFlag = True    Call Timer_TickEnd Sub Private Sub Workbook_BeforeClose(Cancel As Boolean)    TimerFlag = False    Application.OnTime EarliestTime:=MyEarliestTime, Procedure:=«Timer_Tick», Schedule:=False    ThisWorkbook.SaveEnd Sub
Сам пробовал вариант 2, он немного глючит при закрытии Excel. Вариант 1, не пробовал.



avatar
Спасибо, попробую эти варианты.

avatar
Vladimir Diaditchev, здравствуйте! Столкнулся с аналогичными проблемами. Подскажите, получилось ли у вас решить их?
avatar
OldDead, Добрый день. Нет. Одним кликов не решается. Оказалось, что мою задачку проще решить непосредственно в Excel.
avatar
Vladimir Diaditchev, есть вариант автосохранения Экселя через макрос, если еще нужно
www.planetaexcel.ru/forum/?FID=8&PAGE_NAME=read&TID=8004
После удалось соединить с питоном
avatar
OldDead, Спасибо, буду пробовать.
avatar

Читайте на SMART-LAB:
Фото
BRENT: Мелкими шагами направляемся вниз
Нефть марки Brent продолжает свое снижение и практически коснулась психологического уровня 70. Под закрытие торговой недели мы можем увидеть...
Каждый десятый заемщик МФО допускает обращение к «черным» кредиторам
Мы провели исследование и выяснили, насколько хорошо заемщики отличают легальные МФО от нелегальных кредиторов, а также готовы ли обращаться к...
Фото
Ценные бумаги. Взгляд в прошлое. Восточное общество товарных складов, страхования и транспортирования товаров с выдачей ссуд.
Если вас интересуют другие аналитические и информационные материалы от банка АО АКБ «ЦентроКредит», смотрите их на нашем сайте...
Фото
Мой инвест портфель. Структура портфеля, последние действия по портфелю. Состав портфеля валютных облигаций
Сегодня делал действия по портфелю. Кроме того, решил пособирать инфу по счетам и посмотреть как там дела.  

теги блога Vladimir Diaditchev

....все тэги



UPDONW
Новый дизайн