Сергей Че (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
Робот, торгующий опционами
 
Цитата
VPM написал:
Сергей Че, То это просто среднестатистическое мнение в лучшем случае из 10 сайтов, если не специализированный ИИ. Не упрощаете, а главное не перекладывайте ответственность. Разобраться должны Вы и ни кто другой. Удачи.
Написал письмо Мосбирже. Жду официального ответа.
Робот, торгующий опционами
 
Цитата
nikolz написал:
Нет, классических опционов (на право купить или продать вечный фьючерс) по вечным фьючерсам не существует.
Дело в самой природе этих инструментов.
Опцион — это контракт, который даёт право (но не обязательство) совершить сделку.
У него есть чётко определённый срок действия — дата экспирации.
А у вечного фьючерса этой даты просто нет: он ежедневно автоматически продлевается.
Из-за этого фундаментального различия — у вечного фьючерса нет срока жизни — и инструменты на его основе (включая опционы) не создаются.  tbank.ru  sbersova.ru
При этом важно не запутаться: иногда в разговоре люди смешивают понятия.
На Московской бирже действительно торгуются вечные фьючерсы (например, USDRUBF, IMOEXF, GLDRUBF),
и для них есть опционы — но это опционы на обычные (срочные) фьючерсы, а не на сам вечный контракт.
То есть вы покупаете опцион на ближайший стандартный фьючерс с конкретной датой экспирации, а не на вечный.  
Спасибо!
limit_kind в таблице depo_limit
 
Ух ты, какая интересная тема!
Так что мне теперь передавать в качестве параметра, если я хочу узнать позицию инстумента (акции, фьючерса, опциона), так что чтобы это было универсально для любого инструмента и любого брокера и танцев с бубном? "Tx"?
Я и так в QLua не силён, а тут ещё такое! Разработчики Квика, зачем вы ломаете жизнь алго-трейдерам?
Как получить дату экспирации?
 
Цитата
Йцукен написал:
Цитата
Сергей Че написал:
Число в формате ГГГГММДД?
Да
Спасибо
Как получить дату экспирации?
 
Цитата
Йцукен написал:
Цитата
Сергей Че написал:
Точно EXPDATE?
Я указал названия параметров для getParamEx2.
Думаю для getSecurityInfo это будет соответствовать exp_date
А какой результат даёт функция getSecurityInfo для exp_date? Число в формате ГГГГММДД?
Как получить дату экспирации?
 
Цитата
Йцукен написал:
Для фьючерсов
MAT_DATE - последний день обращения
EXPDATE - дата экспирации
В обоих случаях число вида ГГГГММДД
Точно EXPDATE?
В документации написано маленькими буквами и через подчёркивание

Как получить дату экспирации?
 
Цитата
VPM написал:
Так просто выведите и возьмите что нужно. Попробуйте так.

Не могли бы вы скопировать сюда результаты работы функции getSecurityInfo для любого фьючерса и опциона?
Заранее благодарю.
Как получить дату экспирации?
 
local t = getSecurityInfo( class_code, sec_code )
t.mat_date - это не дата экспирации, а дата погашения, и это относится к облигациям.
t.exp_date - это как раз дата погашения в виде числа. Но какого вида это число? ДДММГГ? ДДММГГГГ? ГГММДД? ГГГГММДД?
Зомби стоп-ордеры?
 
В принципе, чтобы не париться на тему, что стоп-ордер будет жить после смерти базового инструмента, можно явно выставить срок годности стоп-ордера.
Для акций можно задать EXPIRY_DATE="GTC", а для срочных интрументов - дату его экспирации.
Только я так и не понял, в каком формате задавать эту дату при создании стоп-ордера: ДДММГГ, ДДММГГГГ, ГГММДД или ГГГГММДД?
Зомби стоп-ордеры?
 
Что происходит со стоп-ордерами, которые запрограммированы на покупку/продажу инстумента, которого уже не существует?
Например, на продажу фьючерса, который перестал существовать, потому что прошла дата его экспирации.
Эти бессмысленные стоп-ордеры автоматически удаляются из системы? Или так и остаюся существовать в системе как зомби? И если да, то как их удалить?
UTF-8 или Windows-1251
 
Цитата
Oleg Kuzembaev написал:
Можем предложить зарегистрировать пожелание на доработку будущих версий. Регистрируем?
КОНЕЧНО! ОБЯЗАТЕЛЬНО!
UTF-8 или Windows-1251
 
QUIK по-прежнему понимает только скрипты в старой кодировке Windows-1251?
Или всё-таки разваботчики сделали шаг вперёд и внедрили полноценную поддержку скриптов в кодировке UTF-8?
Робот, торгующий опционами
 
Переформулирую вопрос. Может ли вечный фьючерс быть базовым активом для опциона? Или только обычный фьючерс может быть таковым?
Думаю, что вечный фьючерс не может, потому что у него экспирация каждый день, а производный инструмент (опцион) не может жить дольше, чем базовый актив.
Робот, торгующий опционами
 
Бывают ли опционы на вечные фьючерсы? Или только на обычные?
Робот, торгующий опционами
 
Цитата
funduk написал:
Сергей Че, по природному газу, да и по серебру, есть нецелые страйки, тем более по юаню.
Я уже разобрался. Мне пришёл официальный ответ от Мосбиржи.
Страйк может быть ЛЮБЫМ числом - и дробным, и нулевым, и даже отрицательным. В общем, теоретически - любым вещественным числом.
Как точно определить, можно ли в данный момент торговать или нет?
 
Точнее, ориентироваться на ==1 и ~=1
Как точно определить, можно ли в данный момент торговать или нет?
 
Цитата
Nikolay написал:
Затем, что в каких-то режимах можно устанавливать заявки, а в каких-то нет. Также разные допустимые диапазоны цен.

Например, в аукцион можно подать заявку, но диапазон цен намного уже обычной сессии.

Аукцион открытия и закрытия - это разные аукционы, тоже иногда необходимо понимать.
Дискретный аукцион - это вообще в режиме стоп торгов при достижении лимита волатильности.

Т.о. это всё не просто про можно-нельзя, а про текущий статус торговой сессии.
Сложно и непонятно. Короче, надо ориентироваться на 0/1 и всё.
Как точно определить, можно ли в данный момент торговать или нет?
 
Цитата
tohoki написал:

tonumber ( значение tradingstatus) == 1 - значит можно торговать

вообще коды такие:
0 - закрыта
1 - открыта
2 - закрытие
3 - открытие
4 - аукцион
5 - ЦАЗ
6 - дискретный аукцион

Для срочной секции только 0 и 1.  Вообще поведение параметра на инструментах , которые НЕАКЦИИ, имеет определенный сексуальный аспект, детали которого я не смог осознать.

А если значение >= 2 значит нельзя торговать? Или можно, но не желательно?
И вообще зачем столько значений, если по факту важны только 2 значения: можно в данный момент купить/продать или нельзя.
Как точно определить, можно ли в данный момент торговать или нет?
 
Цитата
Nikolay написал:
Раньше для срочной секции можно было получать параметр CLSTATE - Статус клиринга, чтобы понимать в каком клиринге. Теперь же, после 23.03.2026 многие брокеры перестали его транслировать корректно.
Спасибо, а то у меня как раз были вопросы о CLSTATE и нафиг он теперь нужен.
Как точно определить, можно ли в данный момент торговать или нет?
 
Цитата
Nikolay написал:
Запрашивать необходимо TRADINGSTATUS, т.к. по инструменту могут быть стоп торги. STATUS - это просто, что допущен к торговле.
А т.к. стоп может быть в любую секунду, хотя другие инструменты торгуются, то и запрашивать необходимо постоянно или хотя бы перед торговой операцией.
Какие значения TRADINGSTATUS говорят, что можно торговать?
Как точно определить, можно ли в данный момент торговать или нет?
 
Проверка, можно ли торговать
1) проверка времени (с 08:50 до 23:50)
2) isConnected() == 1
3) tonumber( getParamEx( сlass_сode,  sec_code, "STATUS" ).param_value) == 1

