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

Страницы: 1
RSS
Рыночная заявка для торговли фьючерсами
 
Можно ли использовать поля type="M" и price="0" в таблице, которая передаётся в функцию sendTransaction для купли/продажи фьючерсов по рыночной цене?
Или надо использовать лимитную заявки (type="L") со специально завышенной ценой для покупки и специально заниженной ценой для продажи?
 
Я использую type="M" и завышенную цену одновременно
 
Цитата
funduk написал:
Я использую   type="M"   и завышенную цену одновременно
А может быть можно не париться с завышенной/заниженной ценой?
А то ведь не всякую цену можно указать, она должна быть в диапазоне минимуму до максимума, заданных биржей на текущий день.
 
0 для срочки для рыночной сделки нельзя ставить, на сколько я помню.
 
Цитата
funduk написал:
0 для срочки для рыночной сделки нельзя ставить, на сколько я помню.
А разве квику не должно быть пофиг на выставленную цену, если выставлен type="M"?
 
На срочной секции нет рыночных ордеров. Можно только устанавливать ордера внутри ценовых границы последнего клиринга. Причина проста - сумма ГО зависит от цены.
Поэтому устанавливая ордер далеко от цены клиринга, ГО возрастает и существенно.
 
Цитата
Сергей Че написал:
А то ведь не всякую цену можно указать, она должна быть в диапазоне минимуму до максимума, заданных биржей на текущий день.
Да, надо брать параметры PICEMAX / PRICEMIN.  
 
Цитата
Nikolay написал:
На срочной секции нет рыночных ордеров. Можно только устанавливать ордера внутри ценовых границы последнего клиринга. Причина проста - сумма ГО зависит от цены.
Поэтому устанавливая ордер далеко от цены клиринга, ГО возрастает и существенно.
И какую цену ставить? Текущая + сколько? (для покупки)
Может быть, текущая + (текущая + максимум)/2 ?
 
Цитата
Сергей Че написал:
И какую цену ставить? Текущая + сколько? (для покупки)
Может быть,  текущая + (текущая + максимум)/2  ?
Это Вам решать, понимая, что чем дальше цена, тем больше ГО. ГО по факту будет по цене исполнения, но брокер проверит наличие средств именно по цене ордера.
Ну и учитывая ликивдность инструмента, для кого-то отступ 100 шагов - достаточно, а для другого 500 и более.
 
Ой, я немного ошибся. Я хотел предложить
(текущая + максимум) / 2  для покупки
(текущая + минимум) / 2  для продажи
Подойдёт такой вариант?
 
В большинстве случаев этого, будет достаточно. Но не забывайте про ситуации, когда торги идут у границ.
 
Цитата
Сергей Че написал:
Цитата
Nikolay написал:
На срочной секции нет рыночных ордеров. Можно только устанавливать ордера внутри ценовых границы последнего клиринга. Причина проста - сумма ГО зависит от цены.
Поэтому устанавливая ордер далеко от цены клиринга, ГО возрастает и существенно.
И какую цену ставить? Текущая + сколько? (для покупки)
Может быть,  текущая + (текущая + максимум)/2  ?
Лучшая цена предложения/ спроса.  
 
если есть спред, то в спред.
 
Цитата
nikolz написал:
Цитата
Сергей Че написал:
 
Цитата
Nikolay  написал:
На срочной секции нет рыночных ордеров. Можно только устанавливать ордера внутри ценовых границы последнего клиринга. Причина проста - сумма ГО зависит от цены.
Поэтому устанавливая ордер далеко от цены клиринга, ГО возрастает и существенно.
 И какую цену ставить? Текущая + сколько? (для покупки)
Может быть,  текущая + (текущая + максимум)/2  ?
Лучшая цена предложения/ спроса.  
То есть ты предлагаешь перед подачей заявки сканировать стакан?
 
Цитата
Сергей Че написал:
Цитата
nikolz написал:
 
Цитата
Сергей Че  написал:
 
Цитата
 Nikolay   написал:
На срочной секции нет рыночных ордеров. Можно только устанавливать ордера внутри ценовых границы последнего клиринга. Причина проста - сумма ГО зависит от цены.
Поэтому устанавливая ордер далеко от цены клиринга, ГО возрастает и существенно.
  И какую цену ставить? Текущая + сколько? (для покупки)
Может быть,  текущая + (текущая + максимум)/2  ?
 Лучшая цена предложения/ спроса.  
