написал: Вы уж определитесь. Для одного трейдера тут 100 это очень большой отступ, а для другого -- ничто (просто какие-то розовые пони), мол цена перешагнёт эту сотку, не закрыв позицию, и пойдёт дальше.
Проскальзывание не зависит зависит от трейдера. Если рынок ходит по 100 пунктов за тик, то это просто свойство рынка в данный момент. Какая там позиция и что думает трейдер - ему без разницы. Стоп-торги, возобновление и уже новая планка. И так далее. А лимитный ордер от сработавшего стопа так и висит.
Я говорил про 100 шагов цены (и неоднократно использовал именно это слово "шаги"), а не 100 пунктов. Про 100 пунктов я согласен - это мало, это всего 10 шагов индекса РТС, и 4 шага индекса Мосбиржи.
Пользователь
Сообщений: Регистрация: 27.01.2017
15.01.2026 15:23:01
Цитата
Сергей Че написал: Я говорил про 100 шагов цены (и неоднократно использовал именно это слово "шаги"), а не 100 пунктов. Про 100 пунктов я согласен - это мало, это всего 10 шагов индекса РТС, и 4 шага индекса Мосбиржи.
Ну так для Si 100 шагов = 100 пунктов. Это не особо важно. 100 шагов - это мало. Если думаете, что РТС не может шагать по 100 шагов, то обязательно поймаете такое событие. Впрочем, на моей памяти такое было не раз с 2008 года.
написал: Я говорил про 100 шагов цены (и неоднократно использовал именно это слово "шаги"), а не 100 пунктов. Про 100 пунктов я согласен - это мало, это всего 10 шагов индекса РТС, и 4 шага индекса Мосбиржи.
Ну так для Si 100 шагов = 100 пунктов. Это не особо важно. 100 шагов - это мало. Если думаете, что РТС не может шагать по 100 шагов, то обязательно поймаете такое событие. Впрочем, на моей памяти такое было не раз с 2008 года.
Окей, какой отступ для стопа вы предлагаете?
Пользователь
Сообщений: Регистрация: 27.01.2017
15.01.2026 16:02:51
Отступ можете ставить хоть 100 шагов. Но важнее другое - наличие алгоритма проверяющего состояние лимитного ордера по исполнению стопа через linkedorder. Если он не исполнился, то перевыставлять стоп от текущей цены или закрывать уже через алгоритм, подавая свой лимитный ордер от текущей цены. И тоже контролируя это, т.к. и от него цена может убежать. Да, такие ситуации не часты, и, скорее всего, 200 шагов хватит за глаза в спокойные дни, но достаточно одного случая, чтобы убыток стал в размер всех средств.
Пользователь
Сообщений: Регистрация: 22.02.2023
15.01.2026 17:15:13
Цитата
Сергей Че написал: Как же неудобно, когда для срочного рынка нет простого и понятного type="M" + price="0", как оно есть для фондового! Приходится изобретать всякие костыли.
Повторю ещё раз: MARKET_STOP_LIMIT = "YES" и позиция закроется по рынку.
написал: Как же неудобно, когда для срочного рынка нет простого и понятного type="M" + price="0", как оно есть для фондового! Приходится изобретать всякие костыли.
Повторю ещё раз: MARKET_STOP_LIMIT = "YES" и позиция закроется по рынку .
Можно ваш код посмотреть? Больше всего, конечно, интересует таблица, которую вы передаёте в sendTransaction().
А откуда я должен был узнать о поле MARKET_STOP_LIMIT, если в официальной документации об этом нет ничего?
Пользователь
Сообщений: Регистрация: 22.02.2023
15.01.2026 20:34:53
Ну, такая у артели "Арка" документация... Узнать можно нажав F1 > Раздел 6. Совместная работа с другими приложениями > Импорт транзакций > Фиксированный формат файла импорта транзакций > Формат .tri-файла с параметрами транзакций.
Или сохранить нужный Вам стоп-лосс в "Кармане транзакций", и воспользоваться этим:
Всё пройдет. Но это не точно.
Пользователь
Сообщений: Регистрация: 30.10.2024
15.01.2026 21:42:01
Цитата
Ziveleos написал: Ну, такая у артели "Арка" документация... Узнать можно нажав F1 > Раздел 6. Совместная работа с другими приложениями > Импорт транзакций > Фиксированный формат файла импорта транзакций > Формат .tri-файла с параметрами транзакций.
Или сохранить нужный Вам стоп-лосс в "Кармане транзакций", и воспользоваться этим:
Нашёл таки информацию в их документации.
Я искал не в том документе. Я искал в "Интерпретатор языка Lua", а надо было в "Руководство пользователя QUIK".
Вопрос. Это действует для любого рынка: фондового и срочного?
Пользователь
Сообщений: Регистрация: 22.02.2023
15.01.2026 21:51:16
Цитата
Сергей Че написал: Я искал не в том документе. Я искал в "Интерпретатор языка Lua", а надо было в "Руководство пользователя QUIK".
Искал-то правильно, это документация у них "своеобразная".
Цитата
Сергей Че написал: Вопрос. Это действует для любого рынка: фондового и срочного?
написал: Я искал не в том документе. Я искал в "Интерпретатор языка Lua", а надо было в "Руководство пользователя QUIK".
Искал-то правильно, это документация у них "своеобразная".
Цитата
написал: Вопрос. Это действует для любого рынка: фондового и срочного?
Для любого.
Вот что ещё я выяснил, листая старые тему на этом форуме
Цитата
В "обычных" стоп заявка нет признака рыночной, есть только в "тейк профит и стоп лимит" (STOP_ORDER_KIND=TAKE_PROFIT_AND_STOP_LIMIT_ORDER), при этом можно не указывать "тейк профит", а указать значение в "стоп лимите". И будет работать.
Это правда?
Пользователь
Сообщений: Регистрация: 02.01.2026
15.01.2026 22:22:06
Цитата
Ziveleos написал: MARKET_STOP_LIMIT = "YES" и позиция закроется по рынку.
В отсутствии встречных заявок рыночная заявка будет отклонена, лимитная - встанет в стакан в очередь. Если выставлять стоп-заявку с ценой исполнения на уровне верхней/нижней планки, то тоже есть нюанс: уровни планок постоянно меняются. Сегодня вы поставили стоп с одной ценой, а завтра при срабатывании стопа планка будет другой, и заявка может оказаться за пределами планок, и будет отклонена.
Пользователь
Сообщений: Регистрация: 22.02.2023
15.01.2026 22:26:04
Именно так у меня в скрипте и сделано. На срочном выставляется "TAKE_PROFIT_AND_STOP_LIMIT_ORDER". На фондовом, для инструментов которые нельзя шортить - "ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER".
Всё пройдет. Но это не точно.
Пользователь
Сообщений: Регистрация: 22.02.2023
15.01.2026 22:29:47
Цитата
Йцукен написал: В отсутствии встречных заявок рыночная заявка будет отклонена
На срочном нет рыночных, есть "псевдо" рыночные.
Всё пройдет. Но это не точно.
Пользователь
Сообщений: Регистрация: 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"
И небольшое уточнение. Это будет работать у всех брокеров, работающих на бирже через QUIK? Если я в будущем перейду на другой брокер, прежние скрипты будут так же исправно работать?
А какая направленность стоп-цены (CONDITION) в данном случае? CONDITION="4" (<=) или CONDITION="5" (>=) ? И почему она тут не указана? Разве это поле можно опустить? Я так понимаю, направленность стоп-цены -- это какое должно быть отношение рыночной цены к стоп-цене для того, чтобы стоп сработал. То есть, если я закрываю лонг, то я продаю, когда рыночная цена станет меньше или равной (<=) (CONDITION="4") стоп-цены. А если я закрываю шорт, то я покупаю, когда рыночная цена станет больше или равной (>=) (CONDITION="5") стоп-цены. Всё верно?
Пользователь
Сообщений: Регистрация: 22.02.2023
17.01.2026 19:06:55
Цитата
Сергей Че написал: Это будет работать у всех брокеров, работающих на бирже через QUIK?
В транзакции использован фиксированный формат, который, в отличие от "универсального", одинаков у всех брокеров. Но лучше задать этот вопрос поддержке квика. За серверы всех брокеров я ручаться не берусь.
Всё пройдет. Но это не точно.
Пользователь
Сообщений: Регистрация: 22.02.2023
17.01.2026 19:24:23
Цитата
Сергей Че написал:А какая направленность стоп-цены (CONDITION) в данном случае? CONDITION="4" (<=) или CONDITION="5" (>=) ? И почему она тут не указана? Разве это поле можно опустить? Я так понимаю, направленность стоп-цены -- это какое должно быть отношение рыночной цены к стоп-цене для того, чтобы стоп сработал. То есть, если я закрываю лонг, то я продаю, когда рыночная цена станет меньше или равной (<=) (CONDITION="4") стоп-цены. А если я закрываю шорт, то я покупаю, когда рыночная цена станет больше или равной (>=) (CONDITION="5") стоп-цены. Всё верно?
Направленность определяется параметром OPERATION. CONDITION - это параметр Таблицы стоп-заявок.
написал:А какая направленность стоп-цены ( CONDITION ) в данном случае? CONDITION="4" (<=) или CONDITION= "5" (>=) ? И почему она тут не указана? Разве это поле можно опустить? Я так понимаю, направленность стоп-цены -- это какое должно быть отношение рыночной цены к стоп-цене для того, чтобы стоп сработал. То есть, если я закрываю лонг, то я продаю, когда рыночная цена станет меньше или равной (<=) ( CONDITION="4" ) стоп-цены. А если я закрываю шорт, то я покупаю, когда рыночная цена станет больше или равной (>=) ( CONDITION="5" ) стоп-цены. Всё верно?
Направленность определяется параметром OPERATION. CONDITION - это параметр Таблицы стоп-заявок.
OPERATION = 'B'|'S' недостаточно, чтобы задать, как должен работать стоп. Рыночная цена может быть как выше, как и ниже стоп-цены, и в процессе движения рыночная цена может пересекать стоп-цену как снизу вверх, так и сверху вниз. И для того, чтобы исключить неопределённость и точно определить, при каком пересечении стоп должен сработать, в параметры транзакции и указывают CONDITION = '4'|'5'
Пользователь
Сообщений: Регистрация: 22.02.2023
17.01.2026 21:15:04
Цитата
Сергей Че написал: OPERATION = 'B'|'S' недостаточно, чтобы задать, как должен работать стоп.
Достаточно.
Всё пройдет. Но это не точно.
Пользователь
Сообщений: Регистрация: 30.10.2024
22.01.2026 22:09:58
Цитата
nikolz написал: Можно читать из ТТП. Можно читать стакан. Затраты времени не большие.
Чтобы прочитать данные из стакана, достаточно просто вызвать функцию getQuoteLevel2(...) ?Или ещё надо предваритель в OnInit() прописать заказ котировок Subscribe_Level_II_Quotes(...)
Чтобы прочитать данные из стакана, достаточно просто вызвать функцию getQuoteLevel2(...) ?Или ещё надо предваритель в OnInit() прописать заказ котировок Subscribe_Level_II_Quotes(...)
Если он не открыт, то надо вызвать Subscribe_Level_II_Quotes. Хотя можно проверить открыт есть ли поток данных через IsSubscribed_Level_II_Quotes, и если нет, тогда и заказать. Делать это можно не в OnInit. Я бы даже сказал, что это точно не надо делать в OnInit.
Чтобы прочитать данные из стакана, достаточно просто вызвать функцию getQuoteLevel2(...) ?Или ещё надо предваритель в OnInit() прописать заказ котировок Subscribe_Level_II_Quotes(...)
Если он не открыт, то надо вызвать Subscribe_Level_II_Quotes. Хотя можно проверить открыт есть ли поток данных через IsSubscribed_Level_II_Quotes, и если нет, тогда и заказать. Делать это можно не в OnInit. Я бы даже сказал, что это точно не надо делать в OnInit.
Мне не надо постоянно получать данные из стакана в коллбеке, а только в момент, когда хочу купить/продать инструмент, чтобы проанализировать глубину рынка.
Всё равно предварительно заказывать котировки по всем инструментам, которыми буду торговать?
Мне не надо постоянно получать данные из стакана в коллбеке, а только в момент, когда хочу купить/продать инструмент, чтобы проанализировать глубину рынка.
Всё равно предварительно заказывать котировки по всем инструментам, которыми буду торговать?
Если нужен именно весь стакан, то да, лучше заказать один раз и не закрывать. Хотя можете просто открыть руками в самом Квике. Читать же можете только в необходимое время.
Пользователь
Сообщений: Регистрация: 30.10.2024
23.01.2026 12:45:37
Цитата
Nikolay написал: Если нужен именно весь стакан, то да, лучше заказать один раз и не закрывать. Хотя можете просто открыть руками в самом Квике. Читать же можете только в необходимое время.
Насколько я понял, заказ котировок через Subscribe_Level_II_Quotes() — это аналогично созданию потока данных через CreateDataSource(), который возвращает данные по свечкам, чтобы в самом Квике ничего не открывать и не держать открытым.
Надо подписаться на потоки котировок всех торгуемых инструментов в функции main() и потом получать данные стаканов, когда надо, через вызов getQuoteLevel2().
Нужно ли при этом использовать коллбек OnQuote() или это необязательно?
Пользователь
Сообщений: Регистрация: 27.01.2017
23.01.2026 13:07:35
Цитата
это аналогично созданию потока данных
Не совсем так. Это ближе к чтению из таблицы текущих торгов. Если стакан открыт, т.е. поток данных уже есть, то можно читать без заказа. Поэтому и есть метод проверки существующего потока.
Колбек нужен для определения, что данные изменились. Если надо просто прочитать, то особого смысла в нем нет.
Не совсем так. Это ближе к чтению из таблицы текущих торгов. Если стакан открыт, т.е. поток данных уже есть, то можно читать без заказа. Поэтому и есть метод проверки существующего потока.
Колбек нужен для определения, что данные изменились. Если надо просто прочитать, то особого смысла в нем нет.
Спасибо
Пользователь
Сообщений: Регистрация: 22.02.2023
23.01.2026 22:40:22
Цитата
Сергей Че написал: Ну явно указать CONDITION не помешает.
Указать параметр PLANET = "SATURN" тоже не помешает. Он, как и CONDITION, будет просто проигнорирован. Повторяю: CONDITION - это параметр Таблицы стоп-заявок. В транзакциях он не используется.
Указать параметр PLANET = "SATURN" тоже не помешает. Он, как и CONDITION, будет просто проигнорирован. Повторяю: CONDITION - это параметр Таблицы стоп-заявок . В транзакциях он не используется .
Спасибо за информацию. Я не знал.А поле PRICE надо указывать равным нулю, если в стоп-ордере MARKET_STOP_LIMIT="YES", или цену тоже нет смысла указаывать, потому что она будет проигнорирована?
Пользователь
Сообщений: Регистрация: 22.02.2023
24.01.2026 00:42:18
Цитата
Сергей Че написал: А поле PRICE надо указывать равным нулю, если в стоп-ордере MARKET_STOP_LIMIT="YES", или цену тоже нет смысла указаывать, потому что она будет проигнорирована?