VPM написал: , То это просто среднестатистическое мнение в лучшем случае из 10 сайтов, если не специализированный ИИ. Не упрощаете, а главное не перекладывайте ответственность. Разобраться должны Вы и ни кто другой. Удачи.
Написал письмо Мосбирже. Жду официального ответа.
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
18.07.2026 17:58:58
Цитата
nikolz написал: Нет, классических опционов (на право купить или продать вечный фьючерс) по вечным фьючерсам не существует. Дело в самой природе этих инструментов. Опцион — это контракт, который даёт право (но не обязательство) совершить сделку. У него есть чётко определённый срок действия — дата экспирации. А у вечного фьючерса этой даты просто нет: он ежедневно автоматически продлевается. Из-за этого фундаментального различия — у вечного фьючерса нет срока жизни — и инструменты на его основе (включая опционы) не создаются. При этом важно не запутаться: иногда в разговоре люди смешивают понятия. На Московской бирже действительно торгуются вечные фьючерсы (например, USDRUBF, IMOEXF, GLDRUBF), и для них есть опционы — но это опционы на обычные (срочные) фьючерсы, а не на сам вечный контракт. То есть вы покупаете опцион на ближайший стандартный фьючерс с конкретной датой экспирации, а не на вечный.
Спасибо!
limit_kind в таблице depo_limit
Пользователь
Сообщений: Регистрация: 30.10.2024
17.07.2026 22:20:23
Ух ты, какая интересная тема! Так что мне теперь передавать в качестве параметра, если я хочу узнать позицию инстумента (акции, фьючерса, опциона), так что чтобы это было универсально для любого инструмента и любого брокера и танцев с бубном? "Tx"? Я и так в QLua не силён, а тут ещё такое! Разработчики Квика, зачем вы ломаете жизнь алго-трейдерам?
Я указал названия параметров для getParamEx2. Думаю для getSecurityInfo это будет соответствовать exp_date
А какой результат даёт функция getSecurityInfo для exp_date? Число в формате ГГГГММДД?
Как получить дату экспирации?
Пользователь
Сообщений: Регистрация: 30.10.2024
16.07.2026 18:21:47
Цитата
Йцукен написал: Для фьючерсов MAT_DATE - последний день обращения EXPDATE - дата экспирации В обоих случаях число вида ГГГГММДД
Точно EXPDATE? В документации написано маленькими буквами и через подчёркивание
Как получить дату экспирации?
Пользователь
Сообщений: Регистрация: 30.10.2024
15.07.2026 20:16:01
Цитата
VPM написал: Так просто выведите и возьмите что нужно. Попробуйте так.
Не могли бы вы скопировать сюда результаты работы функции getSecurityInfo для любого фьючерса и опциона? Заранее благодарю.
Как получить дату экспирации?
Пользователь
Сообщений: Регистрация: 30.10.2024
13.07.2026 21:58:12
local t = getSecurityInfo( class_code, sec_code ) t.mat_date - это не дата экспирации, а дата погашения, и это относится к облигациям. t.exp_date - это как раз дата погашения в виде числа. Но какого вида это число? ДДММГГ? ДДММГГГГ? ГГММДД? ГГГГММДД?
Зомби стоп-ордеры?
Пользователь
Сообщений: Регистрация: 30.10.2024
09.07.2026 04:45:33
В принципе, чтобы не париться на тему, что стоп-ордер будет жить после смерти базового инструмента, можно явно выставить срок годности стоп-ордера. Для акций можно задать EXPIRY_DATE="GTC", а для срочных интрументов - дату его экспирации. Только я так и не понял, в каком формате задавать эту дату при создании стоп-ордера: ДДММГГ, ДДММГГГГ, ГГММДД или ГГГГММДД?
Зомби стоп-ордеры?
Пользователь
Сообщений: Регистрация: 30.10.2024
08.07.2026 03:59:40
Что происходит со стоп-ордерами, которые запрограммированы на покупку/продажу инстумента, которого уже не существует? Например, на продажу фьючерса, который перестал существовать, потому что прошла дата его экспирации. Эти бессмысленные стоп-ордеры автоматически удаляются из системы? Или так и остаюся существовать в системе как зомби? И если да, то как их удалить?
QUIK по-прежнему понимает только скрипты в старой кодировке Windows-1251? Или всё-таки разваботчики сделали шаг вперёд и внедрили полноценную поддержку скриптов в кодировке UTF-8?
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
01.07.2026 22:09:30
Переформулирую вопрос. Может ли вечный фьючерс быть базовым активом для опциона? Или только обычный фьючерс может быть таковым? Думаю, что вечный фьючерс не может, потому что у него экспирация каждый день, а производный инструмент (опцион) не может жить дольше, чем базовый актив.
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
30.06.2026 23:53:02
Бывают ли опционы на вечные фьючерсы? Или только на обычные?
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
28.06.2026 02:03:53
Цитата
funduk написал: , по природному газу, да и по серебру, есть нецелые страйки, тем более по юаню.
Я уже разобрался. Мне пришёл официальный ответ от Мосбиржи. Страйк может быть ЛЮБЫМ числом - и дробным, и нулевым, и даже отрицательным. В общем, теоретически - любым вещественным числом.
Как точно определить, можно ли в данный момент торговать или нет?
Пользователь
Сообщений: Регистрация: 30.10.2024
23.06.2026 16:53:59
Точнее, ориентироваться на ==1 и ~=1
Как точно определить, можно ли в данный момент торговать или нет?
Пользователь
Сообщений: Регистрация: 30.10.2024
23.06.2026 15:14:24
Цитата
Nikolay написал: Затем, что в каких-то режимах можно устанавливать заявки, а в каких-то нет. Также разные допустимые диапазоны цен.
Например, в аукцион можно подать заявку, но диапазон цен намного уже обычной сессии.
Аукцион открытия и закрытия - это разные аукционы, тоже иногда необходимо понимать. Дискретный аукцион - это вообще в режиме стоп торгов при достижении лимита волатильности.
Т.о. это всё не просто про можно-нельзя, а про текущий статус торговой сессии.
Сложно и непонятно. Короче, надо ориентироваться на 0/1 и всё.
Как точно определить, можно ли в данный момент торговать или нет?
tonumber ( значение tradingstatus) == 1 - значит можно торговать
вообще коды такие: 0 - закрыта 1 - открыта 2 - закрытие 3 - открытие 4 - аукцион 5 - ЦАЗ 6 - дискретный аукцион
Для срочной секции только 0 и 1. Вообще поведение параметра на инструментах , которые НЕАКЦИИ, имеет определенный сексуальный аспект, детали которого я не смог осознать.
А если значение >= 2 значит нельзя торговать? Или можно, но не желательно? И вообще зачем столько значений, если по факту важны только 2 значения: можно в данный момент купить/продать или нельзя.
Как точно определить, можно ли в данный момент торговать или нет?
Пользователь
Сообщений: Регистрация: 30.10.2024
23.06.2026 14:31:42
Цитата
Nikolay написал: Раньше для срочной секции можно было получать параметр CLSTATE - Статус клиринга, чтобы понимать в каком клиринге. Теперь же, после 23.03.2026 многие брокеры перестали его транслировать корректно.
Спасибо, а то у меня как раз были вопросы о CLSTATE и нафиг он теперь нужен.
Как точно определить, можно ли в данный момент торговать или нет?
Пользователь
Сообщений: Регистрация: 30.10.2024
22.06.2026 18:06:47
Цитата
Nikolay написал: Запрашивать необходимо TRADINGSTATUS, т.к. по инструменту могут быть стоп торги. STATUS - это просто, что допущен к торговле. А т.к. стоп может быть в любую секунду, хотя другие инструменты торгуются, то и запрашивать необходимо постоянно или хотя бы перед торговой операцией.
Какие значения TRADINGSTATUS говорят, что можно торговать?
Как точно определить, можно ли в данный момент торговать или нет?
Пользователь
Сообщений: Регистрация: 30.10.2024
22.06.2026 17:13:10
Проверка, можно ли торговать 1) проверка времени (с 08:50 до 23:50) 2) isConnected() == 1 3) tonumber( getParamEx( сlass_сode, sec_code, "STATUS" ).param_value) == 1
Поправьте меня, если я не прав.
Как точно определить, можно ли в данный момент торговать или нет?
Пользователь
Сообщений: Регистрация: 30.10.2024
21.06.2026 19:59:29
Цитата
23 марта 2026 года срочный рынок Московской биржи переходит на единую торговую сессию (ЕТС).
Среди основных изменений – отмена промежуточного клиринга и перенос основного клиринга на конец торгового дня, что позволит клиентам совершать сделки в любое удобное время в период торгового дня и оперативно реагировать на изменения цен. Торги на срочном рынке, как и ранее, будут проводиться с 8:50 до 23:50: утренняя дополнительная торговая сессия будет с 8:50 до 10:00, основная торговая сессия – с 10:00 до 19:00, вечерние торги – с 19:00 до 23:50.
Торги будут проводиться бесшовно, без приостановок на клиринг.
Вечерняя торговая сессия станет частью текущего торгового дня, ранее она относилась к следующему торговому дню. Новый формат торгового расписания станет более логичным и удобным для совершения операций как профессиональными участниками рынка, так и частными инвесторами: торговый день и календарный день будут синхронизированы, за исключением дополнительной сессии выходного дня, которая является частью следующего рабочего торгового дня
Как точно определить, можно ли в данный момент торговать или нет? Прошивать в скрипте время с 08:50 до 23:50 ? Или запрашивать параметр TRADINGSTATUS? А на фондовом рынке какое расписание? С 06:50 до 23:50 без остановок, как и на срочном рынке? А какое расписание торгов в выходные дни?
Если лиспособ, не прошивая в торговый робот расписание, точно определить можно ли в данный момент торговать акцией, фьючерсом, опционом?
Внешние Lua-модули
Пользователь
Сообщений: Регистрация: 30.10.2024
12.06.2026 14:43:23
Цитата
Kolossi написал: Я пользую json = require("dkjson")
Модуль dkjson.lua кладется в основную папку квик.
Спасибо за идею. Я уже нашёл модуль для парсинга json-строк, который написан на чистом Lua и не требует установки в систему через менеджер luarocks. Только этот файл надо кидать не в папку квика, а в ту папку, откуда стартует торговый робот, а эта папка может находиться где угодно.
Внешние Lua-модули
Пользователь
Сообщений: Регистрация: 30.10.2024
06.06.2026 14:44:07
Будет ли Lua виртуальная машина, встроенная в QUIK, корректно работать с внешними (не встроенными в язык) модулями, которые я установил в свою систему через менеджер модулей luarocks?
К примеру мне нужен модуль для распарсивания JSON данных.
В Linux-консоли...
Код
$ sudo luarocks install lua-cjson
В коде торгового робота...
Код
local json = require( 'cjson' )
local tbl = json.decode( json_string ) -- JSON string -> Lua table
local json_string = json.encode( tbl ) -- Lua table -> JSON strin
Будет такой код работать в торговом роботе?
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
09.05.2026 17:21:35
Цитата
Nikolay написал: Лотность обычно приведёт его к целому числу.
А вот и нет. Шаг цены фьючерса на нефть = $0.01. Лотность фьючерса = 10. А страйки идут с шагом $1.
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
09.05.2026 06:19:19
Цена фьючерса на нефть имеет шаг 0.01 (то есть 0.01$, так как цена измеряется в $). Но опцион на фьючерс на нефть имеет шаг 1$, то есть в 100 раз больший, чем шаг БА (базовый актив). Вопрос. Шаг опциона - это всегда целое число или оно может быть дробным, как шаг его БА?
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
05.05.2026 17:55:28
Цитата
nikolz написал: Это самый рискованный инструмент для торговли.
Опцион - это самый доходный инструмент из имеющихся, но не самый рискованный. Самый рискованный - это как раз фьючерс. Если не продавать, а только покупать опционы, то твой маскимальный убыток - это деньги, которые ты заплатил за опционы. Во фьючерсах же максимальный убыток не ограничен, и можно просто обнулиться (если не следить за позицией), сколько бы у тебя денег ни было на счету.
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
05.05.2026 16:00:04
Что такое DDE?
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
05.05.2026 15:49:50
Цитата
nikolz написал: Страйк (цена) задаётся биржей при формировании спецификации контракта. Биржа определяет все параметры опциона, кроме премии, которую устанавливают стороны сделки.
Как программно узнать текущую цену (премию) опциона? Это нужно знать, что рассчитать сколько опционов я могу купить, исходя из имеющихся свободных денег. Для фюьчерсов - это ГО, и оно узнаётся легко через запрос парамтров BUY_DEPO и SELL_DEPO. А для опционов как?
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
04.05.2026 18:08:55
Цитата
Nikolay написал: Вы можете исходя из текущей цены фьючерса, с неким шагом цены, строить коды опционов по спецификации и проверять наличие такого инструмента.
То есть я беру текущую цену фьючерса, умножаю на его лотность, и от этой цены иду в сторону увеличения цены с шагом цены фьючерса, и на каждом шаге составляю строку с потенциальным кодом опциона, и затем проверяю, существует ли он. Так?
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
04.05.2026 16:41:26
Шаг страйков совпадает с щагом цены базового актива или нет?
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
04.05.2026 16:01:56
Цитата
Nikolay написал: Не очень понятен вопрос, т.к. это просто инструмент, такой же, по сути, как RIM6 SPBFUT. Методы получения данных те же, метода работы с заявками тоже. Страйк это не какой-то параметр, а данные инструмента, т.е. каждый страйк это отдельный инструмент. Поэтому необходимо просто посмотреть спецификацию формирования кода опциона и выбирать необходимые. Тот же RIM6 - это код инструмента. RI - контракт на фьючерс РТС. M - месяц экспирации (июнь). 6 - год. С опционами также, но просто методика формирования кода более сложная.
Как программно узнать список всех страйков для заданного инструмента, скажем RI, и стакан для каждого страйка?
Робот, торгующий опционами
Пользователь
Сообщений: Регистрация: 30.10.2024
03.05.2026 22:08:57
Товарищи, может ли кто-нибудь из вас поделиться (если не жалко) торговым роботом, торгующим опционами. Хотя бы простой робот - подгрузка доски опционов, выбор инструмента с определённой датой экспирации, покупка/продажа CALL/PUT с определённым страйком.
Коллбек OnTrade
Пользователь
Сообщений: Регистрация: 30.10.2024
09.04.2026 17:41:10
Цитата
Nikolay написал: Цена всегда за акцию. Лот - это минимально возможное число единиц для покупки на основной секции. Т.е. можно купить 1 лот, где 10 акций. Значит необходимо заплатить цена*10. Есть ещё специальная секция для торговли неполными лотами, т.е. можно совершать сделки не лотами, а единицами акций.
Спасибо. По-моему лоты - это глупая придумка, которая только сбивает с толку. Торговля акциями (и вообще любыми инструментами) должна быть поштучной. А чтобы не придумывать лоты для торговли супердешёвыми акциями, нужно просто ввести требования для всех эмитентов, что минимальная цена акции должна быть 100 рублей.
Коллбек OnTrade
Пользователь
Сообщений: Регистрация: 30.10.2024
09.04.2026 17:04:28
Цитата
nikolz написал: Описание параметров Таблицы сделок
А price - это цена за акцию или за лот?
Коллбек OnTrade
Пользователь
Сообщений: Регистрация: 30.10.2024
09.04.2026 06:24:05
Если я, к примеру, покупаю акции, то в коллбеке OnTrade(trade) ... trade.price - цена за акцию или за лот? trade.qty - количество купленных акций или лотов?
Указать параметр PLANET = "SATURN" тоже не помешает. Он, как и CONDITION, будет просто проигнорирован. Повторяю: CONDITION - это параметр Таблицы стоп-заявок . В транзакциях он не используется .
Спасибо за информацию. Я не знал.А поле PRICE надо указывать равным нулю, если в стоп-ордере MARKET_STOP_LIMIT="YES", или цену тоже нет смысла указаывать, потому что она будет проигнорирована?
Не совсем так. Это ближе к чтению из таблицы текущих торгов. Если стакан открыт, т.е. поток данных уже есть, то можно читать без заказа. Поэтому и есть метод проверки существующего потока.
Колбек нужен для определения, что данные изменились. Если надо просто прочитать, то особого смысла в нем нет.
Спасибо
Рыночная заявка для торговли фьючерсами
Пользователь
Сообщений: Регистрация: 30.10.2024
23.01.2026 12:45:37
Цитата
Nikolay написал: Если нужен именно весь стакан, то да, лучше заказать один раз и не закрывать. Хотя можете просто открыть руками в самом Квике. Читать же можете только в необходимое время.
Насколько я понял, заказ котировок через Subscribe_Level_II_Quotes() — это аналогично созданию потока данных через CreateDataSource(), который возвращает данные по свечкам, чтобы в самом Квике ничего не открывать и не держать открытым.
Надо подписаться на потоки котировок всех торгуемых инструментов в функции main() и потом получать данные стаканов, когда надо, через вызов getQuoteLevel2().
Нужно ли при этом использовать коллбек OnQuote() или это необязательно?
Чтобы прочитать данные из стакана, достаточно просто вызвать функцию getQuoteLevel2(...) ?Или ещё надо предваритель в OnInit() прописать заказ котировок Subscribe_Level_II_Quotes(...)
Если он не открыт, то надо вызвать Subscribe_Level_II_Quotes. Хотя можно проверить открыт есть ли поток данных через IsSubscribed_Level_II_Quotes, и если нет, тогда и заказать. Делать это можно не в OnInit. Я бы даже сказал, что это точно не надо делать в OnInit.
Мне не надо постоянно получать данные из стакана в коллбеке, а только в момент, когда хочу купить/продать инструмент, чтобы проанализировать глубину рынка.
Всё равно предварительно заказывать котировки по всем инструментам, которыми буду торговать?
написал: OPERATION = 'B'|'S' недостаточно, чтобы задать, как должен работать стоп.
Достаточно.
Ну явно указать CONDITION не помешает.
Рыночная заявка для торговли фьючерсами
Пользователь
Сообщений: Регистрация: 30.10.2024
22.01.2026 22:09:58
Цитата
nikolz написал: Можно читать из ТТП. Можно читать стакан. Затраты времени не большие.
Чтобы прочитать данные из стакана, достаточно просто вызвать функцию getQuoteLevel2(...) ?Или ещё надо предваритель в OnInit() прописать заказ котировок Subscribe_Level_II_Quotes(...)
написал:А какая направленность стоп-цены ( CONDITION ) в данном случае? CONDITION="4" (<=) или CONDITION= "5" (>=) ? И почему она тут не указана? Разве это поле можно опустить? Я так понимаю, направленность стоп-цены -- это какое должно быть отношение рыночной цены к стоп-цене для того, чтобы стоп сработал. То есть, если я закрываю лонг, то я продаю, когда рыночная цена станет меньше или равной (<=) ( CONDITION="4" ) стоп-цены. А если я закрываю шорт, то я покупаю, когда рыночная цена станет больше или равной (>=) ( CONDITION="5" ) стоп-цены. Всё верно?
Направленность определяется параметром OPERATION. CONDITION - это параметр Таблицы стоп-заявок.
OPERATION = 'B'|'S' недостаточно, чтобы задать, как должен работать стоп. Рыночная цена может быть как выше, как и ниже стоп-цены, и в процессе движения рыночная цена может пересекать стоп-цену как снизу вверх, так и сверху вниз. И для того, чтобы исключить неопределённость и точно определить, при каком пересечении стоп должен сработать, в параметры транзакции и указывают CONDITION = '4'|'5'
А какая направленность стоп-цены (CONDITION) в данном случае? CONDITION="4" (<=) или CONDITION="5" (>=) ? И почему она тут не указана? Разве это поле можно опустить? Я так понимаю, направленность стоп-цены -- это какое должно быть отношение рыночной цены к стоп-цене для того, чтобы стоп сработал. То есть, если я закрываю лонг, то я продаю, когда рыночная цена станет меньше или равной (<=) (CONDITION="4") стоп-цены. А если я закрываю шорт, то я покупаю, когда рыночная цена станет больше или равной (>=) (CONDITION="5") стоп-цены. Всё верно?
И небольшое уточнение. Это будет работать у всех брокеров, работающих на бирже через QUIK? Если я в будущем перейду на другой брокер, прежние скрипты будут так же исправно работать?
Рыночная заявка для торговли фьючерсами
Пользователь
Сообщений: Регистрация: 30.10.2024
16.01.2026 00:16:57
Цитата
Ziveleos написал: Именно так у меня в скрипте и сделано. На срочном выставляется "TAKE_PROFIT_AND_STOP_LIMIT_ORDER". На фондовом, для инструментов которые нельзя шортить - "ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER".
Для MARKET_STOP_LIMIT = "YES" простой стоп (STOP_ORDER_KIND = "SIMPLE_STOP_ORDER") не подойдёт? Нужен только стоп и тейком (STOP_ORDER_KIND = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER")? А как тогда задать только стоп без тейка?
Вот так? (если я не ошибаюсь) Стоп-цена записывается в STOPRICE2 (просто STOPPRICE и PRICE - это в этом варианте для тейка, которые не надо задавать) PRICE2 = "0" MARKET_STOP_LIMIT = "YES"
написал: Я искал не в том документе. Я искал в "Интерпретатор языка Lua", а надо было в "Руководство пользователя QUIK".
Искал-то правильно, это документация у них "своеобразная".
Цитата
написал: Вопрос. Это действует для любого рынка: фондового и срочного?
Для любого.
Вот что ещё я выяснил, листая старые тему на этом форуме
Цитата
В "обычных" стоп заявка нет признака рыночной, есть только в "тейк профит и стоп лимит" (STOP_ORDER_KIND=TAKE_PROFIT_AND_STOP_LIMIT_ORDER), при этом можно не указывать "тейк профит", а указать значение в "стоп лимите". И будет работать.
Это правда?
Рыночная заявка для торговли фьючерсами
Пользователь
Сообщений: Регистрация: 30.10.2024
15.01.2026 21:42:01
Цитата
Ziveleos написал: Ну, такая у артели "Арка" документация... Узнать можно нажав F1 > Раздел 6. Совместная работа с другими приложениями > Импорт транзакций > Фиксированный формат файла импорта транзакций > Формат .tri-файла с параметрами транзакций.
Или сохранить нужный Вам стоп-лосс в "Кармане транзакций", и воспользоваться этим:
Нашёл таки информацию в их документации.
Я искал не в том документе. Я искал в "Интерпретатор языка Lua", а надо было в "Руководство пользователя QUIK".
Вопрос. Это действует для любого рынка: фондового и срочного?