То есть ты предлагаешь перед подачей заявки сканировать стакан?
Можно читать из ТТП. Можно читать стакан.  
Затраты времени не большие.
При этом еще анализирую спред и глубину рынка.
Если глубина рынка устраивает, то можно ставить цену на весь нужный объем.
 
Если делаете цену как предлагают выше, то ваша заявка будет всегда активной.
если ставить перед лучшей ценой при наличии спреда, то будет пассивной (ком. биржи==0)
 
Вы определитесь уже - хотите исполнения ордера, сдвигаете цену и платите комиссию. Хотите экономить - читаете лучшие цены (для этого не надо сканировать стакан) и ставите в спред, ожидая исполнения. Если цена убегает, то придется реализовать алгоритм, чтобы догнать цену или отменить вход. Также можно реализовать порционное исполнение. Либо, действительно читаете стакан и понимаете на сколько пройдет цена при исполнении вашего ордера, оцениваете результат и принимает решение. На некоторых инструментах только так и можно войти.

Алгоритмическая торговля - это именно про это: алгоритм входа. Никто кроме Вас не знает какая ваша цель, какой объем и т.д. Алгоритм входа для 1-ого контракта существенно отличается от такового для 1000 контрактов, даже для 100 на многих инструментах.
 
Из официальной документации

 
Цитата
Сергей Че написал:
Из официальной документации
Это и было сказано: рыночная заявка - это просто смещенная от текущей цены к границам текущего клиринга. Что не сказано в документации - изменение ГО при удалении от цены последнего клиринга. Чем дальше - тем больше.
Что приводит к неявному ответу от брокера о нехватке средств у любителей торговать на грани обеспечения. Нажимают кнопку в стакане "купить по рынку" - ответ: не хватает средств для покупки по цене (граница).
Вводишь руками цену, скажет на 100 пунктов от текущей - и магически уже денег хватает. Как же так - ошибка терминала, явно. Поэтому на срочном рынке нет заявок по рынку - есть ордера по указанной цене, и брокер проверит наличие средств именно для указанной цены, т.к. есть ненулевой шанс, что когда заявка дойдет до биржи, именно по этой цене она и исполнится.
 
Цитата
Nikolay написал:
Вы определитесь уже - хотите исполнения ордера, сдвигаете цену и платите комиссию.
Я определился уже - мне нужна активная покупка, а не пассивное ожидание.
Я разрабатываю торговый робот. Поэтому мне надо именно купить/продать, а не ждать у моря погоды.
Допустим, мои индикаторы сигналят, что будет рост, а я выставляю цену в спред, в надежде, что цена до неё дойдёт и тогда я куплю без комиссии.
Так можно профукать вход в позицию.
 
Если в заявке указать цену меньше PRICE_MIN (или больше PRICE_MAX), она всё равно приведётся к PRICE_MIN (PRICE_MAX)? Или заявка просто будет отклонена?
 
Цитата
Сергей Че написал:
Если в заявке указать цену меньше PRICE_MIN (или больше PRICE_MAX), она всё равно приведётся к PRICE_MIN (PRICE_MAX)? Или заявка просто будет отклонена?
Будет отклонена.

Надо ставить ту цену, по которой вы готовы купить. Ожидая роста, неплохо бы еще прикинуть, на сколько оно может вырасти. И учесть комиссии. А ставя PRICE_MAX, есть ненулевой шанс по этой цене и купить. Что может оказаться сильно завышено.
 
Цитата
paluke написал:
Цитата
Сергей Че написал:
Если в заявке указать цену меньше PRICE_MIN (или больше PRICE_MAX), она всё равно приведётся к PRICE_MIN (PRICE_MAX)? Или заявка просто будет отклонена?
Будет отклонена.

Надо ставить ту цену, по которой вы готовы купить. Ожидая роста, неплохо бы еще прикинуть, на сколько оно может вырасти. И учесть комиссии. А ставя PRICE_MAX, есть ненулевой шанс по этой цене и купить. Что может оказаться сильно завышено.
Выставляя цену, равную PRICE_MAX, я куплю по PRICE_MAX только в одном случае - если в стакане есть только 1 продавец, который выставил заявку в районе PRICE_MAX.
На ликвидном инструменте это просто невозможно.
 
Несколько таких же роботописателей уверенных что "на ликвидном инструменте это просто невозможно" выгребут весь стакан...
 