Поправьте меня, если я не прав.
Как точно определить, можно ли в данный момент торговать или нет?
 
Цитата
23 марта 2026 года срочный рынок Московской биржи переходит на единую торговую сессию (ЕТС).

Среди основных изменений – отмена промежуточного клиринга и перенос основного клиринга на конец торгового дня, что позволит клиентам совершать сделки в любое удобное время в период торгового дня и оперативно реагировать на изменения цен.
Торги на срочном рынке, как и ранее, будут проводиться с 8:50 до 23:50: утренняя дополнительная торговая сессия будет с 8:50 до 10:00, основная торговая сессия – с 10:00 до 19:00, вечерние торги – с 19:00 до 23:50.

Торги будут проводиться бесшовно, без приостановок на клиринг.

Вечерняя торговая сессия станет частью текущего торгового дня, ранее она относилась к следующему торговому дню. Новый формат торгового расписания станет более логичным и удобным для совершения операций как профессиональными участниками рынка, так и частными инвесторами: торговый день и календарный день будут синхронизированы, за исключением дополнительной сессии выходного дня, которая является частью следующего рабочего торгового дня

https://www.moex.com/n95317

Как точно определить, можно ли в данный момент торговать или нет?
Прошивать в скрипте время с 08:50 до 23:50 ? Или запрашивать параметр TRADINGSTATUS ?
А на фондовом рынке какое расписание? С 06:50 до 23:50 без остановок, как и на срочном рынке?
А какое расписание торгов в выходные дни?

