Отсутствует ID транзакции у части сделок, У заявки trans_id есть, у сделки по ней - нет
Пользователь
Сообщений: Регистрация: 09.12.2025
31.07.2026 13:24:23
Цитата
<< ..., мы рассмотрели ваше обращение № 260728-7000-438657 от 28.07.2026. В заявке параметр trans_id будет проставлен, в случае если порожденная заявкой сделка была совершена в результате чего в торговой системе сразу нашлась встречная заявка от другого инвестора, которая удовлетворяла условиям совершения сделки. В случае, если заявка была выставлена, но сделка была совершена спустя время, то есть изначальная заявка ожидала встречной заявки с подходящими условиями, то параметр trans_id на сделке указан не будет, при этом на изначальной заявке этот же параметр все еще будет отображаться. СберБанк
Цитата
>> По обращению 260728-7000-438657: описанное поведение неверно и противоречит скрину в теме (: - trans_id присваивается заявке внешним скриптом и не зависит от ее выполнения - при последующем совершении сделки по этой заявке (событие OnTrade) он приходит в структуре - а вот в списке он как-то потом пропал
Цитата
>> ..., мы рассмотрели Ваше обращение № 260728-7000-438657 от 28.07.2026. Ранее Вам был направлен ответ который нам предоставил разработчик торгового терминала QUIK - ArqaTechnologies. За более детальными подробностями Вы можете обратиться к разработчику по ранее созданной тематике на форуме QUIK. В рамках разбора данного вопроса мы передали разработчику необходимые данные для анализа данного вопроса. СберБанк
Добрый день! Есть ощущение, что вы со Сбером друг друга не поняли по моей проблеме. Сформулирую еще раз: - заявка пассивная выставляется с передачей trans_id "извне", скриптом - OnOrder приходит с переданным значением в trans_id, в таблице заявок я его вижу - спустя время приходит OnTrade - с тем же значением trans_id, и это хорошо - спустя еще какое-то время в таблице сделок у этой же записи оказывается пустое поле "Ид транзакции", а методы чтения возвращают пустой trans_id, и это подозрительно
То есть ответ Сбера(у) касался trans_id в заявке (с которым я проблем и так не наблюдаю), а не в в списке сделок.
Отсутствует ID транзакции у части сделок, У заявки trans_id есть, у сделки по ней - нет
Пользователь
Сообщений: Регистрация: 09.12.2025
28.07.2026 11:00:02
Добрый день! Зарегистрировал обращение 260728-7000-438657 - надеюсь, удастся разобрать ситуацию.
Автоматический старт QUIK - это просто
Пользователь
Сообщений: Регистрация: 09.12.2025
26.07.2026 11:58:28
Спасибо за идею скрипта, творчески развил и адаптировал для варианта без модема (AutoIt, Chrome, Android).
Нам потребуется телефон на Android с использованием в качестве приложения по умолчанию для работы с SMS. Замечание для владельцев Samsung Galaxy ниже S25 - в более новых версиях в качестве "умолчательного" , для версий ниже - надо установить и переназначить.
Идем на компе в Chrome на , настраиваем связь с телефоном как там описано (вход в аккаунт Google и все такое). Если все сделано правильно, то должны увидеть на странице список своих чатов.
Устанавливаем - достаточно .
Выше - это обязательный перечень, остальные моменты можно настраивать под собственное удобство. Все приведенные ниже файлы создаем в любом отдельном каталоге.
Код
_login.au3: основной AutoIt-скрипт запуска
Код
; автозапуск QUIK с проходом двухфакторной авторизации
; проверено на Сбер 12.8.4.9
; читаем пароль из _quik.pwd рядом с .au3
$sPathPWD = @ScriptDir & "\_quik.pwd"
Local $sPWD = FileReadLine($sPathPWD)
If @error Then
MsgBox(16, "Ошибка", "Не удалось прочитать файл пароля: " & $sPathPWD)
Exit
EndIf
; читаем путь до каталога QUIK из _quik.pth рядом с .au3
$sPathPth = @ScriptDir & "\_quik.pth"
; рабочая папка QUIK
Local $sPathQUIK_WD = FileReadLine($sPathPth)
If @error Then
MsgBox(16, "Ошибка", "Не удалось прочитать файл пути: " & $sPathPth)
Exit
EndIf
; путь до самого QUIK (info.exe)
$sPathQUIK = $sPathQUIK_WD & "\info.exe"
; запускаем QUIK с ключом -clear
; для простоты предполагаем рабочей папкой ту, где находится сам info.exe
Run('"' & $sPathQUIK & '" -clear', $sPathQUIK_WD)
If @error Then
MsgBox(16, "Ошибка", "Не удалось запустить QUIK по пути: " & $sPathQUIK)
Exit
EndIf
AutoItSetOption("SendKeyDelay", 100)
; бесконечный цикл, в котором мы проходим оба окна, как только они появляются
; защита от "разлогина" в ходе торговой сессии - по умолчанию выключена
;While True
; просто ждем 30 сек
Sleep(30000)
; до 30 сек ждем диалог авторизации с логин-паролем
Local $hWndPWD = WinWait("[CLASS:#32770; TITLE:Вход в систему]", "", 30)
If $hWndPWD Then
; ставим фокус на диалог
WinActivate($hWndPWD)
Sleep(500)
; отправляем пароль во 2-й EditBox (1-й - логин уже сохранен по умолчанию)
ControlSend($hWndPWD, "", "[CLASS:Edit; INSTANCE:2]", $sPWD)
Sleep(300)
ControlSend($hWndPWD, "", "", "{ENTER}")
EndIf
; до 30 сек ждем диалог ввода PIN
; если так и не появился, то двухфакторка уже принята "с прошлого раза"
Local $hWndPIN = WinWait("[CLASS:#32770; TITLE:Двухфакторная аутентификация]", "", 30)
If $hWndPIN Then
; запускаем страницу Google SMS в новом окне Chrome
Run(@ComSpec & " /c start chrome --new-window https://messages.google.com/web/conversations")
; ждем появления окна с нужной вкладкой
Local $hWndChrome = WinWaitActive("[REGEXPCLASS:Chrome;TITLE:Веб-версия Google Сообщений]")
SendKeepActive($hWndChrome)
; вызываем консоль (DevTools)
Send("{F12}")
; ждем 10c, пока прогрузится список чатов
Sleep(10000)
; через консоль активируем первый чат (с большой вероятностью это нужный нам 900)
;;Send("$('NAV.conversation-list A').click(){ENTER}")
Send("$$('NAV.conversation-list A.list-item SPAN').find(span => span.innerText == '900').click(){ENTER}")
; ждем 10c, пока прогрузится список сообщений
Sleep(10000)
; берем текст последнего сообщения, вырезаем из него регуляркой PIN (5 цифр подряд) и копируем в буфер обмена
Send("copy($('DIV.content mws-message-wrapper[is-last=""true""]').innerText.match(/\d{{}5{}}/)[0]){ENTER}")
Sleep(1000)
WinClose($hWndChrome)
WinWaitClose($hWndChrome)
; получаем PIN из буфера обмена
$sPIN = ClipGet()
WinActivate($hWndPIN)
Sleep(500)
; отправляем PIN в первое поле ввода
ControlSend($hWndPIN, "", "[CLASS:Edit; INSTANCE:1]", $sPIN)
Sleep(300)
ControlSend($hWndPIN, "", "", "{ENTER}")
EndIf
;Wend
Exit
Код
_quik.pth: файл с путем до папки QUIK
Код
C:\QUIK_SBER
Код
_quik.pwd: файл с паролем
Код
12345678
Код
ai-login.bat: файл для запуска в планировщике задач
Код
cd /d "%~dp0"
C:\#AUTOIT\AutoIt3.exe _login.au3
Находим через "Пуск" "Планировщик задач", в нем "Создать простую задачу" - и назначаем ai-login.bat на запуск каждый день в 6:45 - перед аукционом открытия.
Код
_logout.au3: AutoIt-скрипт завершения торговой сессии
Код
; закрываем окно QUIK, если оно существовало
WinClose("[CLASS:InfoClass; REGEXPTITLE:QUIK]")
Exit
Код
ai-logout.bat: файл для запуска в планировщике задач
Код
cd /d "%~dp0"
C:\#AUTOIT\AutoIt3.exe _logout.au3
Аналогично назначаем ai-logout.bat на запуск каждый день в 23:55.
Собственно, все!
Периодические паузы в получении данных
Пользователь
Сообщений: Регистрация: 09.12.2025
24.07.2026 12:33:34
Иногда терминал перестает получать данные - то есть "паровозик ездит", серверное время меняется, соединение "установлено", но значения времени/номера последней полученной записи остаются прежними - соответственно, в интерфейсе никакие изменения не отражаются. Как-то это можно полечить?
Брокерская комиссия в OnTrade по "бескомиссионным" фондам
Пользователь
Сообщений: Регистрация: 09.12.2025
23.07.2026 10:28:26
У многих брокеров есть фонды "своей" УК, которые торгуются без брокерской комиссии, но в OnTrade почему-то она все равно приходит.
Пример на Сбере, тейкер-сделка по "бескомиссионному" для него фонду SBMX - комиссия биржи 0.09 + комиссия клиринга 0.16 + комиссия брокера (!) 0.25. Судя по цифрам, брокерская комиссия тут вычислена как 0.02% от суммы сделки, хотя таких значений нет ни в одном тарифном плане. Но в отчете за день брокерская комиссия по этой сделке выводится нулевая.
Проблема на стороне движка QUIK или каких-то настроек на стороне брокера?
То есть идентификатор пришел, но порушился или сразу при вставке в хранилище, или после перезаказа данных сессии.
Отсутствует ID транзакции у части сделок, У заявки trans_id есть, у сделки по ней - нет
Пользователь
Сообщений: Регистрация: 09.12.2025
22.07.2026 13:53:43
Добрый день! Все заявки выставляются скриптом с присвоением trans_id, но у части сделок по ним почему-то он потом пропадает (подчеркнуты на приложенном скрине). Если вдруг поможет, лог с таймингами событий по этой заявке:
То есть в момент совершения сделки (17219089464) trans_id (125418894) пришел в OnTrade, но после вызова перезапроса данных (?) где-то пропал, и больше не виден в интерфейсе и не возвращается в данных.
Нашел только старую тему с такой же проблемой: Брокер - Сбер, версия 12.8.4.9.
свободные средства для срочного рынка на едином счете
Пользователь
Сообщений: Регистрация: 09.12.2025
25.02.2026 15:12:31
Цитата
nikolz написал: Все теперь в клиентском портфеле. Все смешалось - кони,люди
Но в окне запись же по-прежнему есть - неужели ее невозможно достать? И как-то странно, что функция не может ее вернуть. Ну и если "в портфеле", то это getPortfolioInfoEx? Что в ней смотреть, и какое по смыслу событие аналогично OnFuturesLimitChange?
свободные средства для срочного рынка на едином счете
Пользователь
Сообщений: Регистрация: 09.12.2025
25.02.2026 14:54:42
Добрый день! После объединения счетов фондового/срочного рынков в Сбере перестала работать функция получения лимитов по срочному счету. Работало так:
Код
getFuturesLimit('SPBFUT01', 'A70gefr', 0, 'SUR')
Теперь в окне "Ограничения по клиентским счетам" видно, что "фирма" теперь сменилась на MC0002500000, как для счетов фондового рынка. Но тот же вызов что с прежним значением, что с замененным аргументом теперь возвращает nil. Подскажите, как можно теперь вытащить информацию о "занятых" средствах и актуальной суммарной вармарже?
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 09.12.2025
15.01.2026 14:42:17
Цитата
nikolz написал: T+ - это режим когда деньги сейчас, а стулья либо чере 1 либо через 2 дня
Я бы сформулировал как "деньги заплати сейчас, а если вывести - то только через 1/2 дня". Но это же не имеет отношения к цене приобретения, которая уже заведомо свершилась в прошлом. Сейчас выглядит так, что в полночь цена приобретения тех самых 100 лотов "превращается в тыкву" - лоты из T1 во "наутренние" T0 благополучно переходят, а цена приобретения - обнуляется.
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 09.12.2025
15.01.2026 13:24:23
Цитата
nikolz написал: SBMM торгуется в режиме T+. Почему у SBMM появится цена T0?
Я купил эту позицию вчера в количестве 100 лотов по цене X и сегодня докупил 200 лотов по цене Y. В T1, понятно, я вижу, что у меня "сейчас" 300 лотов общей себестоимостью 100X+200Y. В T0 вижу, что на начало сессии имелось 100 лотов общей себестоимостью... 0! Выглядит странно, как минимум.
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 09.12.2025
15.01.2026 12:37:39
Цитата
То есть понятно, что можно взять T1, просчитать все сделки за сегодня в обратную сторону и получить исходник - но как-то это не выглядит же правильным?
Меня-то интересует стоимость на начало дня - по аналогии с денежными позициями.
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 09.12.2025
14.01.2026 13:39:25
Брокер (Сбер) ответил классически для саппорта: "Почему считаете, что это ошибка? Цены приобретения отражены в режиме T1". Какие ключевые слова надо им передать, чтобы они поняли, что трансляцию параметра надо включить на их стороне?
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 09.12.2025
29.12.2025 07:37:33
Вот примерно так - по всем счетам и позициям одинаковая картина.
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 09.12.2025
27.12.2025 08:13:39
Нет, только облигации и ETF типа SBMM на балансе.
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 09.12.2025
26.12.2025 19:45:38
Да, там на скрине как раз и был пример отображения (как-то криво вставился по Ctrl+V) - все позиции имеют равные значения в T1/Tx и нулевые - в T0 в окне позиций по инструментам.
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 09.12.2025
25.12.2025 16:40:00
Пытаюсь получить стоимость приобретения позиции на начало текущего торгового дня. В T1 я ее отлично вижу и в окне "Позиции по инструментам", и функцией getDepoEx она вполне себе возвращается, а вот в T0 - везде нули. Можно ли ее как-то вытащить? То есть понятно, что можно взять T1, просчитать все сделки за сегодня в обратную сторону и получить исходник - но как-то это не выглядит же правильным?
Увы, в OnTransReply приходит result_msg 'Вам запрещена работа по данному инструменту'.
При этом поручения через интерфейс QUIK нормально проходят и выполняются. Команды на обычные заявки на работу с ордерами (NEW_ORDER / KILL_ORDER) через sendTransaction - тоже. Саппорт Сбера утверждает, что правильный код валюты для команды именно SUR, но в интерфейсе поручение заполняется вот так:
Нет ли у кого под рукой актуального рабочего варианта?