Цитата
paluke написал:
Несколько таких же роботописателей уверенных что "на ликвидном инструменте это просто невозможно" выгребут весь стакан...
1) Чтобы выгрести весь стакан, надо скупить всё. В этом случае средняя цена покупки будет меньше PRICE_MAX.
2) Не понимаю, зачем на срочном рынке покупать 100 фьючерсом? Чтобы что? Чтобы торговать с 100-м плечом? Малейшее колебание цены не в твоём направлении, и ты обнуляешься.
 
Цитата
Сергей Че написал:
Цитата
paluke написал:
 
Цитата
Сергей Че  написал:
Если в заявке указать цену меньше PRICE_MIN (или больше PRICE_MAX), она всё равно приведётся к PRICE_MIN (PRICE_MAX)? Или заявка просто будет отклонена?
 Будет отклонена.

Надо ставить ту цену, по которой вы готовы купить. Ожидая роста, неплохо бы еще прикинуть, на сколько оно может вырасти. И учесть комиссии. А ставя PRICE_MAX, есть ненулевой шанс по этой цене и купить. Что может оказаться сильно завышено.
Выставляя цену, равную PRICE_MAX, я куплю по PRICE_MAX только в одном случае - если в стакане есть только 1 продавец, который выставил заявку в районе PRICE_MAX.
На ликвидном инструменте это просто невозможно.
Выставляйте цену для покупки по лучшей цене предложений либо больше , чем она на несколько шагов цены.
Еще можно делать так. Найти в стакане максимальный объем и выставить по его цене. тогда точно купите .
 
Цитата
nikolz написал:
Цитата
Сергей Че написал:
 
Цитата
paluke  написал:
 
Цитата
 Сергей Че   написал:
Если в заявке указать цену меньше PRICE_MIN (или больше PRICE_MAX), она всё равно приведётся к PRICE_MIN (PRICE_MAX)? Или заявка просто будет отклонена?
  Будет отклонена.

Надо ставить ту цену, по которой вы готовы купить. Ожидая роста, неплохо бы еще прикинуть, на сколько оно может вырасти. И учесть комиссии. А ставя PRICE_MAX, есть ненулевой шанс по этой цене и купить. Что может оказаться сильно завышено.
 Выставляя цену, равную PRICE_MAX, я куплю по PRICE_MAX только в одном случае - если в стакане есть только 1 продавец, который выставил заявку в районе PRICE_MAX.
На ликвидном инструменте это просто невозможно.
Выставляйте цену для покупки по лучшей цене предложений либо больше , чем она на несколько шагов цены.
Еще можно делать так. Найти в стакане максимальный объем и выставить по его цене. тогда точно купите .
А если максимальный объём близко к границе (PRICE_MIN/PRICE_MAX)?
 
Цитата
Сергей Че написал:
1) Чтобы выгрести весь стакан, надо скупить всё. В этом случае средняя цена покупки будет меньше PRICE_MAX.
2) Не понимаю, зачем на срочном рынке покупать 100 фьючерсом? Чтобы что? Чтобы торговать с 100-м плечом? Малейшее колебание цены не в твоём направлении, и ты обнуляешься.
Если алгоритм не учитывает наличие планок (да и просто сумму стакана), то это опасно. У нас планка - почти нормальная ситуация.
100 - контрактов - это не такой и большой объем. Отношение ГО к объему контракта не имеет никакого отношения к числу контрактов. Для кого-то 10 контрактов - это весь депозит, а кому-то 100 - всего 10%.
 
Цитата
Nikolay написал:
Если алгоритм не учитывает наличие планок (да и просто сумму стакана), то это опасно. У нас планка - почти нормальная ситуация.
100 - контрактов - это не такой и большой объем. Отношение ГО к объему контракта не имеет никакого отношения к числу контрактов. Для кого-то 10 контрактов - это весь депозит, а кому-то 100 - всего 10%.
Я не это. 100-е плечо означает, что движение цены на 1% не в твоём направлении - это уменьшение вар.маржи на 100%.
 