Если ли способ, не прошивая в торговый робот расписание, точно определить можно ли в данный момент торговать акцией, фьючерсом, опционом?
Внешние Lua-модули
 
Цитата
Kolossi написал:
Я пользую
json = require("dkjson")

Модуль dkjson.lua кладется в основную папку квик.
Спасибо за идею. Я уже нашёл модуль для парсинга json-строк, который написан на чистом Lua и не требует установки в систему через менеджер luarocks.
Только этот файл надо кидать не в папку квика, а в ту папку, откуда стартует торговый робот, а эта папка может находиться где угодно.
Внешние Lua-модули
 
Будет ли 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

Будет такой код работать в торговом роботе?
Робот, торгующий опционами
 
Цитата
Nikolay написал:
Лотность обычно приведёт его к целому числу.

А вот и нет. Шаг цены фьючерса на нефть = $0.01. Лотность фьючерса = 10. А страйки идут с шагом $1.
Робот, торгующий опционами
 
Цена фьючерса на нефть имеет шаг 0.01 (то есть 0.01$, так как цена измеряется в $).
Но опцион на фьючерс на нефть имеет шаг 1$, то есть в 100 раз больший, чем шаг БА (базовый актив).
Вопрос. Шаг опциона - это всегда целое число или оно может быть дробным, как шаг его БА?
Робот, торгующий опционами
 
Цитата
nikolz написал:
Это самый рискованный инструмент для торговли.  

Опцион - это самый доходный инструмент из имеющихся, но не самый рискованный.
Самый рискованный - это как раз фьючерс.
Если не продавать, а только покупать опционы, то твой маскимальный убыток - это деньги, которые ты заплатил за опционы.
Во фьючерсах же максимальный убыток не ограничен, и можно просто обнулиться (если не следить за позицией), сколько бы у тебя денег ни было на счету.
Робот, торгующий опционами
 
Что такое DDE?
Робот, торгующий опционами
 
Цитата
nikolz написал:
Страйк (цена) задаётся биржей при формировании спецификации контракта.
Биржа определяет все параметры опциона, кроме премии, которую устанавливают стороны сделки.
Как программно узнать текущую цену (премию) опциона? Это нужно знать, что рассчитать сколько опционов я могу купить, исходя из имеющихся свободных денег.
Для фюьчерсов - это ГО, и оно узнаётся легко через запрос парамтров BUY_DEPO и SELL_DEPO.
А для опционов как?
Робот, торгующий опционами
 
