Рыночная заявка для торговли фьючерсами

Страницы: Пред. 1 2
RSS
Рыночная заявка для торговли фьючерсами
 
Цитата
Nikolay написал:
Цитата
Сергей Че написал:
Вы уж определитесь. Для одного трейдера тут 100 это очень большой отступ, а для другого -- ничто (просто какие-то розовые пони), мол цена перешагнёт эту сотку, не закрыв позицию, и пойдёт дальше.
Проскальзывание не зависит зависит от трейдера. Если рынок ходит по 100 пунктов за тик, то это просто свойство рынка в данный момент. Какая там позиция и что думает трейдер - ему без разницы. Стоп-торги, возобновление и уже новая планка. И так далее. А лимитный ордер от сработавшего стопа так и висит.  
Я говорил про 100 шагов цены (и неоднократно использовал именно это слово "шаги"), а не 100 пунктов.
Про 100 пунктов я согласен - это мало, это всего 10 шагов индекса РТС, и 4 шага индекса Мосбиржи.
 
Цитата
Сергей Че написал:
Я говорил про 100 шагов цены (и неоднократно использовал именно это слово "шаги"), а не 100 пунктов.
Про 100 пунктов я согласен - это мало, это всего 10 шагов индекса РТС, и 4 шага индекса Мосбиржи.
Ну так для Si 100 шагов = 100 пунктов. Это не особо важно. 100 шагов - это мало. Если думаете, что РТС не может шагать по 100 шагов, то обязательно поймаете такое событие. Впрочем, на моей памяти такое было не раз с 2008 года.
 
Цитата
Nikolay написал:
Цитата
Сергей Че написал:
Я говорил про 100 шагов цены (и неоднократно использовал именно это слово "шаги"), а не 100 пунктов.
Про 100 пунктов я согласен - это мало, это всего 10 шагов индекса РТС, и 4 шага индекса Мосбиржи.
Ну так для Si 100 шагов = 100 пунктов. Это не особо важно. 100 шагов - это мало. Если думаете, что РТС не может шагать по 100 шагов, то обязательно поймаете такое событие. Впрочем, на моей памяти такое было не раз с 2008 года.
Окей, какой отступ для стопа вы предлагаете?
 
Отступ можете ставить хоть 100 шагов. Но важнее другое - наличие алгоритма проверяющего состояние лимитного ордера по исполнению стопа через linkedorder. Если он не исполнился, то перевыставлять стоп от текущей цены или закрывать уже через алгоритм, подавая свой лимитный ордер от текущей цены. И тоже контролируя это, т.к. и от него цена может убежать. Да, такие ситуации не часты, и, скорее всего, 200 шагов хватит за глаза в спокойные дни, но достаточно одного случая, чтобы убыток стал в размер всех средств.
 
Цитата
Сергей Че написал:
Как же неудобно, когда для срочного рынка нет простого и понятного type="M" + price="0", как оно есть для фондового! Приходится изобретать всякие костыли.
Повторю ещё раз: MARKET_STOP_LIMIT = "YES" и позиция закроется по рынку.
#38
Всё пройдет. Но это не точно.
 
Цитата
Ziveleos написал:
Цитата
Сергей Че написал:
Как же неудобно, когда для срочного рынка нет простого и понятного type="M" + price="0", как оно есть для фондового! Приходится изобретать всякие костыли.
Повторю ещё раз: MARKET_STOP_LIMIT = "YES" и позиция закроется  по рынку .
#38
Можно ваш код посмотреть?
Больше всего, конечно, интересует таблица, которую вы передаёте в sendTransaction().
 
Вот она: #31
Всё пройдет. Но это не точно.
 
Цитата
Ziveleos написал:
Вот она:  #31
А откуда я должен был узнать о поле MARKET_STOP_LIMIT, если в официальной документации об этом нет ничего?
 
Ну, такая у артели "Арка" документация...
Узнать можно нажав F1 > Раздел 6. Совместная работа с другими приложениями > Импорт транзакций > Фиксированный формат файла импорта транзакций > Формат .tri-файла с параметрами транзакций.

Или сохранить нужный Вам стоп-лосс в "Кармане транзакций", и воспользоваться этим: https://forum.quik.ru/messages/forum17/message77039/topic8828/#message77039
Всё пройдет. Но это не точно.
 
Цитата
Ziveleos написал:
Ну, такая у артели "Арка" документация...
Узнать можно нажав F1 > Раздел 6. Совместная работа с другими приложениями > Импорт транзакций > Фиксированный формат файла импорта транзакций > Формат .tri-файла с параметрами транзакций.

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

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

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

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

Цитата
Сергей Че написал:
Вопрос. Это действует для любого рынка: фондового и срочного?
Для любого.
Вот что ещё я выяснил, листая старые тему на этом форуме
Цитата
В "обычных" стоп заявка нет признака рыночной, есть только в "тейк профит и стоп лимит" (STOP_ORDER_KIND=TAKE_PROFIT_AND_STOP_LIMIT_ORDER), при этом можно не указывать "тейк профит", а указать значение в "стоп лимите". И будет работать.
Это правда?
 
