написал: Зачем на индикаторах день или час интервалы в секунды? Какой в этом смысл?
Стратегия на графике Дня, Часе/5мин, 2 окна. Нужно секундное обновление данных в привод, для расчетов и контроля ошибок. Но если от тиков обновление брать, то они не постоянны. А если полингом из скрипта, то там не работает getDataSourceInfo. Вот сижу думаю
можно поставить таймер. или использовать тики и высокоточный счетчик.
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 30.01.2015
14.12.2025 14:37:52
Если надо высокую скорость то это на скрипте не индикаторе. В таком варианте можно получить интервал в 0.001 сек.
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
написал: Чтобы индикатор лишнего не грузился обходите те функции внутри него, которые надо считать лишь на закрытых свечах.
А если таймфрейм свечи графика 60мин или дневной, как бы Вы реализовали опрос позиций и статус соединения Квика 1 раз в 2 сек внутри индикатора? Через разницу времени тиков?
Дневную свечу строю на интервалах меньшего тайма. ----------------------------- Зачем на индикаторах день или час интервалы в секунды? Какой в этом смысл?
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 30.01.2015
14.12.2025 12:49:27
Чтобы индикатор лишнего не грузился обходите те функции внутри него, которые надо считать лишь на закрытых свечах.
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
написал: Непонятно, что и куда передать. Напишите пример.
getDataSourceInfo() работает только в потоке индикатора, а его лучше не грузить т.к. перерисовывается на каждом тике. Поэтому у меня просто отдельный скрипт собирает каждые 0,2с : текущее время, статус терминала, позиции, цену, ATR, границы цен и т.д. и гонит их в файл. Вот задумался, а как сделать, чтоб поток этот был в зависимости от выделенного инструмента в ТТТ и заякоренного графика.
Все не так уж сумрачно вблизи. ---------------------------- Если происходит изменение инструмента на графике, то перестраиваются все индикаторы. Это означает, что индекс Calculate начинается с 1 . ставим условный оператор if indx==1 then ....getDataSourceInfo().... end В результате эта функция вызываемся всего один раз для нового инструмента или нового тайма.
Поле trans_id для закрытия заявки: в чём смысл?, Есть ли примеры, где оно может быть использовано?
Пользователь
Сообщений: Регистрация: 30.01.2015
14.12.2025 11:23:53
Цитата
User12501 написал: Предположим я создал заявку, присвоив ей trans_id=1. При создании срабатывает OnOrder(ord), где ord.trans_id=1, ord.order_num = номер новой заявки. Теперь я хочу отменить эту заявку. Для этого я создаю новую транзакцию, в которой пишу trans_id=2, action = kill_order. Но при срабатывании OnOrder(ord) я опять вижу, что ord.trans_id=1, ord.order_num = номер удаляемой заявки. Т.е. новая транзакция, у которой trans_id=2, не вернулась в OnOrder, и даже не отобразилась в общем списке заявок. Это в целом понятно и логично, но непонятно, для чего тогда указывать trans_id=2? Т.е. если я не заполню поле trans_id=2, будет ошибка, но по факту это значение 2 дальше нигде не будет использовано. Или есть какие-то случаи, когда оно может пригодиться?
Например, торгуем двумя инструментами, по первому послали выставить заявку и по второму послали выставить заявку. Но по второму транзакция не прошла . Для второй заявки сработает лишь OnTransReply. По id можно определить какая транзакция с ошибкой.
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
написал: функция getDataSourceInfo() работает как и говорилось.
Про источник я понял, я в контексте, как передать информацию в обычный скрипт с минимальными издержками. Пока варианты это метка, или файл открыть. Есть еще идея считать выделенное в ТТТ через win api, все равно весь трафик гоню в отдельную программу. Но пока не осилил, далеко она запрятана ....
написал: запуск каждого скрипта добавляет ровно один поток - функция main.
То есть сколько скриптов запрашивают поток, столько же потоков запрашивает КВИК? Даже на один и тот же инстумент?
нет. Когда запускается скрипт, то функция main запускается в отдельном потоке. Это делается для функции main, даже если в скрипте лишь эта функция пустая. так реализован механизм запуска скрипта.
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 30.01.2015
13.12.2025 18:49:08
Цитата
AndyWise написал: функция getDataSourceInfo() работает как и говорилось.
функция getDataSourceInfo() работает как и говорилось.
CreateDataSource
Пользователь
Сообщений: Регистрация: 30.01.2015
13.12.2025 18:46:14
запуск каждого скрипта добавляет ровно один поток - функция main.
В рамках одного скрипта (торгового робота) понятно, что поток будет один . Хоть я 10 раз выполню CreateDataSource () с одними и теми же параметрами. А если разные скрипты (торговые роботы) решили поторговать одним и тем же инструментом?
Реально подписку делает терминал а не скрипт, Скрипт это VMLua (виртуальная машина) . QLua - это и есть библиотека для связи скриптов с терминалом, а через него с сервером. Можно не делать никакую подписку, а открыть график в терминале это и вызовет обращение терминала к серверу за данными. Неважно сколько вы запустите скриптов по одному инструменту , сервер будет посылать свечи лишь в одном экземпляре. ------ А теперь тест: запускаем терминал: 18 потоков
1-ый скрипт
2-ой скрипт
это текст скриптов (изменяем имя log файла и имя скрипта)
Код
minfo=debug.getinfo(1, "S").source:sub(2); p=minfo:match("(.*[/\\])") or "."
logf =p.."/lua_log.txt" Log = io.open(logf,"w")
class = "QJSIM"
sec = "SBER" -- КОД ИНСТРУМЕНТА
local t={}
function main()
while true do
local x=CreateDataSource(class, sec,1);
local y=x;
Log:write(tostring(x).."\n");
Log:write(tostring(y).."\n");
sleep(1000);
end
end
это таблицы которые создали скрипты:
CreateDataSource
Пользователь
Сообщений: Регистрация: 30.01.2015
13.12.2025 11:55:46
Вот тест: ------------------- Запускаем QUIK Смотрим сколько потоков:
их 11 теперь стартуем скрипт который в main делает подписку много раз: Это лог файл таблиц, которые созданы по подписке
Nikolay написал: Здесь вопрос более тонкий. Кеш сделали и ладно. Я бы не стал полагаться на GC, все же запомнить уже заказанные потоки не сложно. А вот закрытие оных уже вопрос. Я меня есть счетчик использования потоков. Т.к. один и тот же может использоваться много раз. И по мере того, как он перестает быть необходимым счетчик уменьшается, и если он 0, то вызывается Close. Дабы закрыть поток.
Но т.к. скрипт может быть остановлен принудительно, что закрыть все открытие потоки уже не всегда будет возможно. Как себя ведет терминал при таком закрытии скрипта - не ясно. Надеюсь, что есть внутренний кеш.. В древних версиях терминала (на ранней 7-ой, кажется) при заказе потоков без закрытия или вызова GC - терминал начинал есть память.
Я полагаю, что эта таблица лишь хранит указатели, а не заказывает новые потоки. Поток данных будет один. Таблиц можно создать сколько угодно. Затраты копейки. Если это таблица не сохраняется как глобальная , то отсутствие на нее ссылки приведет к уничтожению ее сборщиком мусора.
написал: Эта таблица ничего не триггереет. Она просто содержит указатели на функции. Все затертые таблицы вообще становятся недоступными и их сборщик соберет.
Так значит предыдущая функция-колббек будет по-прежнему вызываться квиком?
Поясните вопрос. какие предыдущие? Вы что делаете кучу колбеков на один и тот же источник ? А нафига?
Новые фьючерсы на биткойн и эфир, Правильный рассчёт стоимости лота
Пользователь
Сообщений: Регистрация: 30.01.2015
12.12.2025 06:39:52
Новые фьючерсы на биткойн и эфир, Правильный рассчёт стоимости лота
Пользователь
Сообщений: Регистрация: 30.01.2015
12.12.2025 06:38:46
Если не ошибаюсь, то цена лота для BTZ5 не 90 000 долларов, а 90 000 рублей.
Новые фьючерсы на биткойн и эфир, Правильный рассчёт стоимости лота
написал: если вызывать так: local x=CreateDataSource(class, sec,1); то новая таблица будет просто удалять старую. -------------------- При повторном вызове создается новая таблица:
А предыдущие таблицы будут автоматически уничтожаться сборщиком мусора? Или они по-прежнему будут триггерить функцию-коллбек?
Нет. Эта таблица ничего не триггереет. Она просто содержит указатели на функции. Все затертые таблицы вообще становятся недоступными и их сборщик соберет.
CreateDataSource
Пользователь
Сообщений: Регистрация: 30.01.2015
11.12.2025 18:04:00
если вызывать так: local x=CreateDataSource(class, sec,1); то новая таблица будет просто удалять старую. -------------------- При повторном вызове создается новая таблица:
если создается другая, то она очевидно будет точной копией.
CreateDataSource
Пользователь
Сообщений: Регистрация: 30.01.2015
11.12.2025 17:35:17
Предположу, что туже самую. Так как не возникал такой вопрос.
Нужна помощь в простейшей ситуации с вызовом getParamEx(class_code, sec_code, param_name), Скрипт выполняется, находит таблицу, но далее полный облом
Пользователь
Сообщений: Регистрация: 30.01.2015
11.12.2025 06:13:43
Код
-- Скрипт для КВИК: Получение цены и запись в лог-файл
-- =======================================================
minfo=debug.getinfo(1, "S").source:sub(2); p=minfo:match("(.*[/\\])") or "."
log_file_path =p.."/lua_log.txt"
class = "QJSIM"
sec = "SBER" -- КОД ИНСТРУМЕНТА
param = "LAST" -- Параметр: Цена последней сделки
local value = getParamEx (class, sec,param).param_image
if value then
log_message = " Цена " .. sec .. " = " .. tostring(value)
else
-- Ошибка
log_message = "ОШИБКА: Не удалось получить параметр " .. param .. " для " .. sec .. ". Проверьте коды класса/инструмента и активность торгов."
end
message( log_message,1)
local file = io.open(log_file_path, "a")
if file then
file:write(os.date("[%Y-%m-%d %H:%M:%S] ") .. log_message .. "\n")
io.close(file)
print("Лог записан в файл: " .. log_file_path) -- В системный лог QUIK
else
local err = "Невозможно открыть/записать файл лога по пути: " .. log_file_path
message(err, true) -- Всплывающее окно в QUIK
print(error)
end
Нужна помощь в простейшей ситуации с вызовом getParamEx(class_code, sec_code, param_name), Скрипт выполняется, находит таблицу, но далее полный облом
Пользователь
Сообщений: Регистрация: 30.01.2015
11.12.2025 06:11:59
Код
-- Скрипт для КВИК: Получение цены BRF6 и запись в лог-файл
-- =======================================================
minfo=debug.getinfo(1, "S").source:sub(2); p=minfo:match("(.*[/\\])") or "."
log_file_path =p.."/lua_log.txt"
class = "QJSIM"
sec = "SBER" -- КОД ИНСТРУМЕНТА
param = "LAST" -- Параметр: Цена последней сделки
-- Используем функцию QUIK API для получения данных
local value = getParamEx (class, sec,param).param_image
message(tostring(value),1) -- Всплывающее окно в QUIK
if value then
log_message = " Цена " .. sec .. " = " .. tostring(value)
else
-- Ошибка
log_message = "ОШИБКА: Не удалось получить параметр " .. param .. " для " .. sec .. ". Проверьте коды класса/инструмента и активность торгов."
end
-- Запись сообщения в файл лога
message( log_message,1)
local file = io.open(log_file_path, "a")
if file then
file:write(os.date("[%Y-%m-%d %H:%M:%S] ") .. log_message .. "\n")
io.close(file)
print("Лог записан в файл: " .. log_file_path) -- В системный лог QUIK
else
local err = "Невозможно открыть/записать файл лога по пути: " .. log_file_path
message(err, true) -- Всплывающее окно в QUIK
print(error)
end
Вы неправильно читаете параметр. Сделал для акции так как сейчас на демо сервере фьючерсы не торгуются. Исправьте как вам надо. -------------------------- Лог файл откроется там, где этот скрипт. Вывод сообщения в лог файл и в окно сообщений.
Не получается запустить два скрипта одновременно, При запуске второго первый останавливается
Пользователь
Сообщений: Регистрация: 30.01.2015
10.12.2025 12:42:22
Если выложите скрипт, скажу как исправить.
Как вычислить положение курсора или перекрестия с графика инструмента
Пользователь
Сообщений: Регистрация: 30.01.2015
10.12.2025 07:48:42
Цитата
Виталий Дерягин написал: Нужно для того, чтобы отыскать ближайшую метку на графике от курсора к которой будет прикреплена таблица с данными и при нажатии горячей клавиши будет выводится таблица.
Это Вы не реализуете.
Как вычислить положение курсора или перекрестия с графика инструмента
Пользователь
Сообщений: Регистрация: 30.01.2015
10.12.2025 07:47:23
Цитата
Виталий Дерягин написал: Это вообще можно реализовать на КВИКЕ?
Сложно, что практически не имеет смысла.
Не получается запустить два скрипта одновременно, При запуске второго первый останавливается
Пользователь
Сообщений: Регистрация: 30.01.2015
09.12.2025 15:35:04
Не получается запустить два скрипта одновременно, При запуске второго первый останавливается
Я проверил, если запускать два простейших скрипта, типа message(...) sleep, то работают. Но если мой мониторинг цены запараллелить с простейшим - останавливается. Возможно какая-то конкретная функция есть, которая не хочет делить ресурсы.
Более того, останавливается даже в момент загрузки второго скрипта. Т.е. нажимаю кнопку "добавить", выбираю файл скрипта (но не запускаю) - и первый останавливается.
P.S. Тут по правилам форума новичку можно писать только одно сообщение в сутки. Так что если я молчу - не значит, что всё ок или я забил.
У меня 1 скрипт - это робот который создает таблицу (видно на рисутке) обрабатывает колбеки выставляет заявки и выдает команды второму роботу Второй робот считает алгоритмы и выдает команды первому роботу. Они общаются через mapping file и глобальные переменные среды приложения. Могу еще что-нибудь добавить .
Не получается запустить два скрипта одновременно, При запуске второго первый останавливается
Пользователь
Сообщений: Регистрация: 30.01.2015
08.12.2025 14:59:22
Как создать мост QLua-скрипта с другим C++ приложением? Вопрос концепта., Предлагаю такой подход, но есть вопросы.
Пользователь
Сообщений: Регистрация: 30.01.2015
07.12.2025 16:27:54
...замечу, глобальные переменные не луа, а среды исполнения приложения.
Как создать мост QLua-скрипта с другим C++ приложением? Вопрос концепта., Предлагаю такой подход, но есть вопросы.
Пользователь
Сообщений: Регистрация: 30.01.2015
07.12.2025 16:22:51
Цитата
A.T. написал: Потому что это совсем колхоз, архитектурно неправильно. Я еще должен выделять специальное место в системе, как загашник... Когда существует официальная связка Lua-C (описанная в книге Иерусалимского), в детали не вникал и данные не гонял, но тестовый запуск уже получился, это есть.
Тем более есть мысли применить такой мост Lua-C <=> VC++ (MFC, скорее всего) и в другом месте, не только как узкоспециальный плагин на раз.
И потом, что значит "особенно в RAM диске"? Мне еще сторонний витруальный диск ради этого создавать? Какими-то сторонними драйверами? И запускать/пересоздавать его, заботиться после каждой перезагрузки. Который будет мешаться в системе в повседневных делах. У меня не только квик, у меня и другие развлечения есть. То есть это даже не костыль, это хуже. Настолько временное решение, что лучше о нем не думать. На сайте Майкрософта висит готовый пример для named pipes. И не только для него.
Насчет протокол на запрос-ответ понадобится в любом случае, тут спасибо за заметку. Пока думаю об этом в первом приближении. Думаю отделаться простыми переменными, if-elsами, сравнениями и кейсами. Хотя это не дело, если делать нормальный переносимый мост. Но для себя сгодится и так. Наверно. Тут не знаю, опыта в создании протоколов нет.
Расскажу свой опыт решения этой задачи. -------------------- Сначала кратко повторю то, что уже недавно и давно писал на форуме с тестами. ------------------------ Во-первых замечу если ставите sleep ( я использую event) то задержка передачи данных будет равна задержке sleep. можно поставить sleep(10) этого достаточно чтобы поток не грузил ядро впустую. Можно даже поставить sleep(1) но задержка реально будет примерно 10 ms - это квант OS. -------------------- Так вот обмен через файлы это самое простое (примерно 10 операторов) и задержка не более 15 ms ---------------------- Я использую для обмена между процессами File Mapping При этом если использовать event, то задержа примерно в 100 раз меньше, чем при обмене через файлы. Для обмена между скриптами т е потоками main в разных скриптах QUIK , использую глобальные переменные. При этом, если использовать event, то задержка примерно в 1000 раз меньше, чем при обмене через файлы (3-5 мкс) ---------------------------- Эти методы самые быстрые. -------------------
Время загрузки тарминала QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
02.12.2025 21:56:07
Я утверждаю, что время загрузки(старта) существенно зависит от наличия скриптов индикаторов на луа и архива истории. ------------------ Провел тест времени загрузки (начала работы )терминала QUIK (брокер Сбербанк) ---------------------
Тест 1: Сделал копию рабочей папки QUIK Удалил папку архивы и индикаторы и подключился к брокеру: ------------- Время старта вычислял по интервалу от момента двухфакторной до начала отображения стакана и графиков
Тест2: загрузил рабочий вариант QUIK
В результате Тест 1 время загрузки без скриптов на луа составляет 12 секунд, а время загрузки со скриптами индикаторов 69 секунд ---------------------------------- Выводы делайте сами.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Чтобы получить действительно ускорение расчетов на основе множества скриптов надо использовать Event OS не только для синхронизации колбеков QUIK и потока main, но и для синхронизации обмена между скриптами. В этом случае обмен имет смысл строить на основе Memory-mapped files. При этом скорость обмена между скриптами по сравнению с обменом через файлы будет примерно в 100 и более раз быстрее.
Cкорость обмена данными через файлы
Пользователь
Сообщений: Регистрация: 30.01.2015
02.12.2025 20:23:12
Говорят, что все новое - это хорошо забытое старое. --------------------- Решил обновить тему обмена данными между скриптами. Выше я привел результаты тестов. ---------------------------- Но вопрос у меня следующий. --------------------------- Знаете ли Вы какая у Вас будет задержка обмена данными между Вашими скриптами? ----------------------------- Если не знаете, то могу Вас удивить. ----------------------- Величина этой задержки будет равна значению функции sleep, которую Вы ставите в цикле main. Если вы написали sleep(1000) то какой бы метод обмены Вы не применили задержка передачи данных будет 1 секунда. --------------------------- В итоге реально вы не получите задержку менее 15 ms, что соответствует sleep(10). Отказаться от sleep можно лишь используя Event OS. ----------------------- Из этого можно следующий вывод. Если Вы не профессионально пишите софт, то для обмена данными как между скриптами так и с другими приложениями например на питоне применение обмена через файлы самый простой, быстрый и надежный способ, если Вы знаете как его правильно реализовать. ---------------------------- И еще один печальный вывод. Функция main это отдельный поток. Казалось бы , что запустив 5 скриптов можно получить робота с 5 потоками и будет он в 5 раз быстрее считать. Но как бы не так. В каждом скрипте поток будет тормозится на время sleep. и в итоге ускорение либо будет либо нет. Скорее нет. ------------------------------ Т е sleep в потоке - это тормоз.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Пользователь
Сообщений: Регистрация: 30.01.2015
02.12.2025 19:36:26
Из своего опыта замечу, что долго грузится в основном по причине работы скриптов и индикаторов на Lua на истории, которая теперь больше 3000 свечей для каждого инструмента и каждого индикатора. Так как каждый индикатор считается два раза, то это время можно без проблем сократить в два раза. ------------------------------ Убедится, что это так легко. Посмотрев время загрузки с тестового сервера. Там история короткая и как правило нет самописных индикаторов на луа.
Какой ИИ адекватно пишет
Пользователь
Сообщений: Регистрация: 30.01.2015
30.11.2025 14:39:27
Проще им писать на питоне. ----------------------- Но все равно, там где я решу задачу в 20 строк у них получается 100.
Какой ИИ адекватно пишет
Пользователь
Сообщений: Регистрация: 30.01.2015
30.11.2025 14:37:27
У меня DeepSeek уже помнит, что я пишу для QUIK. Когда что-то надо написать на луа, но лень вспоминать , спрашиваю его чтобы получить заготовку. Он начинает приводить примеры и в результате скатывается на финансовый рынок и программирование под QUIK. Приходится его останавливать чтобы не отвлекался.
Коллеги, нужно написать простенький код на LUA для монитора состава портфеля, скажем так. Ради этого погружаться в подробности языка LUA нет ни малейшего желания. Озадачил DeepSeek. Он пишет "какой-то код", визуально, вроде, норм, но на практике не работает. Подскажете, какая нейронка нормально может написать на LUA? Чтобы сразу запустить в Квике и закрыть этот вопрос?
А мне он пишет нормально. Попробуйте GLM-4.5. Тоже мне пишет нормально. ----------------------------------- Конечно лучше всего пишут платные агенты. ================================================ Качество кода зависит от тщательности проработки тех задания. ----------------------- Так, что сказать "Кто, что все" - и нате Вам. Увы не получится.
Вопрос по ленте сделок, Вопрос по ленте сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
30.11.2025 10:34:05
А как Вы определили, что должен изменится в 2 раза? Какой открытый интерес до этих сделок и после?
Ошибка в отображении данных графика объема торгов: Сбербанк, График объема торгов в системе QUIK не соответствует данным с сайта Мосбиржи
написал: Прошу пояснить такое расхождение в данных.
То, что в квике, надо умножать на lotsize, чтобы получить объём сделок в акциях. 06.06.2025 lotsize на сбере был 10 (сейчас - 1). Это объясняет расхождение порядка. Почему на сайте биржи написано 102 026 188 (акций), в tradingview написано 102 022 760, а в Финам (в транзаке) и БКС (квике) указано 10 200 518 лотов (т.е. акций 102 005 180) я не знаю. Может быть по-разному учтён аукцион открытия.
Может кто-нибудь объяснить, какое значение для торговле имеет 102026188 или 102022760 акций ? Погрешность в 6-ом знаке ? --------------------- Кому важно на улице 30 градусов или 29.999 градусов?
Состояние счета, Таблица Состояние счета
Пользователь
Сообщений: Регистрация: 30.01.2015
28.11.2025 15:10:41
, Если надо определить сколько можно выставить, то Можно использовать функцию CalcBuySell -- Функция предназначена для расчета максимально возможного количества лотов в заявке. или getBuySellInfo или getBuySellInfoEx --Функция предназначена для получения параметров таблицы «Купить/Продать».
Такого не может быть, но опять.
Пользователь
Сообщений: Регистрация: 30.01.2015
28.11.2025 05:48:28
Цитата
Dmitry Mishin написал: Как уже было описано выше - при возникновении разрыва соединения, сервер может не получить информацию о том, что терминал более не подключен к нему. Терминал диагностировал разрыв соединения, и, в этом случае, сервер не получил информации об этом.
При сохранении tcp сессии со стороны сервера QUIK он будет ожидать продолжения обмена информацией в течение таймаута.
какая величина таймаута?
Такого не может быть, но опять.
Пользователь
Сообщений: Регистрация: 30.01.2015
27.11.2025 11:44:55
При этом непонятно, что ждет сервер и как долго он это будет ждать, если от терминала ничего не приходит и соединение разорвано.
Сообщение вида "Вы уже работаете в системе" говорит о том, что сервер не получил информацию от терминала о разрыве соединения. Соответственно, со стороны сервера, пользователь остаётся подключенным, пока не закончится установленный таймаут соединения. Вероятно, так совпадает, что при закрытии терминала и последующем его открытии таймаут истекает и подключение становится возможным.
Для получения дополнительной информации о причинах возникновения разрыва соединения рекомендуем обратиться к Вашему брокеру, а если разобраться не удастся, то инициируйте его обращение к нам.
Это понятно, но терминал выдал сообщение что сервер принудительно разорвал соединение. Полагаю, что сервер и не ждет сообщения так как сам разорвал это соединение. что не так?
Такого не может быть, но опять.
Пользователь
Сообщений: Регистрация: 30.01.2015
27.11.2025 08:25:19
брокер Сбербанк
Такого не может быть, но опять.
Пользователь
Сообщений: Регистрация: 30.01.2015
27.11.2025 08:23:57
при этом нажатие на ключи и ввод логина снова не помогает. Спасает лишь закрытие приложения полностью.