Цитата
Nikolay написал:
Вы можете исходя из текущей цены фьючерса, с неким шагом цены, строить коды опционов по спецификации и проверять наличие такого инструмента.
То есть я беру текущую цену фьючерса, умножаю на его лотность, и от этой цены иду в сторону увеличения цены с шагом цены фьючерса, и на каждом шаге составляю строку с потенциальным кодом опциона, и затем проверяю, существует ли он. Так?
Робот, торгующий опционами
 
Шаг страйков совпадает с щагом цены базового актива или нет?
Робот, торгующий опционами
 
Цитата
Nikolay написал:
Не очень понятен вопрос, т.к. это просто инструмент, такой же, по сути, как RIM6 SPBFUT. Методы получения данных те же, метода работы с заявками тоже.
Страйк это не какой-то параметр, а данные инструмента, т.е. каждый страйк это отдельный инструмент. Поэтому необходимо просто посмотреть спецификацию формирования кода опциона и выбирать необходимые.
Тот же RIM6 - это код инструмента. RI - контракт на фьючерс РТС. M - месяц экспирации (июнь). 6 - год. С опционами также, но просто методика формирования кода более сложная.
Как программно узнать список всех страйков для заданного инструмента, скажем RI, и стакан для каждого страйка?
Робот, торгующий опционами
 
Товарищи, может ли кто-нибудь из вас поделиться (если не жалко) торговым роботом, торгующим опционами.
Хотя бы простой робот - подгрузка доски опционов, выбор инструмента с определённой датой экспирации, покупка/продажа CALL/PUT с определённым страйком.
Коллбек OnTrade
 
Цитата
Nikolay написал:
Цена всегда за акцию. Лот - это минимально возможное число единиц для покупки на основной секции. Т.е. можно купить 1 лот, где 10 акций. Значит необходимо заплатить цена*10.
Есть ещё специальная секция для торговли неполными лотами, т.е. можно совершать сделки не лотами, а единицами акций.
Спасибо.
По-моему лоты - это глупая придумка, которая только сбивает с толку.
Торговля акциями (и вообще любыми инструментами) должна быть поштучной.
А чтобы не придумывать лоты для торговли супердешёвыми акциями, нужно просто ввести требования для всех эмитентов, что минимальная цена акции должна быть 100 рублей.
Коллбек OnTrade
 
Цитата
nikolz написал:
      Описание параметров Таблицы сделок
А price - это цена за акцию или за лот?
Коллбек OnTrade
 
Если я, к примеру, покупаю акции, то в коллбеке OnTrade(trade) ...
trade.price - цена за акцию или за лот?
trade.qty - количество купленных акций или лотов?

Всегда путаюсь.
Рыночная заявка для торговли фьючерсами
 
Цитата
Ziveleos написал:
Цитата
Сергей Че написал:
Ну явно указать CONDITION не помешает.
Указать параметр PLANET = "SATURN" тоже не помешает. Он, как и CONDITION,  будет просто проигнорирован.
Повторяю: CONDITION - это параметр  Таблицы стоп-заявок .
В транзакциях он  не используется .

Спасибо за информацию. Я не знал.А поле PRICE надо указывать равным нулю, если в стоп-ордере MARKET_STOP_LIMIT="YES", или цену тоже нет смысла указаывать, потому что она будет проигнорирована?
Рыночная заявка для торговли фьючерсами
 
Цитата
Nikolay написал:
Цитата
это аналогично созданию потока данных
Не совсем так. Это ближе к чтению из таблицы текущих торгов. Если стакан открыт, т.е. поток данных уже есть, то можно читать без заказа. Поэтому и есть метод проверки существующего потока.

Колбек нужен для определения, что данные изменились. Если надо просто прочитать, то особого смысла в нем нет.
Спасибо
Рыночная заявка для торговли фьючерсами
 
