написал: измеряете время от входа в колбек до входа в функцию main.
Ясно, к вам вопросов больше нет. Очевидно (но, видимо, не всем), что таким образом не возможно измерить время, затрачиваемое на вызов колбэка. Не путать со временем исполнения кода пользовательской функции колбэка.
Время на вызов колбека Вы можете измерить еще проще. Вызовите колбек функцию из своей dll. У меня получилось менее 1 мкс. --------------- Без обид, но вы просто не умеете программировать .
Задавать списки классов и кодов инструментов, для которых будут вызываться колбэки OnAllTrade, OnParam, OnQuote в Lua-скрипте
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 22:17:45
Цитата
Йцукен написал: В Lua сделать возможным задавать списки классов и кодов инструментов, для которых будут вызываться колбэки OnAllTrade, OnParam, OnQuote в Lua-скрипте.
Пояснение: Сейчас, если в Lua-скрипте, заданы функции обратного вызова, в частности OnAllTrade, OnParam, OnQuote, то они будут вызываться для всех инструментов, данные по которым поступают в терминал, что влечёт высокий оверхэд на вызов этих самых колбэков. Под вызовом колбэков понимается именно их вызов терминалом. Не путать с исполнением Lua-кода пользовательской функции.
Ошибаетесь. Использую фильтр. затраты: если это не торгуемый инструмент, то 1 мкс, если торгуемый, то 5 мкс. Задержка доставки данных по интернету примерно в 10000 раз больше.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 22:12:47
Как указал ранее, задержка в 15 мс при обмене через файлы связана с квантом времени OC и возникает из-за наличия SLEEP в цикле функции main. ------------------ Если sleep удалить то получаем задержка обмена составляет не более 0.2 мс:
Таким образом, если Вы используете sleep, то при любом способе обмена получите задержку не менее кванта времени OC, по умолчанию это 15мс.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 17:32:24
21 инструмент, Первый скрипт при работе занимает 197 Кбайт. Постепенно объем занятой памяти растет до 279 Кбайт. Далее включается сборщик мусора и объем снова 197.
При запусках коллбеков не восстанавливается состояние скрипта по сборке мусора (QUIK 12.2.1.2)
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 17:22:36
Разобрался. Все работает нормально. Память утекала от сторонней библиотеки cffi-lua. Пришлось написать свою
Проблемная работа программы с луа роботами, Проблемная работа программы с луа роботами
таймером. Есть в ПК счетчик c тактом 0.1 мкс. На основе него делаем таймер, который измеряет с погрешностью 0.1 мкс. Потом берете мой скрипт универсального обработчика событий, который я выложил на форуме , и измеряете время от входа в колбек до входа в функцию main. Это и будет время задержки.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 12:50:01
и еще... Полученное время обмена через файлы не является длительностью совершения записи чтения, а равно установленному кванту Windows .
При запусках коллбеков не восстанавливается состояние скрипта по сборке мусора (QUIK 12.2.1.2)
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 12:01:54
Цитата
Йцукен написал: Нужно ли при завершении скрипта принудительно вызывать collectgarbage()?
нафига? Это лишь тормозит работу скрипта.
Проблемная работа программы с луа роботами, Проблемная работа программы с луа роботами
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 12:00:44
Цитата
Йцукен написал: Оверхед от вызова колбэков высокий, независимо от кода внутри колбэка. Я вот думаю отказаться от OnAllTrade совсем. Да и от OnParam стоило бы отказаться, поскольку при включении "умного" заказа данных, терминал тянет данные почти по всем классам. Но в этом случае придётся постоянно в main опрашивать на наличие новых данных по инструментам, что отрицательно скажется на производительности.
У вас очевидно неправильно написаны колбеки. ----------------------------- колбек OnAllTrade вызывается перед записью данных в таблицу обезличенных сделок. На него затрачивается не более 5 мкс. Он ничего не тормозит как и колбек OnParam. ----------------------- колбек OnParam нужен для управления стопами и позицией. Никакие "умные " заказы это не решают.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 11:53:22
еще замечу... Передача данных через файл позволяет использовать внешние приложения, написанные на любом другом языке программирования, без знания Lua и С. и необходимости писать костыли для приема данных.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 11:46:18
Изменил алгоритм работы скриптов. Увеличилась скорость обмена данными: Алгоритм: Задается список торгуемых классов и список торгуемых инструментов ---------------- Первый скрипт записывает информацию из колбеков для каждого инструмента в отдельный файл. По колбеку OnParam передается последняя цена и лучшие цены спроса и предложения. --------------------- Второй скрипт перебирает торгуемые инструменты и читает из их файлов новые данные. Полученные данные выводит в лог файл. Результат: Время передачи данных составляет 15 млсек (0.015 сек)
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 11:38:42
Цитата
Nikolay написал: А зачем записывать на диск, если mmap позволяет создавать отражение в памяти.
ранее уже про это писал:
------------- Поясняю. Есть несколько способов обмена. Самый быстрый это через общую память dll, следующий mapping file. Они есть у меня. Но они требуют создания dll на С for lua. ------------------- Обмен через файлы не требует написания dll и может быть реализован на луа без знания C.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
30.01.2026 13:50:35
Алгоритм теста: --------------- два скрипта. ------------------ Первый скрипт: Содержит колбеки. Полученная в колбеке таблица преобразуется в строку и записывается в файл. ------------------------- Второй скрипт: В функции main читает новые строки из файла. Если строки есть, то выводит их в лог файл. -------------------------- В результате получаем в лог файле вторго скрипта таблицы из колбеков первого. Ниже приведено содержимое лог файла при купокупки и продажи акции на демо сервере ---------------------------- В строке записана следующая информация 136, млсек --задержка приема данных вторым скриптом в ms относительно колбека первого скрипта. 307620878521: --значение счетчика в мкс во втором скрипте 307620741599: --значение счетчика в мкс в первом скрипте 6, мксек-- время на передачу таблицы из колбека в функцию вывода в файл в первом скрипте, Param={sec_code=RUAL,class_code=QJSIM}, -- таблица параметров колбека 14 мксек -- время на преобразование таблицы в строку.
Гонял тест на версии 12.8.3.4 и обнаружил такое : --------------------- Если принудительно не удалять таблицы параметров в колбеках, то сборщик мусора их не собирает. ----------------------------- В итоге растет объем используемой памяти. --------------------- Предлагаю заинтересованным проверить это. Подтвердить или опровергнуть.
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
29.01.2026 18:53:30
, Вы можете объяснить каким образом Ваш сервер ,сохраняя соединение по TCP, прекращает полностью передачу данных. это же даже придумать сложно, но у Вас это получилось. ----------------------- И самое прикольное, что терминал Ваш это не обнаруживает. ---------------------- Вы же это чудо сделали.
Проблемная работа программы с луа роботами, Проблемная работа программы с луа роботами
Пользователь
Сообщений: Регистрация: 30.01.2015
29.01.2026 18:48:44
Добавлю ложку ... в бочку... --------------- Несколько раз пытался установить обновления версии 12 Но после наблюдения тормозов откатывался на 8. 7 что и Вам советую. не вижу смысла быть бесплатным тестировщикам сырых версий.
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
29.01.2026 11:27:32
Прикол от Сбербанка. Торги сегодня акции сбербанка Соединение есть, но данные не приходят уже 5 минут. Потом данные поступают ---------------------- Такой прикол наблюдается эпизодически уже не первый день. ------------------- Можете объяснить:
Универсальный обработчик событий - это просто
Пользователь
Сообщений: Регистрация: 30.01.2015
29.01.2026 06:21:45
Эта тема для начинающих писателей роботов на Lua в QUIK. Cкрипт, на основе которого можно строить различных роботов. В нем реализована очередь , что обеспечивает обработку всех событий
Код
TQ={}; jQr,jQw=0,0; --очередь
----------------------------
function main()
while run==1 do wait_connect()
while run==2 do
while jQw>jQr do local n=jQr+1;local t=TQ[n];TQ[n]=nil;jQr=n;t.fun(t);end
sleep(10)
end
end
end
-----------------------------
local function wQ(t,fun) --функция записи обработчика в очередь
if fun then
t.fun=fun; local n=jQw;if jQr==jQw then jQw=0;jQr=0;end n=jQw+1;TQ[n]=t; jQw=n;
end
end
-----функции обратного вызова QLua------------------------
function OnDepoLimit(t) wQ(t,setPos); end
----------------------------
function OnFuturesClientHolding(t) wQ(t,setPos); end
-----------------------------
function OnOrder(t) wQ(t,Order); end
----------------------------
function OnStopOrder(t) wQ(t,StopOrder); end
-----------------------
function OnTransReply(t) wQ(t,TransReply); end
----------------------------
function OnParam(c, s) wQ({sec_code=s,class_code=c},Param); end
----------------------------
function OnQuote(c, s) wQ({sec_code=s,class_code=c},Quote); end
------------------------
function OnDisconnected() run=1 end
-------------------------
function OnConnected(flag) Trans,Tsec,Tclas,Tclient,pos={},{},{},{},{} run=1 end
---------------------------
function CloseTH() if td_id then DestroyTable(td_id); end run =0 if f then f:close() end end
------------------------------
function OnStop(s) CloseTH();return 1000 end
---------------------------
function OnClose() CloseTH() end
---------------------------
function OnCleanUp() run=1; end
---------------
function OnInit(path) OnConnected(true); end
Функции обратного вызова записываются одинаково. В них мы помещаем в очередь TQ полученные параметры и имя функции, которая обрабатывает данное событие. Функция обработки событий реализуется отдельно. Если функция обработки события отсутствует, то событие не будет записываться во очередь.
Изменение параметров встроенных индикаторов из скрипта
Пользователь
Сообщений: Регистрация: 30.01.2015
27.01.2026 07:24:22
Добрый день, --------------------- Сейчас в QLUA есть возможность перезапустить скрипт индикатора при изменении параметров в окне настройки индикатора. ----------------------- Предлагаю реализовать возможность изменения параметров встроенного индикатора из скрипта. ================== Поясняю: -------------------- Да, можно написать копию встроенного индикатора на луа и таким образом решить задачу изменения параметров индикатора. ----------------- Но такое решение работает раз в 100 медленнее, чем встроенное. -------------------- Кроме того, в терминале QUIK много встроенных индикаторов и нет смысла делать их в виде копии на луа, либо использовать Вашу библиотеку скриптов на луа и изучать алгоритмы индикаторов.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 30.01.2015
26.01.2026 08:48:56
Прикольно читать Вашу тему.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Ответ на Ваш вопрос очевиден, "Промышленный" - это то чем пользуются хэдж - фонды, или закрытые отделы в банках под управлением у которых находятся собственные средства, а не клиентов. И такие торговые платформы отвечают не которым стандартом, где то выше уже какие то стандарты приводил.
Если правильно понял Ваш ответ, то термин "промышленная архитектура" это Вы придумали вв детском саду. ------------------------ Если я не прав, то дайте ссылку, где этот термин определен. Назовите хоть один хедш-фонд или банк, который использует этот термин.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 30.01.2015
25.01.2026 10:28:28
объясняю популярно, для тех, кто изобретает велосипед. ------------------- Если Вы пользуете встроенные графики , то проще и быстрее не читать их в скрипте и потом выковыривать название индикатора из легенды, а записать из значения либо параметры, включая код индикатора , интервал в файл. В скрипте прочитать эти параметры при их смене на графике (если это график с якорем). либо писать индикаторы в файлы с именем инструмента и читать в скрипте соответствующий файл.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 30.01.2015
25.01.2026 10:22:36
Цитата
VPM написал: Концептуально, такую архитектуру можно свести к последовательным шагам взросления системы, в стиле боевого QUIK-safe. Важных, самостоятельных 4 - логических слоя, как в профессиональных торговых платформах:
2.2. Использование данных от индикатора (и это уже по взрослому).
Код
И ни какой магии, типа машинного обучения или нейросетей! А главное безопасное изменение и замена модулей. Хочется думать так, а жизнь покажет, что опять не учитываю. ::
Прикольно, что вы написали. И это не по взрослому, а по дилетанскому. -----------------------
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 30.01.2015
25.01.2026 10:20:47
Цитата
VPM написал: , "У нас" - это те кто пользуется инфраструктурой Квика, и я рассуждаю о разворачивании на ее основе торговой платформы на луа, а не вообще. Не нужны, тут ни какие драйвера, кроме того что предоставляет квик. Разворачивая торговую систему, приводя в порядок архитектуру и дописывая модули, мне это напомнило порядок ОС (как пример DOS). Зная это, можно изначально закладывать архитектуру как промышленную. Сложно но можно!
а что такое "промышленная архитектура"? Откуда вы взяли этот термин? если сами придумали, то дайте определение.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
написал: А если серьезно, то попробуйте написать на луа какой-нибудь драйвер устройства, что является обязательным элементом OC.
Не я тоже возмущен почему, у "Условного Маркет Мейкера" скорость 10 мк.сек. а унас 200 мл.сек., а кому повезет, ну хорошо кто следит, 100 мл.сек. И это ни сколько не отменяет тот факт что код может отвечать принципам и требованиям ОС?
Вы заблуждаетесь относительно "у нас" На бирже торгует брокер, а не его клиенты. QUIK - это программа подачи заявок брокеру, а не для прямой торговли на бирже. -------------------- относительно мксек ММ и mkсек QUIK. млсек - это время прохождение данных от Вашего ПК до брокера по интернету. Разместите свой ПК в дата центре на M9 и у вас тоже будут мкс.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 30.01.2015
24.01.2026 17:39:26
А если серьезно, то попробуйте написать на луа какой-нибудь драйвер устройства, что является обязательным элементом OC.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 30.01.2015
24.01.2026 17:37:03
, Вы еще больше удивитесь, когда узнаете, что из кирпичей можно построить стены дома и, даже сложить печку в доме том. -------------- А самое прикольное, Вы никогда бы не догадались, земля -круглая, а не плоская. -------------- В мире еще много удивительного и не познанного.
написал: Проверьте подписку. часто при обновлении обновляется подписка и в результате принимаются новые инструменты.
Не совсем понимаю что такое подписка и где ее проверять. В настройках получения котировок стоит получать "умным заказом".
Дело в том что если даже несколько раз заходить в меню "редактировать таблицу" (таблицы купить-продать) и сохранять настройки, то на несколько секунд после этого отображается правильный набор инструментов а потом туда добавляется целая гора других инструментов. И так можно повторять несколько раз, результат будет всегда такой.
Поэтому полагаю что все же речь идет о глюке.
После обновления на версию 12.8.3.4 появился глюк в таблице "купить-продать", Глюк с фильром инструментов в таблице
Пользователь
Сообщений: Регистрация: 30.01.2015
19.01.2026 09:10:35
Цитата
Ivan Smirnov написал: Здравствуйте. Один из моих брокеров обновил квик до версии 12.8.3.4 и в новой версии сразу стал заметен глюк в таблице "купить-продать". Суть его в том, что независимо от того, какие инструменты отобраны для отображения в этой таблице, в нее добавляется большое количество других инструментов (в моем случае порядка 800) из разных классов. По какому принципу они туда отбираются не совсем понятно. В моем конкретном случае мне "на глаз" кажется что это все инструменты которые есть во всех других таблицах данного экземпляра квик.
Сценарий:
1) Открыть таблицу купить-продать 2) Нажать "редактировать таблицу", отобрать несколько инструментов, сохранить 3) Подождать несколько секунд (до минуты) 4) Помимо выбранных на шаге 2) инструментов в таблице отобразятся еще какие-то инструменты
При этом если снова зайти в настройку "редактировать таблицу", там по-прежнему будут только выбранные пользователем инструменты (т.е. настройка по-прежнему выглядит корректно)
Проверьте подписку. часто при обновлении обновляется подписка и в результате принимаются новые инструменты.
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 30.01.2015
15.01.2026 14:19:50
T+ - это режим когда деньги сейчас, а стулья либо чере 1 либо через 2 дня
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
написал: SBMM торгуется в режиме T+. Почему у SBMM появится цена T0?
Я купил эту позицию вчера в количестве 100 лотов по цене X и сегодня докупил 200 лотов по цене Y. В T1, понятно, я вижу, что у меня "сейчас" 300 лотов общей себестоимостью 100X+200Y. В T0 вижу, что на начало сессии имелось 100 лотов общей себестоимостью... 0! Выглядит странно, как минимум.
T0 - это режим торгов при котором взаиморасчет выполняется в день заключения сделки. Е+ - это режим когда деньги сейчас, а стулья либо чере 1 либо через 2 дня. ----------------------------- В режиме Т0 на Московской бирже, как правило, торгуются облигации субъектов РФ, муниципальные облигации, корпоративные еврооблигации, номинированные в рублях и иностранной валюте, кроме долларов США, и облигации МФО
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 30.01.2015
15.01.2026 13:17:48
Если режим T+ то с какого цена приобретения будет на T0?
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 30.01.2015
15.01.2026 13:16:42
SBGB аналогично: SBGB ETF. Регистрационный номер. 3629. Код ISIN. RU000A1000F9. Режим торгов. Т+
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 30.01.2015
15.01.2026 13:14:56
SBMM торгуется в режиме T+. Почему у SBMM появится цена T0?
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Попробуйте донести поддержке, что Вы не указываете на ошибку при передаче данных, а просто хотели, чтобы брокер отправлял Вам цену приобретения и в Т0 тоже, и что это нужно Вам для анализа данных, а также написания скриптов.
nikolz, спасибо за то, что ты поделился своим подходом к созданию торгового робота, но у него есть один большой минус — он может двигать стопы, только когда он работает.
Что если я открыл позицию, потом закрыл квик, выключил компьютер, и включил его дня через три или через неделю? За это время цена могла улететь, куда угодно, задеть стоп, инициировать его исполнение, но поскольку твой отступ слишком маленький (5 шагов), то не факт, что созданная лимитная заявка будет исполнена (особенно при резком движении цены против тебя). И ты будешь нести большие убытки.
Получается, что твой робот должен работает постоянно, 24/7, но даже в этом случае не факт, что ты закроешь позицию, когда сработает стоп, потому что нельзя исключать ситуацию, когда могут быть перебои с электроэнергией. К примеру, скачок электроэнергии — и твой компьютер отключился, или есть проблема на электроподстанции — и район города сидит без электричества, или с электричеством всё нормально, но проблема у провайдера — тупо нет соединения с серверами. И пока будут чинить, торги на бирже идут, цена уходит, а ты (поскольку робот не работает) не можешь контролировать ситуацию.
Пока единственный выход — это когда ты заранее задаёшь стопу приличный отступ на всякий пожарный, например, цена минус 100 шагов , чтобы гарантированно закрыть позицию, даже когда торговый робот может не работать при исполнении стопа. Но тогда опять встаёт вопрос, не выйдет ли цена для лимитной заявки за пределы диапазона [PRICE_MIN, PRICE_MAX] . Ведь если выйдет, то заявка будет просто отклонена.
Как же неудобно, когда для срочного рынка нет простого и понятного type="M" + price="0", как оно есть для фондового! Приходится изобретать всякие костыли.
Все верно. Суть стоп-ордера - использовать удаленный сервер брокера . Если надо сделать тоже самое, то надо ставить квик на виртуальный сервер в дата-центре. ----------------------- Прикольно Ваша мечта. Поставить - и не смотреть неделю. Вы серьезно? ------------------------------ Если Вы периодически включаете комп, то можно автоматом переустанавливать стоп. В таком варианте, всегда можно подстроить цену род текущее состояние рынка. ------------------ Если Вы поставите на 100 шагов, то можете получить продажу на дне. Т е продадите и цена уйдет вверх.
написал: Но заявку linkedorder ловим в OnOrder, так как она там будет до таблицы.
А как тогда ты тогда определишь, что это не просто лимитная заявка, а лимитная заявка, созданная при активации стопа? По полю trans_id , который мы запоминаем при создании стопа?
написал: Если речь про стоп-ордер, то я делал так. ставлю цену, сместив ее относительно стоп например на 5 шагов. Когда стоп сработает, то лимитная заявка либо сработает, либо останется активной. Если она осталась активной, то на следующем тике робот ее переставляет на лучшую цену и так делает, пока вся позиция не закроется.
То есть, насколько я правильно понял, ты в коллбеке OnStopOrder(stop) читаешь поле stop.linkedorder (номер заявки, зарегистрированной по наступлению условия стоп-цены) и по номеру ищешь заявку в таблице orders , и у найденной зяавки проверяешь битовые флаги. И если она активна, то снимаешь её, и ставишь новый стоп-ордер на новую цену?
Почти так. Но заявку linkedorder ловим в OnOrder, так как она там будет до таблицы.
Рыночная заявка для торговли фьючерсами
Пользователь
Сообщений: Регистрация: 30.01.2015
14.01.2026 19:07:07
Цитата
Сергей Че написал: Если я ставлю стоп-ордер на закрытие позиции, то я не могу знать, когда именно он исполнится: может через минуту, а может через месяц. Поэтому я не знаю, какой будет диапазон [ PRICE_MIN, PRICE_MAX ] , когда цена достигнёт уровня срабатывания стопа. Если бы знал, то сразу бы выставил известный заранее PRICE_MIN при закрытии лонга (или известный заранее PRICE_MAX при закрытии шорта). Дело в том, что на срочном рынке нельзя выставить type="M" + price="0" , как документация советует для фондового рынка . А раз так, то приходится в стоп-заявке писать, что цена срабатывания Х , а цена исполнения Х ± 100 шагов (в зависимости от того, что закрываю, шорт или лонг). И тут вопрос, а не выйдет ли Х ± 100 шагов за пределы диапазона [ PRICE_MIN, PRICE_MAX ] ?
Если речь про стоп-ордер, то я делал так. ставлю цену, сместив ее относительно стоп например на 5 шагов. Когда стоп сработает, то лимитная заявка либо сработает, либо останется активной. Если она осталась активной, то на следующем тике робот ее переставляет на лучшую цену и так делает, пока вся позиция не закроется.
написал: Если в заявке указать цену меньше PRICE_MIN (или больше PRICE_MAX), она всё равно приведётся к PRICE_MIN (PRICE_MAX)? Или заявка просто будет отклонена?
Будет отклонена.
Надо ставить ту цену, по которой вы готовы купить. Ожидая роста, неплохо бы еще прикинуть, на сколько оно может вырасти. И учесть комиссии. А ставя PRICE_MAX, есть ненулевой шанс по этой цене и купить. Что может оказаться сильно завышено.
Выставляя цену, равную PRICE_MAX, я куплю по PRICE_MAX только в одном случае - если в стакане есть только 1 продавец, который выставил заявку в районе PRICE_MAX. На ликвидном инструменте это просто невозможно.
Выставляйте цену для покупки по лучшей цене предложений либо больше , чем она на несколько шагов цены. Еще можно делать так. Найти в стакане максимальный объем и выставить по его цене. тогда точно купите .
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
Пользователь
Сообщений: Регистрация: 30.01.2015
14.01.2026 15:12:10
Возможно ошибаюсь, но разве в T0 отображается вчерашняя цена?
Cкорость обмена данными через файлы
Пользователь
Сообщений: Регистрация: 30.01.2015
11.01.2026 17:54:48
Цитата
Йцукен написал: , так что, не знаете как в QLua синхронизировать запись из разных скриптов в один файл?
Знаю. Но, не хочу гадать, что Вы понимаете под этим и что у Вас не получается. Напишите тест-скрипт и расскажите что не так.
Извечный вопрос: повторные вызовы OnTrade, Даже при заявке на одну акцию
Пользователь
Сообщений: Регистрация: 30.01.2015
10.01.2026 20:05:28
, А как Вам это:
3 февраля 2010 года ошибка в алгоритме HFT-робота компании Infinium Capital Management, торговавшего нефтяными контрактами, привела к неконтролируемому росту заявок и скачку цены на нефть на 1,3% прямо перед закрытием биржи. Примерно за секунду работы робот сгенерировал убытков на $1 млн. ------------------------ С HFT-трейдингом связывают обвал на американском фондовом рынке 6 мая 2010 года. За пять минут индекс DJIA, и без того снижавшийся весь день, потерял около 7%, чтобы ещё через 15 минут отыграть большую часть падения. Многие трейдеры сочли это естественным результатом насыщения рынка роботами: реагируя на продажи, те драматически усилили уже наметившееся движение.
23 марта 2012 года компьютерный HFT-алгоритм, запущенный с терминалов неопознанного трейдера, «убил» попытку американской компании BATS Global Markets провести IPO. Попытка вывести акции на биржу продолжалась ровно 9 секунд, в течение которых бумаги компании обесценились практически до нуля, торги по ним были приостановлены, а через некоторое время руководство компании заявило о полном отказе выходить на биржу в обозримом будущем.
Извечный вопрос: повторные вызовы OnTrade, Даже при заявке на одну акцию
Пользователь
Сообщений: Регистрация: 30.01.2015
10.01.2026 15:54:21
Цитата
Nikolay написал: Учет комиссий не решается колбеками и данными из таблиц. Решается же он через обработку отчетов брокера. Комиссия биржи транслируется вместе с сделкой, поэтому её условно можно считать. Брокера же чаще всего транслирует "ерунду". И только в отчете за день будут точные цифры, т.к. они могу зависеть от оборота за день, типа инструмента и др, и в момент сделки точных банально нет. Так что гораздо проще в алгоритм вбить процент либо величину комиссии и учитывать её. А корректировать через разбор отчета брокера.
Комиссия брокера считается в конце дня, так как реально сделки урегулируются лишь после сессии клиринговыми компаниями. Только эти компании могут списывать и зачислять денежные средства в оплату сделок. После получения их отчета, брокер соответственно списывает деньги у клиентов и начисляет свою комиссию.