Если я ставлю стоп-ордер на закрытие позиции, то я не могу знать, когда именно он исполнится: может через минуту, а может через месяц.
Поэтому я не знаю, какой будет диапазон [ PRICE_MIN, PRICE_MAX ], когда цена достигнёт уровня срабатывания стопа.
Если бы знал, то сразу бы выставил известный заранее PRICE_MIN при закрытии лонга (или известный заранее PRICE_MAX при закрытии шорта).
Дело в том, что на срочном рынке нельзя выставить type="M" + price="0", как документация советует для фондового рынка.
А раз так, то приходится в стоп-заявке писать, что цена срабатывания Х, а цена исполнения Х ± 100 шагов (в зависимости от того, что закрываю, шорт или лонг).
И тут вопрос, а не выйдет ли Х ± 100 шагов за пределы диапазона [ PRICE_MIN, PRICE_MAX ] ?
 
Цитата
Сергей Че написал:
Если я ставлю стоп-ордер на закрытие позиции
Если нужен стоп-ордер, почему бы не выставить именно стоп, а не закрывать позицию лимитной?
У меня в "автостопе" сделано так:
Скрытый текст
Всё пройдет. Но это не точно.
 
Цитата
Ziveleos написал:
Цитата
Сергей Че написал:
Если я ставлю стоп-ордер на закрытие позиции
Если нужен стоп-ордер, почему бы не выставить именно стоп, а не закрывать позицию лимитной?
Точно. Я перепутал лимитную заявку со стоп-заявкой.
Но проблема та же всё равно.
Есть STOPPRICE - цена, по которой сработает стоп-ордер,
а есть PRICE - цена, по которой выставится лимитная заявка.
И тут надо вручную делать отступ (вверх/вниз) всё равно.
Нельзя задать стоп-ордеру "короче, сам закройся по рынку, когда цена достигнет уровня"
 
Цитата
Сергей Че написал:
Нельзя задать стоп-ордеру "короче, сам закройся по рынку, когда цена достигнет уровня"
У меня именно так и работает.
Код
MARKET_TAKE_PROFIT = "YES"
PRICE = 0
Всё пройдет. Но это не точно.
 
Поправка

Код
MARKET_STOP_LIMIT = "YES"
Всё пройдет. Но это не точно.
 
Цитата
Ziveleos написал:
Поправка
Код
MARKET_STOP_LIMIT  =   "YES"   
MARKET_STOP_LIMIT = "YES", и брокер отправит на биржу рыночную заявку?
Тогда зачем ты указываешь цену, по которой выставится лимитная заявка (PRICE)?
 
Цитата
Сергей Че написал:
Если я ставлю стоп-ордер на закрытие позиции, то я не могу знать, когда именно он исполнится: может через минуту, а может через месяц.
Поэтому я не знаю, какой будет диапазон   [ PRICE_MIN, PRICE_MAX ]  , когда цена достигнёт уровня срабатывания стопа.
Если бы знал, то сразу бы выставил известный заранее   PRICE_MIN   при закрытии лонга (или известный заранее   PRICE_MAX   при закрытии шорта).
Дело в том, что на срочном рынке нельзя выставить   type="M"   +   price="0"  , как документация советует  для фондового рынка .
А раз так, то приходится в стоп-заявке писать, что цена срабатывания   Х  , а цена исполнения   Х ±     100     шагов   (в зависимости от того, что закрываю, шорт или лонг).
И тут вопрос, а не выйдет ли   Х ±     100     шагов   за пределы диапазона       [ PRICE_MIN, PRICE_MAX ] ?  
Если речь про стоп-ордер, то я делал так.
ставлю цену, сместив ее относительно стоп например на 5 шагов.
Когда стоп сработает, то лимитная заявка либо сработает, либо останется активной.
Если она осталась активной, то на следующем тике робот ее переставляет на лучшую цену и так делает, пока вся позиция не закроется.
 
Цитата
nikolz написал:
Цитата
Сергей Че написал:
Если я ставлю стоп-ордер на закрытие позиции, то я не могу знать, когда именно он исполнится: может через минуту, а может через месяц.
Поэтому я не знаю, какой будет диапазон   [ PRICE_MIN, PRICE_MAX ]  , когда цена достигнёт уровня срабатывания стопа.
Если бы знал, то сразу бы выставил известный заранее   PRICE_MIN   при закрытии лонга (или известный заранее   PRICE_MAX   при закрытии шорта).
Дело в том, что на срочном рынке нельзя выставить   type="M"   +   price="0"  , как документация советует  для фондового рынка .
А раз так, то приходится в стоп-заявке писать, что цена срабатывания   Х  , а цена исполнения   Х ±     100     шагов   (в зависимости от того, что закрываю, шорт или лонг).
И тут вопрос, а не выйдет ли   Х ±     100     шагов   за пределы диапазона       [ PRICE_MIN, PRICE_MAX ] ?  
Если речь про стоп-ордер, то я делал так.
ставлю цену, сместив ее относительно стоп например на 5 шагов.
Когда стоп сработает, то лимитная заявка либо сработает, либо останется активной.
Если она осталась активной, то на следующем тике робот ее переставляет на лучшую цену и так делает, пока вся позиция не закроется.
Хмм, хитрО, умнО!
Спасибо за подсказку.
 