Цитата
Nikolay написал:
Если нужен именно весь стакан, то да, лучше заказать один раз и не закрывать. Хотя можете просто открыть руками в самом Квике.
Читать же можете только в необходимое время.

Насколько я понял, заказ котировок через Subscribe_Level_II_Quotes() — это аналогично созданию потока данных через CreateDataSource(), который возвращает данные по свечкам, чтобы в самом Квике ничего не открывать и не держать открытым.

Надо подписаться на потоки котировок всех торгуемых инструментов в функции main() и потом получать данные стаканов, когда надо, через вызов getQuoteLevel2().


Нужно ли при этом использовать коллбек OnQuote() или это необязательно?
Рыночная заявка для торговли фьючерсами
 
Цитата
Nikolay написал:
Цитата
Сергей Че написал:

Чтобы прочитать данные из стакана, достаточно просто вызвать функцию   getQuoteLevel2(...)   ?Или ещё надо предваритель в   OnInit()   прописать заказ котировок   Subscribe_Level_II_Quotes(...)  
Если он не открыт, то надо вызвать Subscribe_Level_II_Quotes. Хотя можно проверить открыт есть ли поток данных через IsSubscribed_Level_II_Quotes, и если нет, тогда и заказать.
Делать это можно не в OnInit. Я бы даже сказал, что это точно не надо делать в OnInit.

Мне не надо постоянно получать данные из стакана в коллбеке, а только в момент, когда хочу купить/продать инструмент, чтобы проанализировать глубину рынка.

Всё равно предварительно заказывать котировки по всем инструментам, которыми буду торговать?
Рыночная заявка для торговли фьючерсами
 
Цитата
nikolz написал:
Спасибо, конечно, за примеры транзакций, но ты так и не ответил на мой вопрос про запрос данных из стакана.
Рыночная заявка для торговли фьючерсами
 
Цитата
Ziveleos написал:
Цитата
Сергей Че написал:
OPERATION = 'B'|'S' недостаточно, чтобы задать, как должен работать стоп.

Достаточно.

Ну явно указать CONDITION не помешает.
Рыночная заявка для торговли фьючерсами
 
Цитата
nikolz написал:
Можно читать из ТТП. Можно читать стакан.  Затраты времени не большие.

Чтобы прочитать данные из стакана, достаточно просто вызвать функцию getQuoteLevel2(...) ?Или ещё надо предваритель в OnInit() прописать заказ котировок Subscribe_Level_II_Quotes(...)
Рыночная заявка для торговли фьючерсами
 
Цитата
Ziveleos написал:
Цитата
Сергей Че написал:А какая направленность стоп-цены (  CONDITION  ) в данном случае?
 CONDITION="4"   (<=) или   CONDITION=    "5"   (>=) ?
И почему она тут не указана? Разве это поле можно опустить?
Я  так понимаю, направленность стоп-цены -- это какое должно быть  отношение рыночной цены к стоп-цене для того, чтобы стоп сработал.
То есть, если я закрываю лонг, то я продаю, когда рыночная цена станет  меньше или равной  (<=) (  CONDITION="4"  ) стоп-цены.
А если я закрываю шорт, то я покупаю, когда рыночная цена станет  больше или равной  (>=) (  CONDITION="5"  ) стоп-цены.
Всё верно?
Направленность определяется параметром OPERATION.
CONDITION - это параметр Таблицы стоп-заявок.


OPERATION = 'B'|'S' недостаточно, чтобы задать, как должен работать стоп.
Рыночная цена может быть как выше, как и ниже стоп-цены, и в процессе движения рыночная цена может пересекать стоп-цену как снизу вверх, так и сверху вниз. И для того, чтобы исключить неопределённость и точно определить, при каком пересечении стоп должен сработать, в параметры транзакции и указывают CONDITION = '4'|'5'
Рыночная заявка для торговли фьючерсами
 
