<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: trans2quik не передает информацию о сделках]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме trans2quik не передает информацию о сделках форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 21 Apr 2026 04:16:34 +0300</pubDate>
		<item>
			<title>trans2quik не передает информацию о сделках</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message77799/topic8944/">trans2quik не передает информацию о сделках</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<a class="blog-p-user-name" id="bp_Xn1IiJTl" href="/user/16742/" bx-tooltip-user-id="16742">Sergey_quik</a>, добрый день.<br /><br />Сохраняется ли проблема?<br /><br />Если да, видите ли при этом сделки по указанным классу и инструменту в &quot;Таблице сделок&quot; в терминале?<br />Есть ли результат, если вызывать TRANS2QUIK_SUBSCRIBE_TRADES по всем доступным классам и инструментам?<br />Какая версия Trans2QUIK используется? <br />
			<i>19.02.2025 11:36:31, Anton Belonogov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message77799/topic8944/</link>
			<guid>http://forum.quik.ru/messages/forum1/message77799/topic8944/</guid>
			<pubDate>Wed, 19 Feb 2025 11:36:31 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>trans2quik не передает информацию о сделках</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message77642/topic8944/">trans2quik не передает информацию о сделках</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			====code====
<pre># ================== 1.Параметры ==================
CLASS_CODE = "SPBFUT" # Код класса
SEC_CODE = "RIH5" # Код инструмента 


# ================== 6. Определение типа коллбэка ==================

TRANS2QUIK_TRADE_STATUS_CALLBACK_TYPE = ctypes.WINFUNCTYPE(
&nbsp;&nbsp;&nbsp;&nbsp;None,&nbsp;&nbsp;# void
&nbsp;&nbsp;&nbsp;&nbsp;ctypes.c_long,&nbsp;&nbsp;# int nMode
&nbsp;&nbsp;&nbsp;&nbsp;ctypes.c_double,&nbsp;&nbsp;# double dNumber
&nbsp;&nbsp;&nbsp;&nbsp;ctypes.c_double,&nbsp;&nbsp;# double dOrderNumber
&nbsp;&nbsp;&nbsp;&nbsp;ctypes.c_char_p,&nbsp;&nbsp;# char* ClassCode
&nbsp;&nbsp;&nbsp;&nbsp;ctypes.c_char_p,&nbsp;&nbsp;# char* SecCode
&nbsp;&nbsp;&nbsp;&nbsp;ctypes.c_double,&nbsp;&nbsp;# double dPrice
&nbsp;&nbsp;&nbsp;&nbsp;ctypes.c_long,&nbsp;&nbsp;# int nQty
&nbsp;&nbsp;&nbsp;&nbsp;ctypes.c_double,&nbsp;&nbsp;# double dValue
&nbsp;&nbsp;&nbsp;&nbsp;ctypes.c_int,&nbsp;&nbsp;# int nIsSell
&nbsp;&nbsp;&nbsp;&nbsp;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):
&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;print("Получена сделка:")
&nbsp;&nbsp;&nbsp;&nbsp;print(f"&nbsp;&nbsp;Mode: {n_mode}")
&nbsp;&nbsp;&nbsp;&nbsp;print(f"&nbsp;&nbsp;Number: {d_number}")
&nbsp;&nbsp;&nbsp;&nbsp;print(f"&nbsp;&nbsp;Order Number: {d_order_num}")
&nbsp;&nbsp;&nbsp;&nbsp;print(f"&nbsp;&nbsp;Class Code: {class_code.decode('cp1251') if class_code else ''}")&nbsp;&nbsp;# Декодируем class_code, если он есть
&nbsp;&nbsp;&nbsp;&nbsp;print(f"&nbsp;&nbsp;Security Code: {sec_code.decode('cp1251') if sec_code else ''}")&nbsp;&nbsp;# Декодируем sec_code, если он есть
&nbsp;&nbsp;&nbsp;&nbsp;print(f"&nbsp;&nbsp;Price: {d_price}")
&nbsp;&nbsp;&nbsp;&nbsp;print(f"&nbsp;&nbsp;Quantity: {n_qty}")
&nbsp;&nbsp;&nbsp;&nbsp;print(f"&nbsp;&nbsp;Value: {d_value}")
&nbsp;&nbsp;&nbsp;&nbsp;print(f"&nbsp;&nbsp;Is Sell: {n_is_sell}")
&nbsp;&nbsp;&nbsp;&nbsp;print(f"&nbsp;&nbsp;Trade Descriptor: {p_trade_descr}")
&nbsp;&nbsp;&nbsp;&nbsp;return

