MPashuk (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Trans2QuikAPI_1.3 - пример для Excel, Почему в новой версии Trans2QuikAPI нет примера для Excel и где его взять?
 
Если кто-нибудь выложит здесь (или пришлёт мне на почту) 32-разрядную версию Примера, то я могу её переработать в универсальную для Excel VBA 32/64 и поделиться.
Trans2QuikAPI_1.3 - пример для Excel, Почему в новой версии Trans2QuikAPI нет примера для Excel и где его взять?
 
Для того, чтобы заставить пример для trans2quik.dll заработать в 64-разрядной версии Excel нужно просто заменить описание функций из библиотеки в файле-примере.
По шагам:
1. копируем 64-разрядную версию библиотеки trans2quik.dll в нужное нам место, пусть это будет, как у меня, корень драйва Q:.
2. Открываем файл с примером и заменяем описание функций в VBA-коде на:
Код
'Для версий Excel VBA от 2010
#If VBA7 Then
    ' Для 64-битной версии Excel (VBA)
    Public Declare PtrSafe Function TRANS2QUIK_DISCONNECT Lib "Q:\trans2quik.dll" _
        (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
    
    Public Declare PtrSafe Function TRANS2QUIK_CONNECT Lib "Q:\trans2quik.dll" _
        (ByVal lpstConnectionParamsString As String, ByRef pnExtendedErrorCode As Long, _
         ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Public Declare PtrSafe Function TRANS2QUIK_SEND_SYNC_TRANSACTION Lib "Q:\trans2quik.dll" _
        (ByVal lpstTransactionString As String, ByRef pnReplyCode As Long, ByRef pdwTransId As Long, ByRef pdOrderNum As Double, _
         ByVal lpstrResultMessage As String, ByVal dwResultMessageSize As Long, _
         ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Public Declare PtrSafe Function TRANS2QUIK_SEND_ASYNC_TRANSACTION Lib "Q:\trans2quik.dll" _
        (ByVal lpstTransactionString As String, ByRef pnExtendedErrorCode As Long, _
         ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long


    Public Declare PtrSafe Function TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK Lib "Q:\trans2quik.dll" _
        (ByVal pfConnectionStatusCallback As LongPtr, ByRef pnExtendedErrorCode As Long, _
         ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Public Declare PtrSafe Function TRANS2QUIK_SET_TRANSACTIONS_REPLY_CALLBACK Lib "Q:\trans2quik.dll" _
        (ByVal pfTransactionReplyCallback As LongPtr, ByRef pnExtendedErrorCode As Long, _
         ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Public Declare PtrSafe Function TRANS2QUIK_IS_QUIK_CONNECTED Lib "Q:\trans2quik.dll" _
        (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Public Declare PtrSafe Function TRANS2QUIK_IS_DLL_CONNECTED Lib "Q:\trans2quik.dll" _
        (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Public Declare PtrSafe Function lstrlen Lib "kernel32.dll" (ByVal lpString As LongPtr) As Long
    Public Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As LongPtr)

#Else
    ' 32-битная версия Excel
    Private Declare Function TRANS2QUIK_SEND_SYNC_TRANSACTION Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_SEND_SYNC_TRANSACTION@36" _
        (ByVal lpstTransactionString As String, ByRef pnReplyCode As Long, ByRef pdwTransId As Long, ByRef pdOrderNum As Double, _
         ByVal lpstrResultMessage As String, ByVal dwResultMessageSize As Long, _
         ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Private Declare Function TRANS2QUIK_SEND_ASYNC_TRANSACTION Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_SEND_ASYNC_TRANSACTION@16" _
        (ByVal lpstTransactionString As String, ByRef pnExtendedErrorCode As Long, _
         ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Private Declare Function TRANS2QUIK_CONNECT Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_CONNECT@16" _
        (ByVal lpstConnectionParamsString As String, ByRef pnExtendedErrorCode As Long, _
         ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Private Declare Function TRANS2QUIK_DISCONNECT Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_DISCONNECT@12" _
        (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Private Declare Function TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK@16" _
        (ByVal pfConnectionStatusCallback As Long, ByRef pnExtendedErrorCode As Long, _
         ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Private Declare Function TRANS2QUIK_SET_TRANSACTIONS_REPLY_CALLBACK Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_SET_TRANSACTIONS_REPLY_CALLBACK@16" _
        (ByVal pfTransactionReplyCallback As Long, ByRef pnExtendedErrorCode As Long, _
         ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Private Declare Function TRANS2QUIK_IS_QUIK_CONNECTED Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_IS_QUIK_CONNECTED@12" _
        (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Private Declare Function TRANS2QUIK_IS_DLL_CONNECTED Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_IS_DLL_CONNECTED@12" _
        (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

    Private Declare Function lstrlen Lib "kernel32.dll" (ByVal lpString As Long) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
#End If
Теперь, достаточно заменить в коде Q:\ на путь к каталогу, куда положили trans2quik.dll и пример должен заработать в 64 разрядной версии Excel.
Положили 32-разрядную dll-ку и пример готов к работе в 32 разрядной версии Excel.
Trans2QuikAPI_1.3 - пример для Excel, Почему в новой версии Trans2QuikAPI нет примера для Excel и где его взять?
 
Получилось так, что я работал в Excel VBA 2010, в коде функции из библиотеки были описаны как Private, но использовались они в другом модуле - и успешно. А вот Excel VBA 2024 посчитал, что это нехорошо.
Trans2QuikAPI_1.3 - пример для Excel, Почему в новой версии Trans2QuikAPI нет примера для Excel и где его взять?
 
Запустилось, после того, как поменял в описании Private на Public ...

Поделюсь описаниями с теми, кто так и не одолел запуск 64-разрядной версии trans2quik.dll
Нужно просто вставить в код VBA вместо текущего описания функций из библиотеки следующие строки (здесь описаны функции, что я использую):

' Для 64-битной версии Excel (VBA)
#If VBA7 Then
   ' Используется в Excel 2010 и новее
   #If Win64 Then
       ' 64-битная версия
dwErrorMessageSize As LongPtr) As Long
       Public Declare PtrSafe Function TRANS2QUIK_DISCONNECT Lib "Q:\trans2quik.dll" _
           (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
       
       Public Declare PtrSafe Function TRANS2QUIK_CONNECT Lib "Q:\trans2quik.dll" _
           (ByVal lpstConnectionParamsString As String, ByRef pnExtendedErrorCode As Long, _
            ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Public Declare PtrSafe Function TRANS2QUIK_SEND_SYNC_TRANSACTION Lib "Q:\trans2quik.dll" _
           (ByVal lpstTransactionString As String, ByRef pnReplyCode As Long, ByRef pdwTransId As Long, ByRef pdOrderNum As Double, _
            ByVal lpstrResultMessage As String, ByVal dwResultMessageSize As Long, _
            ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Public Declare PtrSafe Function TRANS2QUIK_SEND_ASYNC_TRANSACTION Lib "Q:\trans2quik.dll" _
           (ByVal lpstTransactionString As String, ByRef pnExtendedErrorCode As Long, _
            ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long


       Public Declare PtrSafe Function TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK Lib "Q:\trans2quik.dll" _
           (ByVal pfConnectionStatusCallback As LongPtr, ByRef pnExtendedErrorCode As Long, _
            ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Public Declare PtrSafe Function TRANS2QUIK_SET_TRANSACTIONS_REPLY_CALLBACK Lib "Q:\trans2quik.dll" _
           (ByVal pfTransactionReplyCallback As LongPtr, ByRef pnExtendedErrorCode As Long, _
            ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Public Declare PtrSafe Function TRANS2QUIK_IS_QUIK_CONNECTED Lib "Q:\trans2quik.dll" _
           (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Public Declare PtrSafe Function TRANS2QUIK_IS_DLL_CONNECTED Lib "Q:\trans2quik.dll" _
           (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Public Declare PtrSafe Function lstrlen Lib "kernel32.dll" (ByVal lpString As LongPtr) As Long

       Public Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As LongPtr)

   #Else
       ' 32-битная версия (остаётся как была)
       Private Declare Function TRANS2QUIK_SEND_SYNC_TRANSACTION Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_SEND_SYNC_TRANSACTION@36" _
           (ByVal lpstTransactionString As String, ByRef pnReplyCode As Long, ByRef pdwTransId As Long, ByRef pdOrderNum As Double, _
            ByVal lpstrResultMessage As String, ByVal dwResultMessageSize As Long, _
            ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Private Declare Function TRANS2QUIK_SEND_ASYNC_TRANSACTION Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_SEND_ASYNC_TRANSACTION@16" _
           (ByVal lpstTransactionString As String, ByRef pnExtendedErrorCode As Long, _
            ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Private Declare Function TRANS2QUIK_CONNECT Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_CONNECT@16" _
           (ByVal lpstConnectionParamsString As String, ByRef pnExtendedErrorCode As Long, _
            ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Private Declare Function TRANS2QUIK_DISCONNECT Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_DISCONNECT@12" _
           (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Private Declare Function TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK@16" _
           (ByVal pfConnectionStatusCallback As Long, ByRef pnExtendedErrorCode As Long, _
            ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Private Declare Function TRANS2QUIK_SET_TRANSACTIONS_REPLY_CALLBACK Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_SET_TRANSACTIONS_REPLY_CALLBACK@16" _
           (ByVal pfTransactionReplyCallback As Long, ByRef pnExtendedErrorCode As Long, _
            ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Private Declare Function TRANS2QUIK_IS_QUIK_CONNECTED Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_IS_QUIK_CONNECTED@12" _
           (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Private Declare Function TRANS2QUIK_IS_DLL_CONNECTED Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_IS_DLL_CONNECTED@12" _
           (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

       Private Declare Function lstrlen Lib "kernel32.dll" (ByVal lpString As Long) As Long

       Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

   #End If
#Else
   ' Для старых версий VBA (до Excel 2007), но сейчас почти не используется
   Private Declare Function TRANS2QUIK_SEND_SYNC_TRANSACTION Lib "Q:\trans2quik.dll" Alias "_TRANS2QUIK_SEND_SYNC_TRANSACTION@36" _
       (ByVal lpstTransactionString As String, ByRef pnReplyCode As Long, ByRef pdwTransId As Long, ByRef pdOrderNum As Double, _
        ByVal lpstrResultMessage As String, ByVal dwResultMessageSize As Long, _
        ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long

   ' ... (остальные аналогично, но можно опустить, если не нужно поддерживать старые версии)
#End If
Trans2QuikAPI_1.3 - пример для Excel, Почему в новой версии Trans2QuikAPI нет примера для Excel и где его взять?
 
Дорогие друзья (по несчастью) и разработчики QUIK, приветствую и снова обращаюсь к этому, забытому ARQA Technologies, вопросу.
Может быть баре всё же обратят внимание на нас своих простых смертных пользователей?

Ох уж эта злополучная 64-разрядная trans2quik.dll и Excel!
Ну поясните же нам, как её использовать!
Посмотрел с помощью dumpbin.exe список функций в trans2quik.dll v.1.3
   ordinal hint RVA      name

         1    0 00005EF0 TRANS2QUIK_CONNECT
         2    1 00004F80 TRANS2QUIK_DISCONNECT
         3    2 00005290 TRANS2QUIK_IS_DLL_CONNECTED
...
а было в версии от 03.04.2013
   ordinal hint RVA      name

         1    0 00003F50 _TRANS2QUIK_CONNECT@16
         2    1 00004290 _TRANS2QUIK_DISCONNECT@12
         3    2 00004560 _TRANS2QUIK_IS_DLL_CONNECTED@12


Понятно, что вы поменяли имена функций ddl-ке с, для примера:
_TRANS2QUIK_DISCONNECT@12"  -> TRANS2QUIK_DISCONNECT

Переделал описания для 64 разрядов (VBA Excel 2024), пробовал 2 варианта:
       Private Declare PtrSafe Function TRANS2QUIK_DISCONNECT Lib "Q:\trans2quik.dll" _
           (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
и
       Private Declare PtrSafe Function TRANS2QUIK_DISCONNECT Lib "Q:\trans2quik.dll" _
           (ByRef pnExtendedErrorCode As LongPtr, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As LongPtr) As Long

Ну не находит Excel VBA эту функцию, останавливается при исполнении кода с ошибкой:
Compile error: Sub or Function not defined!
на строке
lRes = TRANS2QUIK_DISCONNECT(pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize)
то же самое происходит и с другими, необходимыми для работы, функциями :(
Очень похоже, что эта dll-ка как-то не подсоединяется, может заголовок её не так сформирован, или что другое?

Уважаемые разработчики, подскажите, что исправлять/делать?
Окажите уважение к пользователям, которые вот уже более 20 лет пользуются вашей программой.
Приспуститесь с Олимпа!
keybd_event перестала передавать нажатия клавиш в QUIK, При переходе с версии 10.2.3.7 к версии 11.0.1.3 QUIK от брокера Открытия к ВТБ keybd_event перестала передавать нажатия клавиш в QUIK
 
Не знаю, что это было, но сегодня утром встал, включил комп и keybd_even вдруг заработал! Потратил весь вчерашний день на поиски решения, а нужно было просто перезагрузить windows.
Мораль сей басни такова: Необходимо помнить, что Windows существо загадочное и ветренное. Зашли в тупик, попробуйте снова после перезагрузки, иногда помогает.
Даже не знаю, какой смайлик здесь уместен...
keybd_event перестала передавать нажатия клавиш в QUIK, При переходе с версии 10.2.3.7 к версии 11.0.1.3 QUIK от брокера Открытия к ВТБ keybd_event перестала передавать нажатия клавиш в QUIK
 
При переходе с версии 10.2.3.7 к версии 11.0.1.3 QUIK от брокера Открытия к ВТБ keybd_event перестала передавать нажатия клавиш в QUIK
Эмулирую Ctrl+Shift+L и Ctrl+Shift+S для активации/деактивации экспорта данных из таблиц QUIK в Excel.
У брокера Открытие (версия QUIK 10.2.3.7) всё прекрасно работает, тот же скрипт в QUIK от ВТБ (версия QUIK 11.0.1.3) - эмуляция нажатий не проходит.
Установил QUIK 10.2.3.7 (от Открытия) под VTB - keybd_event тоже не работает. Если ручками нажимать в QUIK - в обеих версиях активация идёт.
Может быть дело в каких-то неведомых мне настройках info.ini?
Код для активации экспорта в Excel VBA:
   Call keybd_event(VK_CONTROL, 0, 0, 0)
   Call keybd_event(VK_SHIFT, 0, 0, 0)
   Call keybd_event(VK_L, 0, 0, 0)
   Call keybd_event(VK_L, 0, KEYEVENTF_KEYUP, 0)
   Call keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0)
   Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)
Константы, естественно, заранее прописаны.
Просьба помочь.
Система Win10, Excel 2010 32бит.
Нулевые ср.взв. цены в таблице купить/продать, Проблема с отображением средневзвешенных цен по коротким и длинным позициям в таблице купить/продать
 
Добрый день!
После первого участия в вечерней сессии на MICEX перестали отображаться Срвзв. цена длинных и коротких позиций в таблице купить/продать, они стали равными нулю.
При этом, на другом счёте у того же брокера (Открытие) -  Срвзв. цены отображаются корректно.
Задал вопрос брокеру - он как воды в рот набрал :(
Может быть вы поможете.
Работал в версии QUIK 7.21, обновился до 8.6.0.97 - проблема осталась.
Спасибо!
В таблице купить/продать не обновляются данные
 
Андрей, большое спасибо!
Проблема решена!
Не пойму только, как это могло само по себе произойти. Эти настройки я не менял.  
В таблице купить/продать не обновляются данные
 
В другом экземпляре квика, который подсоединён к другому аккаунту у того же брокера, эти таблицы обновляются автоматически.
В таблице купить/продать не обновляются данные
 
Перезагрузка квика и компа не помогают.
При нажатии на обновление в клиентском портфеле обновляются и данные в таблице купить/продать, автоматического обновления нет, увы.
Сегодня последний день торгов с расчётами в этом году, а я не могу толком торговать, поскольку все данные визуализируются в excel таблице, часть которой не обновляется :(
В таблице купить/продать не обновляются данные
 
В таблице купить/продать не обновляются данные, только по F5.
Произошло это сегодня без какой-либо причины.
Подскажите, как побороть.
И, вообще, где можно задать частоту обновления этой таблицы?
v.7.27.2.1

Как выяснилось, Клиентский портфель тоже не обновляется автоматически...
Стаканы, графики, таблица текущих торгов - обновляются нормально.
Trans2QuikAPI_1.3 - пример для Excel, Почему в новой версии Trans2QuikAPI нет примера для Excel и где его взять?
 
Добрый день!
Просьба прояснить судьбу данного запроса, сделанного полтора года назад.

1. Есть ли пример использования TRANS2QUIK.DLL в 64-х разрядном excel?
2. TRANS2QUIK.DLL вообще работает с excel x64/VBA, вы хоть раз проверяли?

Последний год у меня проблемы с обработкой в excel данных, поступающих из квик-а. Тормозит экспорт. Хочу попробовать решить эту проблему перейдя на новую x64 версию excel ( с MSOffice2010 ->). Есть надежда, что там используется распараллеливание вычислений и по памяти себя он так не ограничивает.

Пожалуйста ответьте также:
3. Сделали ли вы возможность экспорта по DDE времени сервера?

Я этот запрос делал лет 10 назад, потом видел аналогичный запрос на форуме года 4 назад...

Сегодня вот решил зайти и посмотреть как там с разработкой 64xAPI и обнаружил, что меня уже вообще нет в пользователях форума,
а ведь регистрировался я в начале 2006 года ... :(
Страницы: 1
Наверх