Страница 1 из 2

Частичное исполнение заявки

Добавлено: 12 апр 2018, 01:48
nordseven
Добрый вечер! Не нашел ответов на свои вопросы на форуме.

1. Если заявка на покупку EnterLong(5) исполняется частично к примеру 3 контракта, как поведет себя НЕ исполненная часть заявки?
Будет дальше висеть пока не сниму ручками? А если ручками сниму отменится заявка на 5 контрактов или на 2 не купленных?
2. Что в случае вопроса №1 сделает StopLoss заявка?
Выставится на количество купленных контрактов или будет ждать пока не будут куплены оставшиеся контракты и уже потом выставится?
Если я ручками через CancelActiveOrders(true) заявку на не купленные контракты снимаю, StopLoss выставится автоматически или нужно будет самому ставить?
3. Что в случае вопроса №1 сделает "StopLoss+TakeProfit" заявка?
Судя по тому что одновременно может стоять только две заявки, то из-за частично исполненной заявки на покупку, заявка Take-Profit не выставится... Выставится ли заявка TakeProfit автоматически, если я опять же сниму заявку на не купленные контракты?

Re: Частичное исполнение заявки

Добавлено: 12 апр 2018, 08:53
evge
Честно скажу, сам об этом всём думал не раз, но не запускал работающих роботов на много контрактов по фьючерсам. Запускаю на тесты По 1 - 2 контракта максимум и одновременно много роботов на разных инструментах, но вот одного робота на большой объем не запускал, ещё при этом надо дождаться такой ситуации, что весь ордер не выкупят.

Поэтому ситуацию ещё поймать надо суметь.

Но всегда об этом задумывался и хотел те же вопросы задать на вебинарах по роботам. Но благополучно забывал записать вопросы или задать их в эфире.

Что думаю я:

1. Тестирование конечно же покажет что всё исполнилось. Но нам это не интересно :)
2. Скорее всего, пока не исполнится весь объем заявки ни тейк ни стопы не выставятся.
3. Интересно ещё и то, что при этом показывает CurrentPosition(). Надеюсь, что там не 0 при частичном исполнении, иначе это может быть проблемой для стратегий с проверкой текущей позиции в условиях для выхода из позиций (взятие тейка или переворот).

Надеюсь, Дмитрий (oxi) прокомментирует вопросы.

Re: Частичное исполнение заявки

Добавлено: 12 апр 2018, 10:55
nordseven
Будем надеяться... не хочется словить такую ситуацию и не быть к этому готовым.
Стоп наверняка выставляется после исполнения всей заявки иначе бы ему приходилось каждый раз перевыставляться в соответствии с CurrentPosition. Хотя конечно и такое может быть.
Ещё интересен момент когда частично закрываешь позицию стоп нужно перевыставлять на меньший объём?

Re: Частичное исполнение заявки

Добавлено: 12 апр 2018, 11:54
oxi
1. Если заявка на покупку EnterLong(5) исполняется частично к примеру 3 контракта, как поведет себя НЕ исполненная часть заявки?
Будет дальше висеть пока не сниму ручками? А если ручками сниму отменится заявка на 5 контрактов или на 2 не купленных?


Ответ: заявка будет висеть с остатком Buy (2) пока не исполнится полностью или не поступит другой сигнал, который снимет все предыдущие активные заявки. Позиция будет закрыта на исполненный объем = 3
PS: Если задаете конкретное кол-во в EnterLong(5) необходимо задавать жесткие условия на вход = пересечение линий.

2. Что в случае вопроса №1 сделает StopLoss заявка?
Выставится на количество купленных контрактов или будет ждать пока не будут куплены оставшиеся контракты и уже потом выставится?
Если я ручками через CancelActiveOrders(true) заявку на не купленные контракты снимаю, StopLoss выставится автоматически или нужно будет самому ставить?
3. Что в случае вопроса №1 сделает "StopLoss+TakeProfit" заявка?
Судя по тому что одновременно может стоять только две заявки, то из-за частично исполненной заявки на покупку, заявка Take-Profit не выставится... Выставится ли заявка TakeProfit автоматически, если я опять же сниму заявку на не купленные контракты?


Ответ: Stop выставляется в момент после того, как исполнится EnterLong на полный объем или придет новый сигнал с отменой активных заявок (например, еще раз войти).

Активная очередь выглядит так:
EnterLong()
StopLoss() - стоп ждет исполнения или отмены EnterLong новым сигналом

Re: Частичное исполнение заявки

Добавлено: 12 апр 2018, 12:21
evge
Что будет показывать CurrentPosition() если заявка выполнена частично?

Re: Частичное исполнение заявки

Добавлено: 12 апр 2018, 12:35
nordseven
Позиция будет закрыта на исполненный объем = 3


В этом месте не понятно. Закрыта в смысле заявка исполнена на 3 контракта? Я буду в лонге +3?

Re: Частичное исполнение заявки

Добавлено: 12 апр 2018, 13:17
oxi
В этом месте не понятно. Закрыта в смысле заявка исполнена на 3 контракта? Я буду в лонге +3?


Если последует команда CloseLong или EnterShort, то открытая позиция будет закрыта на 3 контракта (т.е. на реально исполненную величину)

Re: Частичное исполнение заявки

Добавлено: 12 апр 2018, 13:18
oxi
Что будет показывать CurrentPosition() если заявка выполнена частично?


CurrentPosition обновляется по приходу сделок по заявке

Re: Частичное исполнение заявки

Добавлено: 13 апр 2018, 10:44
nordseven
Вчера начал проверять частичное закрытие сделок. После выполнения CloseShort(1) закрывает один контракт но StopLoss остается на прежнее количество контрактов. Стоплос нужно самому перевыставлять после исполнения CloseShort(1).
И тут два варианта:
1. сразу ставить новый стоп не дожидаясь исполнения
2. ждать onUpdate() чтобы убедиться, что CloseShort(1) исполнился. Но у меня 5мин тайм фрейм и это капец сколько времени. (Вот здесь кстати тоже секундный таймфрейм был бы кстати).

Re: Частичное исполнение заявки

Добавлено: 13 апр 2018, 12:12
Владимир
Добрый день в ответ на Ваш вопрос выкладываю скрин с торгующего робота на реальный счёт. Внимательней смотрите название роботов groal_sma_V2.3.2 это советник , а groal_sma_V2.3.3 этот робот торговал на реальные деньги. Маркет заявка EnterLong() или EnterShort(), но на скринах видно, что робот считает число открытых позиций.