# ================== 7. Функция для преобразования указателя в строку ==================
def get_string(p):
&nbsp;&nbsp;&nbsp;&nbsp;if p:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ctypes.string_at(p).decode('cp1251')
&nbsp;&nbsp;&nbsp;&nbsp;else:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ''


# ================== 8. Подписка на сделки ==================

def subscribe_trades(dll, functions, class_code, sec_code):
&nbsp;&nbsp;&nbsp;&nbsp;"""
&nbsp;&nbsp;&nbsp;&nbsp;Подписывается на получение данных о сделках для указанных class_code и sec_code.
&nbsp;&nbsp;&nbsp;&nbsp;"""
&nbsp;&nbsp;&nbsp;&nbsp;try:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subscribe_trades_func = functions&#91;"TRANS2QUIK_SUBSCRIBE_TRADES"&#93;&nbsp;&nbsp;# Получаем функцию из словаря
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# кодируем class_code и sec_code, используя кодировку cp1251, как требует QUIK
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class_code_encoded = class_code.encode('cp1251')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sec_code_encoded = sec_code.encode('cp1251')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result = subscribe_trades_func(class_code_encoded, sec_code_encoded)&nbsp;&nbsp;# Вызываем функцию скодированными параметрами
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if result == 0:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Успешно подписались на сделки")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return True
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f"Не удалось подписаться на сделки. Код ошибки: {result}")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return False
&nbsp;&nbsp;&nbsp;&nbsp;except KeyError as e:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f"Функция не найдена: {e}")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return False


# ================== 3.2. Запуск получения данных о сделках ==================

def start_get_trades(dll, functions, trade_status_callback,TRANS2QUIK_TRADE_STATUS_CALLBACK_TYPE):
&nbsp;&nbsp;&nbsp;&nbsp;"""
&nbsp;&nbsp;&nbsp;&nbsp;Запускает процесс получения данных о сделках, используя функцию обратного вызова.
&nbsp;&nbsp;&nbsp;&nbsp;"""
&nbsp;&nbsp;&nbsp;&nbsp;try:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_trades_func = functions&#91;"TRANS2QUIK_START_TRADES"&#93;&nbsp;&nbsp;# Получаем функцию запуска обработки сделок

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Преобразуем Python-функцию обратного вызова в C-совместимый указатель
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c_trade_callback = TRANS2QUIK_TRADE_STATUS_CALLBACK_TYPE(trade_status_callback)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Вызываем функцию, передавая ей указатель на функцию обратного вызова
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_trades_func(c_trade_callback)
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Процесс получения сделок запущен")&nbsp;&nbsp;# Выводим сообщение об успешном запуске
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return True
&nbsp;&nbsp;&nbsp;&nbsp;except KeyError as e:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f"start_get_trades: Функция не найдена: {e}")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return False
&nbsp;&nbsp;&nbsp;&nbsp;except Exception as e:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f"start_get_trades: Общая ошибка: {e}")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return False

</pre>
=============
Испробовал все варианты. Подписка проходит успешно. Процесс получения сделок запущен, но данные по инструменту не приходят. Что забыл учесть? <br />
			<i>11.02.2025 23:16:10, Sergey_quik.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message77642/topic8944/</link>
			<guid>http://forum.quik.ru/messages/forum1/message77642/topic8944/</guid>
			<pubDate>Tue, 11 Feb 2025 23:16:10 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
	</channel>
</rss>