Цитата
Ziveleos написал:
MARKET_STOP_LIMIT = "YES" и позиция закроется по рынку.
В отсутствии встречных заявок рыночная заявка будет отклонена, лимитная - встанет в стакан в очередь.
Если выставлять стоп-заявку с ценой исполнения на уровне верхней/нижней планки, то тоже есть нюанс: уровни планок постоянно меняются. Сегодня вы поставили стоп с одной ценой, а завтра при срабатывании стопа планка будет другой, и заявка может оказаться за пределами планок, и будет отклонена.
 
Именно так у меня в скрипте и сделано.
На срочном выставляется "TAKE_PROFIT_AND_STOP_LIMIT_ORDER".
На фондовом, для инструментов которые нельзя шортить - "ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER".
Всё пройдет. Но это не точно.
 
Цитата
Йцукен написал:
В отсутствии встречных заявок рыночная заявка будет отклонена
На срочном нет рыночных, есть "псевдо" рыночные.
Всё пройдет. Но это не точно.
 
Цитата
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"


Подправьте меня, если я что-то упустил.
 
Цитата
Сергей Че написал: Вот так?
Почти всё верно. 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)
Всё пройдет. Но это не точно.
 
Цитата
Ziveleos написал:
Вот проверенный вариант:
Большое спасибо!

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


OPERATION = 'B'|'S' недостаточно, чтобы задать, как должен работать стоп.
Рыночная цена может быть как выше, как и ниже стоп-цены, и в процессе движения рыночная цена может пересекать стоп-цену как снизу вверх, так и сверху вниз. И для того, чтобы исключить неопределённость и точно определить, при каком пересечении стоп должен сработать, в параметры транзакции и указывают CONDITION = '4'|'5'
 
Цитата
Сергей Че написал:
OPERATION = 'B'|'S' недостаточно, чтобы задать, как должен работать стоп.

Достаточно.

Всё пройдет. Но это не точно.
 
Цитата
nikolz написал:
Можно читать из ТТП. Можно читать стакан.  Затраты времени не большие.

Чтобы прочитать данные из стакана, достаточно просто вызвать функцию getQuoteLevel2(...) ?Или ещё надо предваритель в OnInit() прописать заказ котировок Subscribe_Level_II_Quotes(...)
 
Цитата
Ziveleos написал:
Цитата
Сергей Че написал:
OPERATION = 'B'|'S' недостаточно, чтобы задать, как должен работать стоп.

Достаточно.

Ну явно указать CONDITION не помешает.
 
см. док:
Заявка на продажу
Фьючерс LKOH-3.10, рыночная, 15  контрактов
ACCOUNT=SPBFUT00009; CLIENT_CODE= SPBFUT00009; TYPE=M;  TRANS_ID=8; CLASSCODE=SPBFUT; SECCODE=LKH0; ACTION=NEW_ORDER; OPERATION=S;  PRICE=16231; QUANTITY=15;
 
Перестановка заявок на срочном рынке FORTSACTION=MOVE_ORDERS; TRANS_ID=333; CLASSCODE=SPBFUT;  SECCODE=EBM6; FIRM_ID=SPBFUT389; MODE=1; FIRST_ORDER_NUMBER=21445064;  FIRST_ORDER_NEW_PRICE=10004; FIRST_ORDER_NEW_QUANTITY=4;  SECOND_ORDER_NUMBER=21445065; SECOND_ORDER_NEW_PRICE=10004;  SECOND_ORDER_NEW_QUANTITY=4;
 
Снятие всех заявок на срочном рынке FORTS
на покупку  контрактов на курс акций Ростелеком -ао
TRANS_ID=50; ACCOUNT=SPBFUT00001;  ACTION=KILL_ALL_FUTURES_ORDERS; OPERATION=B; CLASSCODE=SPBFUT;  BASE_CONTRACT=RTKM;
 
Цитата
nikolz написал:
Спасибо, конечно, за примеры транзакций, но ты так и не ответил на мой вопрос про запрос данных из стакана.
 
Цитата
Сергей Че написал:

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

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

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

Всё равно предварительно заказывать котировки по всем инструментам, которыми буду торговать?
 
Цитата
Сергей Че написал:

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

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

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

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


Нужно ли при этом использовать коллбек OnQuote() или это необязательно?
 
Цитата
это аналогично созданию потока данных
Не совсем так. Это ближе к чтению из таблицы текущих торгов. Если стакан открыт, т.е. поток данных уже есть, то можно читать без заказа. Поэтому и есть метод проверки существующего потока.

Колбек нужен для определения, что данные изменились. Если надо просто прочитать, то особого смысла в нем нет.
 
Цитата
Nikolay написал:
Цитата
это аналогично созданию потока данных
Не совсем так. Это ближе к чтению из таблицы текущих торгов. Если стакан открыт, т.е. поток данных уже есть, то можно читать без заказа. Поэтому и есть метод проверки существующего потока.

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

Спасибо за информацию. Я не знал.А поле PRICE надо указывать равным нулю, если в стоп-ордере MARKET_STOP_LIMIT="YES", или цену тоже нет смысла указаывать, потому что она будет проигнорирована?
Страницы: Пред. 1 2
Читают тему
Наверх