Цитата
Ziveleos написал:
Цитата
Сергей Че написал: Вот так?
Почти всё верно. PRICE - это цена выставляемой лимитки, если MARKET_STOP_LIMIT = "NO",
параметра PRICE2 не существует.

Вот проверенный вариант:
Код
     local  newStop  =  {
        ACTION  =   "NEW_STOP_ORDER" ,
        STOP_ORDER_KIND  =   "TAKE_PROFIT_AND_STOP_LIMIT_ORDER" ,
        OPERATION  =   "B" ,  -- B/S 
        QUANTITY  =   "10" ,  -- Количество лотов 
        STOPPRICE2  =   "71500" ,  -- Цена стопа 
        MARKET_STOP_LIMIT  =   "YES" ,
        ACCOUNT  =  account,
        CLASSCODE  =  class,
        SECCODE  =  sec_code,
        TRANS_ID  =   "123456" ,
        EXPIRY_DATE  =   "GTC"   -- Срок действия "до отмены" 
            }
   local  res  =   sendTransaction (newStop)
  

А какая направленность стоп-цены (CONDITION) в данном случае?
CONDITION="4" (<=) или CONDITION="5" (>=) ?
И почему она тут не указана? Разве это поле можно опустить?
Я так понимаю, направленность стоп-цены -- это какое должно быть отношение рыночной цены к стоп-цене для того, чтобы стоп сработал.
То есть, если я закрываю лонг, то я продаю, когда рыночная цена станет меньше или равной (<=) (CONDITION="4") стоп-цены.
А если я закрываю шорт, то я покупаю, когда рыночная цена станет больше или равной (>=) (CONDITION="5") стоп-цены.
Всё верно?
Рыночная заявка для торговли фьючерсами
 
Цитата
Ziveleos написал:
Вот проверенный вариант:
Большое спасибо!

И небольшое уточнение.
Это будет работать у всех брокеров, работающих на бирже через QUIK?
Если я в будущем перейду на другой брокер, прежние скрипты будут так же исправно работать?
Рыночная заявка для торговли фьючерсами
 
Цитата
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"


Подправьте меня, если я что-то упустил.
Рыночная заявка для торговли фьючерсами
 
Цитата
Ziveleos написал:
Цитата
Сергей Че написал:
Я искал не в том документе. Я искал в "Интерпретатор языка Lua", а надо было в "Руководство пользователя QUIK".
Искал-то правильно, это документация у них "своеобразная".

Цитата
Сергей Че написал:
Вопрос. Это действует для любого рынка: фондового и срочного?
Для любого.
Вот что ещё я выяснил, листая старые тему на этом форуме
Цитата
В "обычных" стоп заявка нет признака рыночной, есть только в "тейк профит и стоп лимит" (STOP_ORDER_KIND=TAKE_PROFIT_AND_STOP_LIMIT_ORDER), при этом можно не указывать "тейк профит", а указать значение в "стоп лимите". И будет работать.
Это правда?
Рыночная заявка для торговли фьючерсами
 
Цитата
Ziveleos написал:
Ну, такая у артели "Арка" документация...
Узнать можно нажав F1 > Раздел 6. Совместная работа с другими приложениями > Импорт транзакций > Фиксированный формат файла импорта транзакций > Формат .tri-файла с параметрами транзакций.

Или сохранить нужный Вам стоп-лосс в "Кармане транзакций", и воспользоваться этим:  https://forum.quik.ru/messages/forum17/message77039/topic8828/#message77039
Нашёл таки информацию в их документации.

Я искал не в том документе. Я искал в "Интерпретатор языка Lua", а надо было в "Руководство пользователя QUIK".

Вопрос. Это действует для любого рынка: фондового и срочного?
Рыночная заявка для торговли фьючерсами
 
Цитата
Ziveleos написал:
Вот она:  #31
А откуда я должен был узнать о поле MARKET_STOP_LIMIT, если в официальной документации об этом нет ничего?
Страницы: 1 2 3 След.
Наверх