trans2quik не передает информацию о сделках

Страницы: 1
RSS
trans2quik не передает информацию о сделках
 
Код
# ================== 1.Параметры ==================
CLASS_CODE = "SPBFUT" # Код класса
SEC_CODE = "RIH5" # Код инструмента 


# ================== 6. Определение типа коллбэка ==================

TRANS2QUIK_TRADE_STATUS_CALLBACK_TYPE = ctypes.WINFUNCTYPE(
    None,  # void
    ctypes.c_long,  # int nMode
    ctypes.c_double,  # double dNumber
    ctypes.c_double,  # double dOrderNumber
    ctypes.c_char_p,  # char* ClassCode
    ctypes.c_char_p,  # char* SecCode
    ctypes.c_double,  # double dPrice
    ctypes.c_long,  # int nQty
    ctypes.c_double,  # double dValue
    ctypes.c_int,  # int nIsSell
    ctypes.c_long # void* pTradeDescriptor
)

# ================== 7. Функция обратного вызова для получения сделок ==================

def trade_status_callback(n_mode, d_number, d_order_num, class_code, sec_code, d_price, n_qty, d_value, n_is_sell, p_trade_descr):
   
    print("Получена сделка:")
    print(f"  Mode: {n_mode}")
    print(f"  Number: {d_number}")
    print(f"  Order Number: {d_order_num}")
    print(f"  Class Code: {class_code.decode('cp1251') if class_code else ''}")  # Декодируем class_code, если он есть
    print(f"  Security Code: {sec_code.decode('cp1251') if sec_code else ''}")  # Декодируем sec_code, если он есть
    print(f"  Price: {d_price}")
    print(f"  Quantity: {n_qty}")
    print(f"  Value: {d_value}")
    print(f"  Is Sell: {n_is_sell}")
    print(f"  Trade Descriptor: {p_trade_descr}")
    return

# ================== 7. Функция для преобразования указателя в строку ==================
def get_string(p):
    if p:
        return ctypes.string_at(p).decode('cp1251')
    else:
        return ''


# ================== 8. Подписка на сделки ==================

def subscribe_trades(dll, functions, class_code, sec_code):
    """
    Подписывается на получение данных о сделках для указанных class_code и sec_code.
    """
    try:
        subscribe_trades_func = functions["TRANS2QUIK_SUBSCRIBE_TRADES"]  # Получаем функцию из словаря
        # кодируем class_code и sec_code, используя кодировку cp1251, как требует QUIK
        class_code_encoded = class_code.encode('cp1251')
        sec_code_encoded = sec_code.encode('cp1251')
        result = subscribe_trades_func(class_code_encoded, sec_code_encoded)  # Вызываем функцию скодированными параметрами
        if result == 0:
            print("Успешно подписались на сделки")
            return True
        else:
            print(f"Не удалось подписаться на сделки. Код ошибки: {result}")
            return False
    except KeyError as e:
        print(f"Функция не найдена: {e}")
        return False


# ================== 3.2. Запуск получения данных о сделках ==================

def start_get_trades(dll, functions, trade_status_callback,TRANS2QUIK_TRADE_STATUS_CALLBACK_TYPE):
    """
    Запускает процесс получения данных о сделках, используя функцию обратного вызова.
    """
    try:
        start_trades_func = functions["TRANS2QUIK_START_TRADES"]  # Получаем функцию запуска обработки сделок

        # Преобразуем Python-функцию обратного вызова в C-совместимый указатель
        c_trade_callback = TRANS2QUIK_TRADE_STATUS_CALLBACK_TYPE(trade_status_callback)
        # Вызываем функцию, передавая ей указатель на функцию обратного вызова
        start_trades_func(c_trade_callback)
    
        print("Процесс получения сделок запущен")  # Выводим сообщение об успешном запуске
        return True
    except KeyError as e:
        print(f"start_get_trades: Функция не найдена: {e}")
        return False
    except Exception as e:
        print(f"start_get_trades: Общая ошибка: {e}")
        return False

Испробовал все варианты. Подписка проходит успешно. Процесс получения сделок запущен, но данные по инструменту не приходят. Что забыл учесть?
 
Sergey_quik, добрый день.

Сохраняется ли проблема?

Если да, видите ли при этом сделки по указанным классу и инструменту в "Таблице сделок" в терминале?
Есть ли результат, если вызывать TRANS2QUIK_SUBSCRIBE_TRADES по всем доступным классам и инструментам?
Какая версия Trans2QUIK используется?
Страницы: 1
Читают тему
Наверх