Цитата
Сергей Че написал:
огда зачем ты указываешь цену, по которой выставится лимитная заявка (PRICE)?
Скрипт может выставлять стоп закрывающий по рынку,

или с заданным отступом.


Поэтому PRICE либо указывается, либо ноль, а таблица для sendTransaction одна, универсальная, и для срочного и для фондового рынка.
Всё пройдет. Но это не точно.
 
Цитата
nikolz написал:
Если речь про стоп-ордер, то я делал так.
ставлю цену, сместив ее относительно стоп например на 5 шагов.
Когда стоп сработает, то лимитная заявка либо сработает, либо останется активной.
Если она осталась активной, то на следующем тике робот ее переставляет на лучшую цену и так делает, пока вся позиция не закроется.
То есть, насколько я правильно понял, ты в коллбеке OnStopOrder(stop) читаешь поле stop.linkedorder (номер заявки, зарегистрированной по наступлению условия стоп-цены) и по номеру ищешь заявку в таблице orders, и у найденной зяавки проверяешь битовые флаги. И если она активна, то снимаешь её, и ставишь новый стоп-ордер на новую цену?  
 
Цитата
Сергей Че написал:
Цитата
nikolz написал:
Если речь про стоп-ордер, то я делал так.
ставлю цену, сместив ее относительно стоп например на 5 шагов.
Когда стоп сработает, то лимитная заявка либо сработает, либо останется активной.
Если она осталась активной, то на следующем тике робот ее переставляет на лучшую цену и так делает, пока вся позиция не закроется.
То есть, насколько я правильно понял, ты в коллбеке   OnStopOrder(stop)   читаешь поле   stop.linkedorder   (номер заявки, зарегистрированной по наступлению условия стоп-цены) и по номеру ищешь заявку в таблице   orders  , и у найденной зяавки проверяешь битовые флаги. И если она активна, то снимаешь её, и ставишь новый стоп-ордер на новую цену?  
Почти так. Но заявку linkedorder  ловим в OnOrder, так как она там будет до таблицы.  
 
Цитата
nikolz написал:
Но заявку linkedorder  ловим в OnOrder, так как она там будет до таблицы.  
А как тогда ты тогда определишь, что это не просто лимитная заявка, а лимитная заявка, созданная при активации стопа? По полю trans_id, который мы запоминаем при создании стопа?
 
Цитата
Сергей Че написал:
Цитата
nikolz написал:
Но заявку linkedorder  ловим в OnOrder, так как она там будет до таблицы.  
А как тогда ты тогда определишь, что это не просто лимитная заявка, а лимитная заявка, созданная при активации стопа? По полю   trans_id  , который мы запоминаем при создании стопа?
по номеру stop.linkedorder  
 
Цитата
nikolz написал:
stop.linkedorder  
order.linkedorder содержит order_num стоп-ордера, а узнать его заранее не получится (надо копаться в таблице stop_orders)
Конечно, если стоп-ордер всегда один, то и сверять его ни с чем не надо, можно просто проверять, что поле order.linkedorder не пустое.
 
Цитата
nikolz написал:
Если речь про стоп-ордер, то я делал так.
ставлю цену, сместив ее относительно стоп например на 5 шагов.
Когда стоп сработает, то лимитная заявка либо сработает, либо останется активной.
Если она осталась активной, то на следующем тике робот ее переставляет на лучшую цену и так делает, пока вся позиция не закроется.
И ещё вдогонку пару вопросов.
1) что если заявка исполнена частично - часть фьючерсов продал, а часть нет. И завяка осталась активной.
2) что если стоп НЕ исполнился (и лимитная заявка не создана), потому что цена минус 5 шагов оказалось мало, потому что цена сильно уехала вниз?
Страницы: 1
Читают тему
Наверх