Возможно кто-то сталкивался или возникнут соображения, что еще можно предпринять. Суть такая:
- windows 10 x64
- quik 11.4.0.54, установленный в каталог C:\QUIKJunior\.
- В этом же каталоге лежат файлы TRANS2QUIK.DLL, TRANS2QUIK.LIB.из архива Trans2QuikAPI_1.5_x64.zip
Соединиться с quik через PyQUIK-1.0 не удается абсолютно. Решил посмотреть, какую ошибку возвращает dll. Написал следующий код:
Результат:
Ладно. Может какая несовместимость с питоном. Их архива Trans2QuikAPI_1.5_x64.zip достаю test3. Оно же родное, от разработчиков.
Что имею в результате:
Может быть у кого-то есть мысли, чего ему не хватает?
- windows 10 x64
- quik 11.4.0.54, установленный в каталог C:\QUIKJunior\.
- В этом же каталоге лежат файлы TRANS2QUIK.DLL, TRANS2QUIK.LIB.из архива Trans2QuikAPI_1.5_x64.zip
Соединиться с quik через PyQUIK-1.0 не удается абсолютно. Решил посмотреть, какую ошибку возвращает dll. Написал следующий код:
| Код |
|---|
import ctypes
from ctypes import c_long, c_char_p, c_double, POINTER, create_string_buffer
# Загрузка DLL
trans2quik = ctypes.WinDLL(r"C:\QUIKJunior\TRANS2QUIK.DLL")
# Определение функции SEND_SYNC_TRANSACTION
send_sync_transaction = trans2quik.TRANS2QUIK_SEND_SYNC_TRANSACTION
send_sync_transaction.argtypes = [
c_char_p, # lpstTransactionString
POINTER(c_long), # pnReplyCode
POINTER(c_long), # pdwTransId
POINTER(c_double), # pdOrderNum
c_char_p, # lpstrResultMessage
ctypes.c_ulong, # dwResultMessageSize
POINTER(c_long), # nTransactionExtendedErrorCode
c_char_p, # lpstErrorMessage
ctypes.c_ulong # dwErrorMessageSize
]
send_sync_transaction.restype = c_long
# Пример строки транзакции
transaction = "TRANS_ID=1;ACCOUNT=59257;CLASSCODE=TQBR;SECCODE=SBER;ACTION=NEW_ORDER;TYPE=L;OPERATION=B;PRICE=100.50;QUANTITY=10"
transaction_str = transaction.encode("windows-1251")
# Буферы для сообщений
result_msg = create_string_buffer(256)
error_msg = create_string_buffer(256)
# Параметры для возвращаемых значений
reply_code = c_long()
trans_id = c_long()
order_num = c_double()
extended_error_code = c_long()
# Вызов функции
result = send_sync_transaction(
transaction_str,
ctypes.byref(reply_code),
ctypes.byref(trans_id),
ctypes.byref(order_num),
result_msg,
ctypes.sizeof(result_msg),
ctypes.byref(extended_error_code),
error_msg,
ctypes.sizeof(error_msg)
)
# Вывод результатов
print("Результат:", result)
print("Код ответа:", reply_code.value)
print("ID транзакции:", trans_id.value)
print("Номер заявки:", order_num.value)
print("Сообщение о результате:", result_msg.value.decode("windows-1251"))
print("Сообщение об ошибке:", error_msg.value.decode("windows-1251"))
print("Код расширенной ошибки:", extended_error_code.value)
|
Результат:
| Код |
|---|
C:\Trading\tests>python test_dll_ctypes_2.py Результат: 7 Код ответа: 0 ID транзакции: 0 Номер заявки: 0.0 Сообщение о результате: Сообщение об ошибке: Код расширенной ошибки: 0 |
Ладно. Может какая несовместимость с питоном. Их архива Trans2QuikAPI_1.5_x64.zip достаю test3. Оно же родное, от разработчиков.
Что имею в результате:
| Код |
|---|
C:\Trading\tests\test_trans2quik>dir /b settings.txt start.bat test_x64.exe C:\Trading\tests\test_trans2quik>type settings.txt C:\QUIKJunior C:\Trading\tests\test_trans2quik>dir /b C:\QUIKJunior\trans2quik.* TRANS2QUIK.DLL TRANS2QUIK.LIB C:\Trading\tests\test_trans2quik>start.bat C:\Trading\tests\test_trans2quik>del *.log Не удается найти C:\Trading\tests\test_trans2quik\*.log C:\Trading\tests\test_trans2quik>test_x64.exe S trr.in 1000 Необработанное исключение: System.DllNotFoundException: Не удается загрузить DLL "TRANS2QUIK.DLL": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E) в test3.test_q.connect(String lpcstrConnectionParamsString, Int32& pnExtendedErrorCode, Byte[] lpstrErrorMessage, UInt32 dwErrorMessageSize) в test3.test_q.connect_test(Boolean FinalPause) в test3.Program.Main(String[] args) |